IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Excel Discussion :

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


Sujet :

Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Auditeur et contrôleur de gestion
    Inscrit en
    Mars 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Auditeur et contrôleur de gestion
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2012
    Messages : 8
    Points : 7
    Points
    7
    Par défaut Transfert de données Excel vers access création de Doublons
    Bonjour à tous!

    Toutes mes excuses si le cas ait déjà été traité, je vous avoue que google ne m'a pas servi grand-chose sur mon problème.

    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 car il est très lourd. Voici mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    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?

    Sinon à force de me creuser les méninges en lisant des fichiers pdf sur ADO 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Dim cnE As ADODB.Connection, rsE As ADODB.Recordset, chemin2 As Variant, source2 As Variant 
        chemin2 = ActiveWorkbook.Path
        source2 = "C:\GMAA" & "\JMFJCA1.mdb"
        Set cnE = New ADODB.Connection
        cnE.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & source2 & ";"      
        ' 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 avant envoi dans ma base.

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

    Merci d'avance.

  2. #2
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Bonjour,

    Un méthode serait de mettre un "flag" sur les enregistrements déja transférés.
    Ajoute une colonne dans excel qui contiendra un X quand la ligne a été transférée dans Access.
    Il te suffira ensuite de ne pas transférer les lignes avec ce X

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Auditeur et contrôleur de gestion
    Inscrit en
    Mars 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Auditeur et contrôleur de gestion
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2012
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    Merci pour cette rapide jfontaine.

    Il me semble comprendre le principe.
    Mais n'ayant pas une grande notion en VBA, je me demande comment y procéder?
    juste un exemple si possible pour ainsi l'adapter à mon cas.

Discussions similaires

  1. Transfert de données EXCEL Vers Access
    Par Mon_ami dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 29/12/2010, 18h57
  2. Transfert de données Excel vers une base de données Access
    Par amirking dans le forum Bases de données
    Réponses: 5
    Dernier message: 19/09/2008, 12h08
  3. Exportation de données Excel vers Access
    Par jmh51 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 29/11/2007, 18h16
  4. Transfert de données excel vers access
    Par Isabelle27 dans le forum Access
    Réponses: 3
    Dernier message: 22/03/2007, 07h11
  5. transférer donnée excel vers access
    Par tomas dans le forum Access
    Réponses: 2
    Dernier message: 13/12/2006, 08h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo