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

Macros et VBA Excel Discussion :

[VBA-E]Probleme de doublons


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club Avatar de lolo_bob2
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 195
    Points : 56
    Points
    56
    Par défaut [VBA-E]Probleme de doublons
    Salut à 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 !

    voici le code que puis je faire pour que mon problème ne persiste plus ?

    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
    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
    je vous remercie beaucoup
    A+

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Points : 448
    Points
    448
    Par défaut
    Hophop,

    j'ai pas de code à te proposer mais une petite idée (j'espere ne pas me tromper )

    Alors tu devrais d'abord comparer chaque ligne excel que tu veux ajouter (enfin la celulle qui contient la clé primaire) à toutes les clé primaires de ta table existante et si elle ne s'y trouve pas alors tu l'ajoute, je vois pas d'autre solution (et je pense que ca sera simple à tester pour toi, y'a juste à ajouter une conditionelle dans ta boucle )

  3. #3
    Membre du Club Avatar de lolo_bob2
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 195
    Points : 56
    Points
    56
    Par défaut
    Merci beaucoup

    le problème c'est qu'en Visual Basic je connais rien...
    Je pense que la conditionnel c'est avec un if...then...else...
    Je ne sais pas du tout écrire de code ! Tu me dis qu'il faut que je l'insere dans ma boucle for c'est bien ça ?

    merci beaucoup de m'aider !

    A+

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Points : 448
    Points
    448
    Par défaut
    Oui c'est bien ca la conditionnelle
    et il faut bien la placer dans la boucle for

    en fait tu dois faire ca dans ta boucle for :
    (on dira que c'est SAP t'a clé primaire)

    faut prendre toutes tes valeurs de sap dans un recordset (rs)
    (le code c'est surement pas bon , si tu bloque vraiment j'essayerai de rechercher)

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

    Voilà t'etonne pas si ca marche pas direct mais l'idée est là

  5. #5
    Membre du Club Avatar de lolo_bob2
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 195
    Points : 56
    Points
    56
    Par défaut
    Salut c'est encore moi

    voici le code que j'ai mis

    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
    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 met "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+

  6. #6
    Invité
    Invité(e)
    Par défaut
    Salut,

    Va voir les tutos sur DAO, tu as des problèmes de syntaxe, notamment sur le set rs.

    Starec

  7. #7
    Membre du Club Avatar de lolo_bob2
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 195
    Points : 56
    Points
    56
    Par défaut
    ok merci du conseil

    meme apres les tuto je vois pas ce qu'il ne vas pas !

    je suis désolé mais je débute et la programmation je galere un peu !

    pouvez vous m'aider ?

    merci bcp

    A+

Discussions similaires

  1. [VBA-E] Probleme supression de la virgule
    Par Flyin_arno dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 26/07/2005, 16h22
  2. [VBA-E] problème avec le sendkeys
    Par darkpocket dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 23/02/2005, 15h25
  3. Problème de doublon
    Par Oberown dans le forum Schéma
    Réponses: 1
    Dernier message: 09/09/2004, 17h06
  4. Probleme de doublons...
    Par kv000 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 18/08/2004, 11h25
  5. [VBA-E] Reconnaissance de doublons
    Par eilonwy dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 18/02/2004, 00h08

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