Doublons

lolo_bob2

XLDnaute Junior
Bonjour à tous,

Voila j'ai un code VBA qui permet d'envoyer des données d'excel vers une table access.
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, je pense que c parcequ'il touve des doublons !

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 
            !sap = Sh.Cells(r.Row, 1) 
            !nom = Sh.Cells(r.Row, 2) 
            !prenom = Sh.Cells(r.Row, 3) 
            .Update 
        End With 
    Next 
End With 
Set MyDB = Nothing: Set MyTable = Nothing: Set Sh = Nothing 

End Sub

Le second code amélioré avec une conditionnelle :


Code:
Sub AjouterDesEnregistrementsAUneTable() 

Dim test As Byte 
Dim rs As Recordset 
Dim MyDB As Database, MyTable As Recordset, Sh As Worksheet 
test = 0 

Set MyDB = OpenDatabase('S:\\Qualité\\BDD Qualité\\BDD Qualité.mdb') 
Set MyTable = MyDB.OpenRecordset('produits') 
Set Sh = Worksheets('Feuil1') 

Set rs = 'Select distinct sap from produits' 

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 

End Sub

j'ai une erreur qui me dit 'erreur de compilation incompatibilité de type'
je pense qu'il y a un probleme dans le code mais je sais pas ou car il me grise la ligne select ..from... et apres il me met en jaune 'Sub AjouterDesEnregistrementsAUneTable()'
Pouvez vous m'aider

Merci beaucoup

A+
 

ninou58

XLDnaute Occasionnel
Bonjour,

A mon avis le distinct ne passe pas ici.
Pourquoi ne supprime tu pas toute les infos, pour tout réinsérer?
Oui ça prend surement plus de temps, mais au moins t'es sur de pas avoir d'erreur.
Pour ce qui est du reste , je ne pense pas ca fonctionne comme access (recordset...) enfin je sais pas, moi je le fais de excel à SQL server.

Bon courage
 

lolo_bob2

XLDnaute Junior
Merci pour ta réponse

En fait je peux pas supprimer toutes les infos car je fais des extractions de SAP vers excel, après je lance ma macro: les produits sont envoyés dans la table de la base access.
Ensuite chaque produit est testé est une date de test lui est affecté et après je génére un graphique (indicateur) ...
Comme je veux un historique je peux pas les éffacé..
c'est pourquoi il faut que je trouve vraiment la solutions pour éviter les doublons...

Merci beaucoup

A+
 

Discussions similaires