comparer 2 colonnes

xpxpplus

XLDnaute Junior
bonjour a vous tous

j'ai fichier excel et en page 1 avec 15 colonnes et 600 lignes actuellement
je dois rajouter les nouveaux éléments qui proviennent d'un extract
que je met en attente page 2, également 15 colonnes mais 550 lignes
ainsi, comment faire :
une comparaison de la page 2 et de la page 1 au départ de chaque cellule de la colonne A

Ainsi, reprendre chaque lignes inexistantes de la page 2 et les placer a la fin de la page 1
laisser les lignes de la page 1 qui ne seraient plus dans la page 2, les gardés et placer dans la colonne "OLD" le mot "ancien' pour chaque lignes qui ne seraient plus dans dans la page 2.

comment faire ?
Pouvez-vous m'aider
en copie le fichier excel

En vous remerciant

Marcmarc
 

Pièces jointes

  • test_comparaison.xls
    45 KB · Affichages: 84

vgendron

XLDnaute Barbatruc
Re : comparer 2 colonnes

Salut,

Suis pas sur d'avoir tout compris, mais l'utilisation des dictionnaires me semble idéale
tu créés un dico "Page1" avec pour clé, les valeurs de la colonne A (référence) de la feuille "Page1"
un autre dico Page2, avec pour clé, les valeurs de la colonne A (référence) mais de la feuille "Page2"
et tu fais deux comparaisons:
pour chaque élément du dico Page2, si la clé n'existe pas dans le dico Page1, tu l'ajoutes
pour chaque élément du dico Page1, si la clé n'existe pas dans le dico Page2, tu marques "old"

je dis utilisation idéale car:
1) très rapide
2) pas besoin de faire des boucles et des boucles sur chaque cellule de la colonne
 

vgendron

XLDnaute Barbatruc
Re : comparer 2 colonnes

Salut,
voici un essai..
je préviens de suite.. ca ne marche pas comme je voudrais..
les tests d'existence ne fonctionnent pas; et je ne comprend pas.. pas encore. parce qu'il me semble avoir déjà utilisé ca quelque part..
du coup, il ne voit pas quels éléments de la page 1 sont encore sur la page 2
et il ne voit pas quels éléments de la page 2 existent déjà en page 1
en clair, tous les éléments de la page 1 sont considérés comme supprimés
et tous les éléments de la page2 sont considérés comme nouveaux..

mais bon. en attendant, tu peux regarder.
 

Pièces jointes

  • Xpxplus test_comparaison.xls
    79 KB · Affichages: 68
  • Xpxplus test_comparaison.xls
    79 KB · Affichages: 71
  • Xpxplus test_comparaison.xls
    79 KB · Affichages: 75

xpxpplus

XLDnaute Junior
Re : comparer 2 colonnes

merci de ton aide,

au vu du fichier renvoyé , c'est vraiment top
mais lorsqu'il y a un identique, il les rajoutent aussi, donc
donc, serait il possible encore d'amélioré ?

si dans la nouvelle liste de la page 2 par rapport a la page 1 :
1/il voit les mêmes ligne, les gardés et mettre "identique" dans la page 1
2/il ne voit plus les anciennes lignes, les gardés, mettre "old" dans la page 1
3/ il voit les nouvelles lignes, les mettre en fin de liste, mettre "new" dans la page 1

est il possible encore de m'aider sur ce post

en te remerciant

Marcmarc
 
Dernière édition:

vgendron

XLDnaute Barbatruc
Re : comparer 2 colonnes

suis toujours en train de chercher.. mais bon..on peut certes améliorer en rajouttant le point 1
de ton coté. est ce que ca fonctionne correctement? (pour le savoir. lance deux fois la macro de suite.. et s'il te remet une seconde fois ses lignes de la page 2... c'est pas bon
normalement. tu dois activer la référence microsoft scripting runtime..
pour le faire: ouvir l'éditeur vba (Alt+F11) / Outils / Reference / cocher la référence microsoft scripting runtime
 

xpxpplus

XLDnaute Junior
Re : comparer 2 colonnes

Voici j'ai place la référence, même en exécutant 2 x de suite toujours pas le résultat voulu?
mais lorsqu'il y a un identique, il les rajoutent aussi, donc


si dans la nouvelle liste de la page 2 par rapport a la page 1 :
1/il voit les mêmes ligne, les gardés et mettre "identique" dans la page 1
2/il ne voit plus les anciennes lignes, les gardés, mettre "old" dans la page 1
3/ il voit les nouvelles lignes, les mettre en fin de liste, mettre "new" dans la page 1

est il possible encore de m'aider sur ce post

Marcmarc
 

vgendron

XLDnaute Barbatruc
Re : comparer 2 colonnes

pour les points 2 et 3, normalement la macro les gere.. sauf qu'il y a une instruction qui ne renvoie jamais le résultat attendu
la fameuse méthode "exists"
donc tant que je n'aurai pas résolu le pb de référence, ca ne donnera jamais le résultat escompté
 

MichD

XLDnaute Impliqué
Re : comparer 2 colonnes

Bonjour,

"Dictionary" appartient à la bibliothèque "Scripting" et si tu
veux ajouter la référence à partir de la barre des menus /
Outils / références / coches ceci :
"Microsoft Scripting Runtime"


Il n'est pas obligatoire de la déclarer. Voici un exemple
avec ou sans.

La bibliothèque non déclarer :
'-----------------------------------------------
VB:
Sub test()
Dim Dic As Object, C As Range

Set Dic = CreateObject("Scripting.Dictionary")

For Each C In Range("A1:A10")
    If C <> "" Then
        If Not Dic.exists(C.Value) Then
            Dic.Add C.Value, C.Address
        End If
    End If
Next
End Sub



La bibliothèque non déclarer :
'-----------------------------------------------
VB:
Sub test2()
Dim Dic As Dictionary, C As Range

Set Dic = CreateObject("Scripting.Dictionary")

For Each C In Range("A1:A10")
    If C <> "" Then
        If Not Dic.exists(C.Value) Then
            Dic.Add C.Value, C.Address
        End If
    End If
Next
End Sub
'-----------------------------------------------
 

vgendron

XLDnaute Barbatruc
Re : comparer 2 colonnes

Salut MichD,

en fait. je ne comprends toujours pas ce qui cloche..
j'ai bien mes deux dicos avec chacun leurs clés et éléments.
(pour m'en assurer, j'ai utilisé une feuille 3 pour écrire leur contenu)
maintenant.. je ne comprend pas pourquoi, je n'arrive pas à parcourir les clés du dico2 et vérifier si elles existent aussi dans le dico1..
 

vgendron

XLDnaute Barbatruc
Re : comparer 2 colonnes

Bon. ca y est enfin. je m'en suis sorti..
suis pas encore bien sur d'avoir compris, mais ca marche

à tester
une version XL2003
et une XL2007
 

Pièces jointes

  • Xpxplus test_comparaison.xlsm
    34.5 KB · Affichages: 47
  • Xpxplus test_comparaison.xls
    93 KB · Affichages: 55
  • Xpxplus test_comparaison.xls
    93 KB · Affichages: 58
  • Xpxplus test_comparaison.xls
    93 KB · Affichages: 56

MichD

XLDnaute Impliqué
Re : comparer 2 colonnes

Bonjour,

Un exemple complet de code avec l'objet "Dictionary" et la référence
"Microsoft Scripting Runtime" ajoutée au projet VBA

VB:
Sub test()
Dim Dic As dictionary, C As Range
Dim Dic1 As dictionary, Q
Dim Dic2 As dictionary
Dim A As Long, K As Long

Application.ScreenUpdating = False
Application.EnableEvents = False

Set Dic = CreateObject("Scripting.Dictionary")
Set Dic1 = CreateObject("Scripting.Dictionary")
Set Dic2 = CreateObject("Scripting.Dictionary")

For Each C In Range("A1:A10")
     If C <> "" Then
         If Not Dic.exists(C.Value) Then
             Dic.Add (C.Value), C.Address
         End If
     End If
Next

For Each C In Range("B1:B10")
     If C <> "" Then
         If Not Dic1.exists(C.Value) Then
             Dic1.Add (C.Value), C.Address
         End If
     End If
Next
For A = 0 To Dic.Count - 1
    Q = Dic.Keys(A)
    If Not Dic1.exists(Q) Then
        K = K + 1
        Dic2.Add Q, K
    End If
Next
For A = 0 To Dic1.Count - 1
    Q = Dic1.Keys(A)
    If Not Dic.exists(Q) Then
        K = K + 1
        Dic2.Add Q, K
    End If
Next
Range("G1").Resize(K) = Application.Transpose(Dic2.Keys)
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
 

xpxpplus

XLDnaute Junior
Re : comparer 2 colonnes

merci a vous tous ,
je n'y serais jamais arrivé, mais vraiment pas.
c'est vraiment cool de l'aide que vous apporté au novice comme moi

dans le fichier reçu, toute la ligne ne viens pas , il n'y a que la colonne A , ce qui est juste , mais , j'ai besoin également des informations qui se trouve sur la même ligne de la colonne B à la colonne N
ainsi dès qu'une cellule dela colonne A change , les infos de B à N suivent également la ligne .
Alors ce sera super correct
Moi qui n'ai pas tout compris dans la programmation, pouvez-vous encore m'aider sur ce sujet.
En vous remerciant encore sur l'évolution de mon fichier

Marcmarc
 

Discussions similaires

Réponses
7
Affichages
261
Réponses
1
Affichages
207

Statistiques des forums

Discussions
312 393
Messages
2 088 007
Membres
103 698
dernier inscrit
Guillaume MPOYI