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 :

comparer deux colonnes


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Inscrit en
    Septembre 2008
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 23
    Points : 11
    Points
    11
    Par défaut comparer deux colonnes
    Bonjour
    Je dois comparer les références dans deux colonnes (1 et 2).
    Pour le faire j'ai du mettre sous la meme forme les références de ces colonnes (création de colonnes intermédiaires : colonnes 9-10-11).
    Puis à l'aide de pointeurs j'ai comparer les référence une à une afin de former 3 nouvelles colonnes dont une regroupant les références se trouvant dans les deux colonnes (colonnes 4-5-6)

    J' ai malheureusement un bug lorsque je compile au niveau de la ligne indiquée. Je ne vois pas mon erreur et je compte sur vos yeux avertis


    Je vous remercie d'avance pour votre aide.




    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
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    Sub Compare()
     
       'Définit les 3 variables dont on a besoin
       Dim EnrCol1(65000) As String
       Dim EnrCol2(65000) As String
       Dim Ligne As Integer
       Dim papa As String, maman As String
       Dim li As Long
       Dim a As Long
       Dim b As Long
       Dim Pointeur3 As Long
       Dim Pointeur4 As Long
       Dim Pointeur5 As Long
       Dim Correspondance As Boolean
     
       'Définit le nombre de lignes actives dans les listes
     
       Ligne = ActiveSheet.UsedRange.Rows.Count
     
       For i = 1 To Ligne
     
           'Crée une variable texte sans espace pour chaque colonne à comparer
           papa = Replace(Cells(i, 1), " ", "")
           maman = Replace(Cells(i, 2), " ", "")
     
     
           'Ecrit les valeurs dans les nouvelles colonnes
           Cells(i, 9) = papa
           Cells(i, 10) = maman
     
            SLB2 = Replace(Cells(i, 10), "/", "")
            Cells(i, 11) = papa2
     
           'Compare si les colonnes 1 et 2 sont différentes, et les copie dans une 3e colonne
     
       'on met en mémoire les données de la colonne 9
        a = 1
        li = 1
        Do Until li > Ligne
         If Cells(li, 9).Value <> "" Then
           EnrCol1(a) = Trim(Cells(li, 9).Value)
           a = a + 1
        End If
       li = li + 1
    Loop
     
    'on met en mémoire les données de la colonne 11
    a = 1
    li = 1
    Do Until li > Ligne
       If Cells(li, 11).Value <> "" Then
           EnrCol2(a) = Trim(Cells(li, 11).Value)
           a = a + 1
       End If
       li = li + 1
    Loop
     
       Next
     
       'on vérifie maintenant si les données de la colonne 1 sont dans la colonne 2
    a = 1
    Do Until a > Ligne
       Correspondance = False
       For b = 1 To Ligne
           If UCase(EnrCol1(a)) = UCase(EnrCol2(b)) Then
               Cells(Pointeur3, 6) = EnrCol1(a) 's'il y a correspondance ont met l'entrée dans la colonne 6
               Pointeur3 = Pointeur3 + 1
               Correspondance = True
               b = Ligne
           End If
       Next b
     
       If Correspondance = False Then
    '########## ERREUR SUR LA LIGNE CI-DESSOUS ##########
        Cells(Pointeur4, 4) = EnrCol1(a) 's'il n'y a pas correspondance on met les données dans la colonne 4
           Pointeur4 = Pointeur4 + 1
       End If
       a = a + 1
    Loop
     
     
    'on vérifie maintenant si les données de la colonne 2 sont dans la colonne 1
    a = 1
    Do Until a > Ligne
       Correspondance = False
       For b = 1 To Ligne
           If UCase(EnrCol2(a)) = UCase(EnrCol1(b)) Then
               Correspondance = True
               b = Ligne
           End If
       Next b
     
       If Correspondance = False Then
           Cells(Pointeur5, 5) = EnrCol2(a) 's'il n'y a pas correspondance on met les données dans la colonne 5
           Pointeur5 = Pointeur5 + 1
       End If
       a = a + 1
    Loop
     
       'Mets en forme les colonnes
       Cells(1, 6) = "papa&maman"
       Cells(1, 5) = "papa"
       Cells(1, 4) = "maman"
       Cells(1, 9) = "int_papa"
       Cells(1, 10) = "int_maman"
       Cells(1, 11) = "int_maman2"
     
       For i = 1 To 11
           Columns(i).AutoFit
       Next
    End Sub

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 753
    Points : 855
    Points
    855
    Par défaut
    Tu n'as pas initialisé tes variables Pointeur1,Pointeur2, etc...

    Cela provoque-t-il toujorus une erreur si tu initialises?

    PS: je suis surpris que ton code ne plante pas avant en plus, à cause de Pointeur3.

  3. #3
    Membre à l'essai
    Inscrit en
    Septembre 2008
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 23
    Points : 11
    Points
    11
    Par défaut
    J'ai initialisé malheureusement cela ne change rien.
    Eh oui cela m'a aussi surpris que ca ne bugge pas avant.
    Merci quand même pour ton aide

  4. #4
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Cells(Pointeur4, 4) = EnrCol1(a) 's'il n'y a pas correspondance on met les données dans la colonne 4
           Pointeur4 = Pointeur4 + 1
    quel est la valeur de pointeur4

  5. #5
    Membre éprouvé
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Points : 1 191
    Points
    1 191
    Par défaut
    Citation Envoyé par dumor Voir le message
    ...J' ai malheureusement un bug lorsque je compile ..
    de qu'elle couleur le bug ? combien de pattes ?




    ? une message ?

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 753
    Points : 855
    Points
    855
    Par défaut
    Tu les as initialisé comment tes variables Pointeur?

    Et aussi, à tout hasard, mets ça à la place de ta ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(Pointeur4, 4).Value = EnrCol1(a)
    Il se peut que tu aies une erreur au niveau de l'interprétation du code. En effet, il se peut que dans ce que tu as écrit VBA considère EnrCol1(a) comme étant un objet que tu affectes à une référence Cells, et n'ayant pas trouvé de Set il affiche une erreur.

  7. #7
    Membre à l'essai
    Inscrit en
    Septembre 2008
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 23
    Points : 11
    Points
    11
    Par défaut
    J'ai initialiser les pointeur en remplaceant pointeur 3 4et 5 par pointeur 1 2 et 3. Bon ca peut paraitre un peu bete mais ce soir la je n'etais pa très inspiré. Si vous avez d'autres idées n'hésitez pas à me les communiquer.
    J'ai esayé en remplacant par la phrase proposée mais il n'y a pas d'effet: tjs un bug dont je ne sais pas la couleur

  8. #8
    Membre éprouvé
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Points : 1 191
    Points
    1 191
    Par défaut
    Citation Envoyé par dumor Voir le message
    .. tjs un bug dont je ne sais pas la couleur
    Et il se manifeste comment ton bug ? en brandissant une plancarte avec un message ? si oui lit nous le message !

Discussions similaires

  1. [XL-2007] Comparer deux colonnes et retourner le résultat d'une troisième
    Par Ledobs dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 18/04/2018, 21h21
  2. Comparer deux colonnes
    Par gandalfthegrey dans le forum Excel
    Réponses: 6
    Dernier message: 30/01/2008, 11h57
  3. Comparer deux colonnes d'une même table
    Par snoopy69 dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 08/01/2008, 10h05
  4. Comparer deux colonnes adjacentes une à une sur mon tableau?
    Par drthodt dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 06/12/2007, 10h11
  5. comparer deux colonnes sur Excel
    Par delamarque dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 21/12/2005, 10h50

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