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.
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.
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.