OVH Cloud OVH Cloud

doublons

2 réponses
Avatar
lolo
Bonjour =E0 tous

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+

2 réponses

Avatar
michdenis
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" 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+
Avatar
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+