Comparer deux colonnes sur excel [Résolu/Fermé]

Signaler
-
 Sophie -
Bonjour,

Je dois comparer deux séries de données sur un fichier excel.

Sur la première feuille, dans la colonne A, j'ai inscrit la première série.
Sur la deuxième feuille, dans la colonne A, la deuxième série.
J'ai 41 lignes de plus sur la feuille 2.
J'aimerais isoler ces 41 numéros en plus, mais je ne vois pas comment faire.

Quelqu'un aurait une solution à me proposer?

Merci d'avance

5 réponses

Messages postés
1561
Date d'inscription
jeudi 19 juillet 2007
Statut
Membre
Dernière intervention
30 avril 2019
256
tu pourrais poster sur https://www.fichier-xls.fr/ par exemple ton fichier excel et me donner le lien parce que je comprends pas tout là
Messages postés
12186
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
15 octobre 2020
2 499
Bonjour,
Une solution par macro vous conviendrait?
@ Pijaku : je n'ai jamais fait de macro, mais je peux toujours tenter.

@ Doudou95 : ce sont des séries de 9 chiffres présentés sous cette forme : 111111111.
Messages postés
12186
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
15 octobre 2020
2 499
Si tu veux une solution par macro :
1- ouvre le classeur excel concerné,
2- tape : ALT+F11
3- sous VBe (ainsi ouvert) fait : Insertion/Module
4- Copier/Coller le code en entier dans ce module :
Sub ExtractionsDifferencesEntreColonnesAdesDeuxFeuilles() 
Dim Tabl1(), Tabl2() 
Dim MonDico1 As Object, MonDico2 As Object 
Dim c 
Dim Sh1 As Worksheet, Sh2 As Worksheet, Sh3 As Worksheet 
Dim DrLig As Long 

Set Sh1 = Sheets("Feuil1") 
With Sh1 
    DrLig = .Range("A" & Rows.Count).End(xlUp).Row 
    Tabl1 = .Range("A1:A" & DrLig) 
End With 
Set MonDico1 = CreateObject("Scripting.Dictionary") 
For Each c In Tabl1 
    MonDico1(c) = "" 
Next c 

Set Sh2 = Sheets("Feuil2") 
With Sh2 
    DrLig = .Range("A" & Rows.Count).End(xlUp).Row 
    Tabl2 = .Range("A1:A" & DrLig) 
End With 
Set MonDico2 = CreateObject("Scripting.Dictionary") 
For Each c In Tabl2 
    If Not MonDico1.exists(c) Then MonDico2(c) = "" 
Next c 

Set Sh3 = Sheets("Feuil3") 
With Sh3 
    DrLig = .Range("A" & Rows.Count).End(xlUp).Row 
    .Range("A1:A" & DrLig).Clear 
    .Range("A1").Resize(MonDico2.Count, 1) = Application.Transpose(MonDico2.keys) 
End With 
End Sub

---------!! Les adaptations possibles -------------------
5- remplace dans ce code, le nom des feuilles par les noms de tes feuilles en laissant les guillemets. J'ai fait en sorte que cela fonctionne si ta colonne A en Feuil2 contient plus de données que la colonne A en Feuil1...
5 bis- la feuille notée "Feuil3" dans le code est la feuille de restitution. La macro fait la différence entre la colA feuil1 et la ColA Feuil2, et vient coller la liste des différences en Feuil3.
------------Fin des adaptations---------------------------
6- Ferme VBE
7- !!! Enregistre ton classeur Excel sous un autre nom, on ne sait jamais!!!!!
8- Tape ALT+F8, clic sur ExtractionsDifferencesEntreColonnesAdesDeuxFeuilles puis sur Exécuter
9- va voir en Feuil3......

Code basé sur l'exemple de Mr Boisgontier Jacques
Messages postés
23605
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
31 octobre 2020
6 434
Salut pijaku,

Déjà tous mes voeux pour cette nouvelle année :-)
Heuuuu, là c'est pas utiliser un canon pour écraser une mouche ? ;-)

pour le demandeur : fichier exemple par une petite formule : https://forums.commentcamarche.net/forum/affich-24110872-comparer-deux-colonnes-sur-excel#8

eric
Messages postés
1561
Date d'inscription
jeudi 19 juillet 2007
Statut
Membre
Dernière intervention
30 avril 2019
256
si elle fait ça régulièrement faudrait peut être ajouter un bouton sur excel avec appel de la macro complémentaire
Messages postés
12186
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
15 octobre 2020
2 499
@Eriiic, Bonjour et mes meilleurs voeux à toi et tes proches.
Heuuuu, là c'est pas utiliser un canon pour écraser une mouche ? ;-) Belle expression! Je la reprendrait pour utilisation personnelle...
Tu as certainement raison. Mais supposons qu'elle n'est que 42 différences sur 48 000 lignes... De plus, sur les conseils de Michel_m, j'étudie les dictionnary depuis hier, alors étant dans le cambouis, j'en profite!! J'ai bien cherché une matricielle qui regrouperait les données, mais mon mal de crâne m'a empêché de continuer........
L'avantage de cette macro étant de regrouper les différences.

@Doudou95 : Bonne année également.
Pourquoi pas. Cependant, lorsqu'on le connais, ALT-F8 est bien et n'encombre pas les pages avec des boutons...
Messages postés
1561
Date d'inscription
jeudi 19 juillet 2007
Statut
Membre
Dernière intervention
30 avril 2019
256
Bonne année pareillement, et oui pour une petite macro comme ça, il importe peu.
Messages postés
1561
Date d'inscription
jeudi 19 juillet 2007
Statut
Membre
Dernière intervention
30 avril 2019
256
J'ai besoin de voir le fichier pour mieux comprendre.
Le tri en soit n'est pas compliquer que ce soit en macro ou non mais la macro par exemple, le code changera.
Messages postés
23605
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
31 octobre 2020
6 434
Bonjour,

En supposant que tu as une ligne de titre et que tes données commencent en ligne 2, saisir dans Feuil2!B2 :
=NB.SI(Feuil1!A:A;A2)
et recopier vers le bas.

Les valeurs absentes de feuil1 auront 0 en colonne B.
Reste à filtrer sur cette colonne.

eric
Merci. Je viens de tenter, j'ai comme résultat #NOM? sur toutes les lignes.
Messages postés
23605
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
31 octobre 2020
6 434
c'est que tu l'as mal écrite ou tu as un excel pas en français.
pas besoin de macro pour ça...

exemple : https://www.cjoint.com/?BAgnjQHj8bm

eric
C'est bon, merci de votre aide à tous!