voila j'ai une macro qui me permet d'envoyer des donn=E9es excel vers
access mais j'ai un petit soucis...
Cela fonctionne parfaitemement, le seul probl=E8me que je rencontre est
le suivant si j'envoie des donn=E9es lorsque la table est vide il n'y a
pas de probleme cela fonctionne. Si je rajoute une ligne au fichier
excel et que je renvoie les donn=E9es, la nouvelle ligne ne s'inscrit
pas dans la table access (j'ai les autres donn=E9es envoy=E9es la
premi=E8re fois qui sont toujours pr=E9sentes...), je pense que c'est
parcequ'il touve des doublons !
voici le code :
Sub AjouterDesEnregistrementsAUneTable()
Dim MyDB As Database, MyTable As Recordset, Sh As Worksheet
Set MyDB =3D OpenDatabase("S:\Qualit=E9\BDD Qualit=E9\BDD Qualit=E9.mdb")
Set MyTable =3D MyDB.OpenRecordset("produits")
Set Sh =3D Worksheets("Feuil1")
With Sh
For Each r In .Range("A5:C300").Rows
With MyTable
.AddNew
!num=E9ro =3D Sh.Cells(r.Row, 1)
!sap =3D Sh.Cells(r.Row, 2)
!nom =3D Sh.Cells(r.Row, 3)
!prenom =3D Sh.Cells(r.Row, 4)
.Update
End With
Next
End With
Set MyDB =3D Nothing: Set MyTable =3D Nothing: Set Sh =3D Nothing
End Sub
pouvez vous m'aider sur ce sujet ?
Merci beaucoup
A+
Il ne faut pas oublier d'enregistrer ton classeur avant de procéder au lancement de la macro.
Ta procédure utilise le fichier enregistré sur le disque dur, pas celui qui est ouvert à l'écran.
P.S. Habituellement, en cas de doublons... Access crée une "Table erreur" dans laquelle il place les doublons.
Salutations!
"lolo" a écrit dans le message de news: Bonjour à tous
voila j'ai une macro qui me permet d'envoyer des données excel vers access mais j'ai un petit soucis... Cela fonctionne parfaitemement, le seul problème que je rencontre est le suivant si j'envoie des données lorsque la table est vide il n'y a pas de probleme cela fonctionne. Si je rajoute une ligne au fichier excel et que je renvoie les données, la nouvelle ligne ne s'inscrit pas dans la table access (j'ai les autres données envoyées la première fois qui sont toujours présentes...), je pense que c'est parcequ'il touve des doublons ! voici le code :
Sub AjouterDesEnregistrementsAUneTable()
Dim MyDB As Database, MyTable As Recordset, Sh As Worksheet
Set MyDB = OpenDatabase("S:QualitéBDD QualitéBDD Qualité.mdb") Set MyTable = MyDB.OpenRecordset("produits") Set Sh = Worksheets("Feuil1")
With Sh For Each r In .Range("A5:C300").Rows With MyTable .AddNew !numéro = Sh.Cells(r.Row, 1) !sap = Sh.Cells(r.Row, 2) !nom = Sh.Cells(r.Row, 3) !prenom = Sh.Cells(r.Row, 4) .Update End With Next End With Set MyDB = Nothing: Set MyTable = Nothing: Set Sh = Nothing
End Sub
pouvez vous m'aider sur ce sujet ? Merci beaucoup A+
Bonjour Lolo,
Il ne faut pas oublier d'enregistrer ton classeur avant de procéder au lancement de la macro.
Ta procédure utilise le fichier enregistré sur le disque dur, pas celui qui est ouvert à l'écran.
P.S. Habituellement, en cas de doublons... Access crée une "Table erreur" dans laquelle
il place les doublons.
Salutations!
"lolo" <lolo_bob2@yahoo.fr> a écrit dans le message de news: 1144757323.033342.113530@j33g2000cwa.googlegroups.com...
Bonjour à tous
voila j'ai une macro qui me permet d'envoyer des données excel vers
access mais j'ai un petit soucis...
Cela fonctionne parfaitemement, le seul problème que je rencontre est
le suivant si j'envoie des données lorsque la table est vide il n'y a
pas de probleme cela fonctionne. Si je rajoute une ligne au fichier
excel et que je renvoie les données, la nouvelle ligne ne s'inscrit
pas dans la table access (j'ai les autres données envoyées la
première fois qui sont toujours présentes...), je pense que c'est
parcequ'il touve des doublons !
voici le code :
Sub AjouterDesEnregistrementsAUneTable()
Dim MyDB As Database, MyTable As Recordset, Sh As Worksheet
Set MyDB = OpenDatabase("S:QualitéBDD QualitéBDD Qualité.mdb")
Set MyTable = MyDB.OpenRecordset("produits")
Set Sh = Worksheets("Feuil1")
With Sh
For Each r In .Range("A5:C300").Rows
With MyTable
.AddNew
!numéro = Sh.Cells(r.Row, 1)
!sap = Sh.Cells(r.Row, 2)
!nom = Sh.Cells(r.Row, 3)
!prenom = Sh.Cells(r.Row, 4)
.Update
End With
Next
End With
Set MyDB = Nothing: Set MyTable = Nothing: Set Sh = Nothing
End Sub
pouvez vous m'aider sur ce sujet ?
Merci beaucoup
A+
Il ne faut pas oublier d'enregistrer ton classeur avant de procéder au lancement de la macro.
Ta procédure utilise le fichier enregistré sur le disque dur, pas celui qui est ouvert à l'écran.
P.S. Habituellement, en cas de doublons... Access crée une "Table erreur" dans laquelle il place les doublons.
Salutations!
"lolo" a écrit dans le message de news: Bonjour à tous
voila j'ai une macro qui me permet d'envoyer des données excel vers access mais j'ai un petit soucis... Cela fonctionne parfaitemement, le seul problème que je rencontre est le suivant si j'envoie des données lorsque la table est vide il n'y a pas de probleme cela fonctionne. Si je rajoute une ligne au fichier excel et que je renvoie les données, la nouvelle ligne ne s'inscrit pas dans la table access (j'ai les autres données envoyées la première fois qui sont toujours présentes...), je pense que c'est parcequ'il touve des doublons ! voici le code :
Sub AjouterDesEnregistrementsAUneTable()
Dim MyDB As Database, MyTable As Recordset, Sh As Worksheet
Set MyDB = OpenDatabase("S:QualitéBDD QualitéBDD Qualité.mdb") Set MyTable = MyDB.OpenRecordset("produits") Set Sh = Worksheets("Feuil1")
With Sh For Each r In .Range("A5:C300").Rows With MyTable .AddNew !numéro = Sh.Cells(r.Row, 1) !sap = Sh.Cells(r.Row, 2) !nom = Sh.Cells(r.Row, 3) !prenom = Sh.Cells(r.Row, 4) .Update End With Next End With Set MyDB = Nothing: Set MyTable = Nothing: Set Sh = Nothing
End Sub
pouvez vous m'aider sur ce sujet ? Merci beaucoup A+
lolo
Salut michdenis
Voila j'ai fais ca que tu m'as dit mais cela ne fonctionne pas. Je rajoute une ligne dans le fichier excel et j'enregistre apres j'execute la macro mais rien a faire la table ne se remet pas à jour avec le nouveau produit Ne devrais je pas plutôt faire une conditionnel dans ma macro ? comme cela mais je sais pas si c'est bon?
dim test as byte dim rs as recordset test=0 'remet ton code de base set rs = "Select distinct sap from nomdetatable"
For Each r In .Range("A5:C300").Rows
do while (rs.eofúlse and test=0) 'Si la clé de ta ligne à ajouter est deja utilisée alors on stop de comparer if(rs!sap = Sh.Cells(r.Row, 1)) then test =1 loop 'si la clé est non prise alors on ajoute if (test=0) then With MyTable .AddNew !sap = Sh.Cells(r.Row, 1) !nom = Sh.Cells(r.Row, 2) !prenom = Sh.Cells(r.Row, 3) .Update End With end if test=0 next
merci beaucoup A+
Salut michdenis
Voila j'ai fais ca que tu m'as dit mais cela ne fonctionne pas. Je
rajoute une ligne dans le fichier excel et j'enregistre apres j'execute
la macro mais rien a faire la table ne se remet pas à jour avec le
nouveau produit
Ne devrais je pas plutôt faire une conditionnel dans ma macro ?
comme cela mais je sais pas si c'est bon?
dim test as byte
dim rs as recordset
test=0
'remet ton code de base
set rs = "Select distinct sap from nomdetatable"
For Each r In .Range("A5:C300").Rows
do while (rs.eof=false and test=0)
'Si la clé de ta ligne à ajouter est deja utilisée alors on
stop de comparer
if(rs!sap = Sh.Cells(r.Row, 1)) then test =1
loop
'si la clé est non prise alors on ajoute
if (test=0) then
With MyTable
.AddNew
!sap = Sh.Cells(r.Row, 1)
!nom = Sh.Cells(r.Row, 2)
!prenom = Sh.Cells(r.Row, 3)
.Update
End With
end if
test=0
next
Voila j'ai fais ca que tu m'as dit mais cela ne fonctionne pas. Je rajoute une ligne dans le fichier excel et j'enregistre apres j'execute la macro mais rien a faire la table ne se remet pas à jour avec le nouveau produit Ne devrais je pas plutôt faire une conditionnel dans ma macro ? comme cela mais je sais pas si c'est bon?
dim test as byte dim rs as recordset test=0 'remet ton code de base set rs = "Select distinct sap from nomdetatable"
For Each r In .Range("A5:C300").Rows
do while (rs.eofúlse and test=0) 'Si la clé de ta ligne à ajouter est deja utilisée alors on stop de comparer if(rs!sap = Sh.Cells(r.Row, 1)) then test =1 loop 'si la clé est non prise alors on ajoute if (test=0) then With MyTable .AddNew !sap = Sh.Cells(r.Row, 1) !nom = Sh.Cells(r.Row, 2) !prenom = Sh.Cells(r.Row, 3) .Update End With end if test=0 next