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 :

Comparaison de deux colonnes


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti Avatar de casavba
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    455
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 455
    Points : 323
    Points
    323
    Par défaut Comparaison de deux colonnes
    Bonjour à tous et à toutes,

    Quelqu'un parmi vous, sait comment résoudre le petit problème ci-dessous:

    J'ai deux colonnes A et B sur deux feuilles différentes où sont réportoriés des codes clients:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Colonne A               colonne B
     
    V                          X
    W                          Z
    X                          W
    Y                          W
    Z                          D
    ...                        ...
    En fait, ce que je cherche à faire, c'est de comparer les codes de la colonne A (il n'y a pas de doublons dans cette colonne) aux codes de la colonne B (il y'a des doublons) et une fois la comparaison est faite, il me copie dans la colonne A tous les codes existants dans la colonne B et ne figurant pas dans la colonne A.

    Dans mon exemple, j'aurais ces codes dans la colonne A:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Colonne A
     
    V
    W
    X
    Y
    Z
    D
    le code D figure dans la colonne B et ne figure pas dans la colonne A, donc je dois le copier dans la colonne A et ainsi de suite.

    Merci de votre aide.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 491
    Points : 542
    Points
    542
    Par défaut
    bonjour,
    j ai testé avec 2 feuilles , les codes clients etant sur la colonne 1

    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    Option Explicit
    Option Base 1
    Sub comparaison_feuille()
    Dim fl1 As Worksheet
    Dim fl2 As Worksheet
    Dim plage1
    Dim plage2
    Dim i
    Dim j
    Dim c
    Dim tabl()
    Dim rech As Range
    Dim lastcell1
    Dim lastcell2
    Set fl1 = Worksheets(1)
    Set fl2 = Worksheets(2)
     
    With fl1
       lastcell1 = .Cells(65536, 1).End(xlUp).Row
       plage1 = .Range("a1" & ":a" & lastcell1)
    End With
          With fl2
                lastcell2 = .Cells(65536, 1).End(xlUp).Row
                plage2 = .Range("a1" & ":a" & lastcell2)
          End With
     
      For i = 1 To UBound(plage2, 1)
           With fl1.Range("a1" & ":a" & lastcell1)
                Set c = .Find(plage2(i, 1))
                        If c Is Nothing Then
                            j = j + 1
                            ReDim Preserve tabl(j)
                            tabl(j) = plage2(i, 1)
                            Debug.Print tabl(j)
                        End If
          End With
    Next i
     
    'If tabl() Is Nothing Then Exit Sub 'si la liste est identique
    'une erreure est generée
     
    For i = 1 To UBound(tabl())
        fl1.Cells(lastcell1 + i, 1).Value = tabl(i)
    Next i
     
    End Sub
    nota : si les 2 listes sont identiques une erreure est generée

  3. #3
    Membre averti Avatar de casavba
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    455
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 455
    Points : 323
    Points
    323
    Par défaut
    Merci, pour la réponse Patbou.
    ton code, c'est vrai qu'il copie les codes inexistant dans la colonne A, mais le problème c'est qu'il copie aussi les doublons, or ce que je cherche c de copier sans doublons.

    J'essaie d'adapter ton code, je te tiens au courant de l'état d'avancement.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour Casavba,

    Regardez ici (et en particulier le fichier joint par Boisgontier sur sa dernière réponse) :

    http://www.developpez.net/forums/sho...=428702&page=2

  5. #5
    Membre averti Avatar de casavba
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    455
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 455
    Points : 323
    Points
    323
    Par défaut
    En fait, Patbou, j'ai bricolé ta solution en ajoutant une Boucle et ça marche

    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
     
    Option Explicit
    Option Base 1
    Sub comparaison_feuille()
    Dim fl1 As Worksheet
    Dim fl2 As Worksheet
    Dim plage1
    Dim plage2
    Dim i
    Dim j
    Dim c
    Dim tabl()
    Dim rech As Range
    Dim lastcell1
    Dim lastcell2
    Set fl1 = Worksheets(1)
    Set fl2 = Worksheets(2)
     
    With fl1
       lastcell1 = .Cells(65536, 1).End(xlUp).Row
       plage1 = .Range("a1" & ":a" & lastcell1)
    End With
          With fl2
                lastcell2 = .Cells(65536, 1).End(xlUp).Row
                plage2 = .Range("a1" & ":a" & lastcell2)
          End With
     
      For i = 1 To UBound(plage2, 1)
           With fl1.Range("a1" & ":a" & lastcell1)
                Set c = .Find(plage2(i, 1))
                        If c Is Nothing Then
                            j = j + 1
                            ReDim Preserve tabl(j)
                            tabl(j) = plage2(i, 1)
                            Debug.Print tabl(j)
                        End If
          End With
    Next i
     
    'If tabl() Is Nothing Then Exit Sub 'si la liste est identique
    'une erreure est generée
     
    For i = 1 To UBound(tabl())
        fl1.Cells(lastcell1 + i, 1).Value = tabl(i)
    Next i
     
    With fl1
            lastcell3 = .Cells(65536, 1).End(xlUp).Row
    End With
     
    For i = lastcell3 To lastcell3 - UBound(tabl()) Step -1
        For j = lastcell3 To i + 1 Step -1
            If fl1.Range("A" & j).Value = fl1.Range("A" & i).Value Then
                fl1.Range("A" & j).Delete
            End If
        Next j
    Next i
     
    End Sub
    Voilà Merci pour l'aide.

    Mais ne peut-on pas supprimer les doublons du tableau ("tabl") avant de le copier??

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 491
    Points : 542
    Points
    542
    Par défaut
    bonsoir,
    j ai rajouter une suppression doublon dans le tableau (tabl())

    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
     
    Option Explicit
    Option Base 1
    Sub comparaison_feuille()
    Dim fl1 As Worksheet
    Dim fl2 As Worksheet
    Dim plage1, plage2
    Dim i, j, k
    Dim c
    Dim doublon As Boolean
    Dim tabl(), tabl_trier()
    Dim rech As Range
     
    Dim lastcell1
    Dim lastcell2
    Set fl1 = Worksheets(1)
    Set fl2 = Worksheets(2)
     
    With fl1
    lastcell1 = .Cells(65536, 1).End(xlUp).Row
    plage1 = .Range("a1" & ":a" & lastcell1)
    End With
    With fl2
    lastcell2 = .Cells(65536, 1).End(xlUp).Row
    plage2 = .Range("a1" & ":a" & lastcell2)
     
    End With
     
      For i = 1 To UBound(plage2, 1)
         With fl1.Range("a1" & ":a" & lastcell1)
              Set c = .Find(plage2(i, 1))
                        If c Is Nothing Then
                            j = j + 1
                            ReDim Preserve tabl(j)
                            tabl(j) = plage2(i, 1)
                        End If
        End With
    Next i
     
    'recherche des doublons dans le tableau
    For i = 1 To UBound(tabl()) - 1
        doublon = False
        For j = i + 1 To UBound(tabl())      
            If tabl(i) = tabl(j) Then
              doublon = True
            End If
        Next j
                If doublon = False Then
                     k = k + 1
                     ReDim Preserve tabl_trier(k + 1)
                     tabl_trier(k) = tabl(i)
                     tabl_trier(k + 1) = tabl(UBound(tabl()))        
        End If
    Next i
    'If tabl() Is Nothing Then Exit Sub 'si la liste est identique
    'une erreure est generée
    For i = 1 To UBound(tabl_trier())
    fl1.Cells(lastcell1 + i, 1).Value = tabl_trier(i)
    Next i
    End Sub

  7. #7
    Membre averti Avatar de casavba
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    455
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 455
    Points : 323
    Points
    323
    Par défaut
    Thanks Patbou.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comparaison entre deux colonnes
    Par stade13 dans le forum Développement de jobs
    Réponses: 5
    Dernier message: 06/03/2015, 11h07
  2. [Toutes versions] Comparaison de deux colonnes par blocs
    Par Leonard02 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/07/2012, 09h00
  3. [XL-2007] Comparaison sur deux colonnes excel plus traitement
    Par guiltyspark dans le forum Excel
    Réponses: 5
    Dernier message: 04/03/2011, 10h53
  4. [XL-2003] Syntaxe If Then / Comparaison de deux colonnes
    Par ash.wizard dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 10/02/2011, 19h17
  5. [VBA-E] Pb Comparaison De Deux Colonnes Avec Fonction If
    Par gromorice dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 23/03/2007, 05h57

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