Transfert de données Excel vers access création de Doublons

soumilo

XLDnaute Nouveau
Bonjour à tous!

Toutes mes excuses si le cas ait déjà été traité, je vous avoue google ne m'a pas servi.

Je suis nouveau dans le milieu de la programmation et je travaille sur un petit projet. Voilà j'explique mon problème.

J'ai créé un Userform qui contient des TextBox et Une Listview.
Je commence à saisir mes données dans les TextBox, qui sont envoyées dans la Listiview. A l'aide d'un bouton commande le tout est envoyé dans une feuille excel puis transféré dans une base de données access.

Le tout semble fonctionner à mon goût jusqu'après le transfert de données dans access, dont ce dernier à chaque nouvel enregistrement crée des doublons des opérations déjà enregistrées.

Je m'excuse si l'explication n'est pas aussi claire. Je ne pourrai pas poster le fichier qui est très lourd.

Code:
Dim cn As ADODB.Connection, rs As ADODB.Recordset, chemin As Variant, source As Variant 

    chemin = ActiveWorkbook.Path
    source = "C:\GMAA" & "\JMFJCA1.mdb"
    Set cn = New ADODB.Connection
    cn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & source & ";"      
    ' open a recordset
    Set rs = New ADODB.Recordset
    rs.Open "[JOURNAL DE CAISSE 1]", cn, adOpenKeyset, adLockOptimistic, adCmdTable  ' all records in a table
    r = 2 ' the start row in the worksheet
    Do While Len(Range("A" & r).Formula) > 0 ' repeat until first empty cell in column A
        With rs
            .AddNew ' create a new record
            ' add values to each field in the record
            .Fields("N° ECRITURE") = Sheets(21).Range("A" & r).Value
            .Fields("N° LOT") = Sheets(21).Range("B" & r).Value
            .Fields("DATE  ENRG") = Sheets(21).Range("C" & r).Value
            .Fields("DATE  OPER") = Sheets(21).Range("D" & r).Value
            .Fields("DATE VALEUR") = Sheets(21).Range("E" & r).Value
            .Fields("N° PIECE OPER") = Sheets(21).Range("F" & r).Value
            .Fields("CPTE DEBIT") = Sheets(21).Range("G" & r).Value
            .Fields("CPTE CREDIT") = Sheets(21).Range("H" & r).Value
            .Fields("LIBELLE DE L'ECRITURE") = Sheets(21).Range("I" & r).Value
            .Fields("MONTANT DEBIT") = Sheets(21).Range("J" & r).Value
            .Fields("MONTANT CREDIT") = Sheets(21).Range("K" & r).Value
            .Fields("NOUVEAU SOLDE") = Sheets(21).Range("L" & 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



Ma question est Y aurait-il une manière d'éviter les doublons? ou soit lors du transfert dans access que le programme réécrit le contenu de la feuille excel en écrasant les anciennes données dans la base access?

Merci d'avance.
 

soumilo

XLDnaute Nouveau
Re : Transfert de données Excel vers access création de Doublons

A force de me creuser les méninges en lisant des fichiers pdf téléchargés j'ai trouvé une première approche du problème mais un peu dangereuse je le pense.

Il s'agit de réinscrire les données à chaque nouvel enregistrement avec ce code:
Code:
Dim cnE As ADODB.Connection, rsE As ADODB.Recordset, chemin2 As Variant, source2 As Variant ' r As Long
    chemin2 = ActiveWorkbook.Path
    source2 = "C:\GMAA" & "\JMFJCA1.mdb"
    Set cnE = New ADODB.Connection
    cnE.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & source2 & ";"      'C:\GMAA\JMFJCA1.mdb;"
    ' open a recordset
    Set rsE = New ADODB.Recordset
    rsE.Open "[JOURNAL DE CAISSE 1]", cnE, adOpenKeyset, adLockOptimistic, adCmdTable  ' all records in a table
               
    While Not rsE.EOF
            rsE.Delete ' stores the new record
            rsE.MoveNext
    
    Wend
    
    rsE.Close
    Set rsE = Nothing
    cnE.Close
    Set cnE = Nothing

Mais le problème est en cas de plantage de mon programme lors de la validation de données je risquerai peut être de perde les anciennes données.

Si vous voyez d'autres approches, j'attends patiemment votre aide.

Merci d'avance.
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 229
Messages
2 086 425
Membres
103 206
dernier inscrit
diambote