Votre question

[Résolu] MAJ d'une table access par excel en VBA

Tags :
  • Erreur de syntaxe
  • Programmation
Dernière réponse : dans Programmation
8 Février 2011 17:44:37

Bonjour, je vous explique mon pb.
je souhaiterai mettre a jour une table acces à partir de mon fichier excel.
pour le moment en suivant quelque conseils de ce forum j'arrive à écrire dans ma table access mais toujours à la fin de la colonne concernée.
je souhaiterai en effet réécrire sur une valeur déjà existante pour la remplacer par une autre en fonction d'un numéro de dossier.
dans mon fichier excel j'ai une colonne "numéro de dossier" avec laquel je souhaite retrouver ma ligne dans access puis une colonne "Statut" qui me permettrait de definir un état de ce numéro de dossier.
voila le code que j'utilise pour le moment qui me permet d'écrire à la fin de ma colonne:
Citation :
Sub ADOFromExcelToAccess()

Dim cn As ADODB.Connection, rs As ADODB.Recordset, r As Long
Set cn = New ADODB.Connection
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0; " & "Data Source=C:\Tables\Table.mdb;"

Set rs = New ADODB.Recordset
rs.Open "Table1", cn, adOpenKeyset, adLockOptimistic, adCmdTable

r = 3 ' the start row in the worksheet
Do While Len(Range("F" & r).Formula) > 0

With rs
.AddNew
.Fields("Statut") = Range("D" & r).Value
.Update 'stores the new record

End With

r = r + 1 ' next row

Loop

rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
End Sub


j'ai aussi essayé ça:

Dim cd As New ADODB.Command
cd.ActiveConnection = cn
cd.CommandText = "SET 'Table1' SET 'Statut' = " & Range("D" & r).Value & " " & "WHERE 'Num_Client' = " & Range("F" & r).Value & ""

mais finalement je n'arrive pas à le faire appliquer à ma base access
voila merci pour votre aide

Autres pages sur : resolu maj table access excel vba

a c 232 L Programmation
8 Février 2011 19:15:28

Salut,

Pour faire une modification, c'est UPDATE table SET colonne1 = 'valeur1', colonne2 = 'valeur2' ...
m
0
l
9 Février 2011 11:52:53

merci de ta réponse, j'ai adapté en mettant:
cd.CommandText = "UPDATE Table1 SET Statut = " & "Clos" & " WHERE Num_Client = " & "123" & ""
pour faire un test et rien ne se passe ma table ne se met pas à jour :( 
je n'arrive pas à trouver pourquoi ça bloque, si quelqu'un a une idée je suis preneur
merci d'avance

m
0
l
Contenus similaires
a c 145 L Programmation
9 Février 2011 12:13:57

Lorsque tu mets une chaine de caractères dans une table, tu dois la mettre entre quotes ('), sinon la base pense que tu fais réfèrence à un champ de la table.
Tu dois donc faire:
  1. cd.CommandText = "UPDATE Table1 SET Statut = '" & "Clos" & "' WHERE Num_Client = " & "123"


Petit PS: le & "" final ne sert à rien dans tes requêtes :) 
m
0
l
9 Février 2011 12:39:56

j'ai adapté et réduit au max juste histoire de voir si j'arrivais a faire quelque chose dans ma base access et donc ça donne :

  1. Sub ADOFromExcelToAccess()
  2.  
  3. Dim cn As ADODB.Connection, rs As ADODB.Recordset, r As Long
  4. Dim cd As New ADODB.Command
  5. ' connect to the Access database
  6. Set cn = New ADODB.Connection
  7. cn.Open "Provider=Microsoft.Jet.OLEDB.4.0; " & "Data Source=C:\Tables\Enregistrement.mdb;"
  8. ' open a recordset
  9. Set rs = New ADODB.Recordset
  10. rs.Open "Table1", cn, adOpenKeyset, adLockOptimistic, adCmdTable
  11. cd.ActiveConnection = cn
  12.  
  13. cd.CommandText = "UPDATE Table1 SET Statut = '" & "Clos" & "' WHERE Num_Client = " & "123"
  14.  
  15. MsgBox (cd.CommandText) 'debug
  16.  
  17. rs.Close
  18. Set rs = Nothing
  19. cn.Close
  20. Set cn = Nothing
  21. End Sub


et donc il ne se passe toujours rien dans la table :( 
il y a un truc qui m'échappe mais je ne vois pas quoi...
m
0
l
a c 232 L Programmation
9 Février 2011 14:43:18

Tu n'exécutes à aucun endroit la requête...
m
0
l
a c 145 L Programmation
9 Février 2011 14:54:22

Il ne te manque pas un cd.Execute ?

[edit] Grillé :( 
m
0
l
9 Février 2011 15:49:47

oui je l'avais mis puis retiré et pour le coup oublié de remettre lol
je l'ai donc remis et j'ai le droit a une belle erreur:
Erreur d'exécution '-2147217900 (80040e14)':

Erreur de syntaxe dans la chaine dans l'expression 'Num_Client = '123'.

une idée ?
en tout cas merci pour votre aide ça m'aide à avancer :) 
m
0
l
a c 232 L Programmation
9 Février 2011 16:01:04

Essaie:
cd.CommandText = "UPDATE [Table1] SET [Statut] = 'Clos' WHERE [Num_Client] = 123"


Et si ça ne marche pas, vérifie le type de données de Num_Client, pour vérifier que c'est bien un nombre
m
0
l
9 Février 2011 16:21:21

et bien je vous adresse un grand merci mon pb est résolu et ça a bien changé à l'endroit que je voulais dans ma base access :) 
merci pour votre aide et votre disponibilité.
m
0
l
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS