Comparaison de liste de nom

LOLUFE

XLDnaute Nouveau
Bonjour à tous et toutes

Je plante vite fait le decors

J'ai une liste de nom "Officielle" ,colonne A ,et une liste de base de donnée Colonne B, je voudrais faire apparaitre dans une autre colonne ( c ?) les nom qui ne figure pas dans la liste officielle , j'ai cherché sur le forum mais je patauge allègrement .

Si quelqu'un d'entre vous pour m'aider et me donner quelque explications serait super

D'avance merci et super forum (un peu hard des fois mais super )
:eek:
 

Pièces jointes

  • comparaison_nom.xls
    15.5 KB · Affichages: 89

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Comparaison de liste de nom

Bonjour,

=INDEX(Liste2;PETITE.VALEUR(SI(ESTNA(EQUIV(SUPPRESPACE(Liste2);Liste1;0));EQUIV(Liste2;Liste2;0);"");LIGNE(INDIRECT("1:"&LIGNES(Liste2)))))
Valider avec Maj+ctrl+entrée

JB
 

Pièces jointes

  • comparaison_nom(1).xls
    28.5 KB · Affichages: 57
  • comparaison_nom(1).xls
    28.5 KB · Affichages: 52
  • comparaison_nom(1).xls
    28.5 KB · Affichages: 52
Dernière édition:

Brigitte

XLDnaute Barbatruc
Re : Comparaison de liste de nom

Bonjour,

Une piste : utiliser MDF Doublons qui permet d'identifier, à l'inverse de ton raisonnement, les doublons et ainsi tu sais ceux qui n'y sont pas, par déduction ?

La voici avec les doublons surlignés grâce à MDF Doublons. Ceux qui sont surlignés en vert dans la liste (de la colonne B que j'ai collés au dessous pour faire la comparaison) sont des doublons par rapport à la liste de la colonne A (ou en double en tout cas), donc les autres, non.

Pour te dépanner en attendant une autre soluce car j'imagine que tu n'as pas à le faire qu'une fois.

Edit : comme j'ai eu des soucis avec xld, je ne pouvais plus poster, le retard fait que tu as la solution de la part de Jacques et abcd, chapeau à eux.
 

Pièces jointes

  • comparaison_nom(1).zip
    2.9 KB · Affichages: 36

suistrop

XLDnaute Impliqué
Re : Comparaison de liste de nom

essai ca !

Sub test()
h = 1
Sheets("Feuil1").Select
For i = 1 To 43
nom = Cells(i, 2)
present = False
For y = 1 To 34
If Cells(y, 1) = nom Then
present = True
End If
Next y
If present = False Then
Cells(h, 3) = nom
h = h + 1
End If
Next i
End Sub

Cordialement !
 

LOLUFE

XLDnaute Nouveau
Re : Comparaison de liste de nom

essai ca !

Sub test()
h = 1
Sheets("Feuil1").Select
For i = 1 To 43
nom = Cells(i, 2)
present = False
For y = 1 To 34
If Cells(y, 1) = nom Then
present = True
End If
Next y
If present = False Then
Cells(h, 3) = nom
h = h + 1
End If
Next i
End Sub

Cordialement !



Merci à tous pour vos piste , sinon comment tester ce que tu me dit plus haut ?

Cdt Philippe
 

suistrop

XLDnaute Impliqué
Re : Comparaison de liste de nom

Salut,
tu fais alt +F11

ca va ouvrir visual basic editeur

ensuite dans ce logiciel tu fais insertions/module
ca va ouvrir une feuille tu copie ce que j ai mis dedans de la ligne "sub ...."
jusqu a "end sub"

ensuite tu appuie sur la fleche play en haut de ce logiciel pour lancer le programme

Par la suite si tu veux lancer le programme tu peux aller dans excel sous
Outils/macro/lancer macro et tu devrais avoir le nom de la macro ici je l ai nommée test

Bon courage :D
 

suistrop

XLDnaute Impliqué
Re : Comparaison de liste de nom

si tu l utilise pour ton fichier en entier il se peux qu il y ai des erreurs....
je vais essayer de t expliquer comment marche le programme !
les ligne avec ' devant sont considéré comme des comentaire donc ca ne perturbe pas le programme !!


Code:
'début du programme test
Sub test()
'h va nous servir a chaque fois qu on a trouver un editeur qui n est pas dans la  colonne officiel on va le marquer et il faudra donc passer a la ligne suivante 
h = 1
'ici on selectionne la feuille excel ou on va utiliser le programme
Sheets("Feuil1").Select
'boucle qui comment a 1 ligne du premier nom de la SECONDE colonne et qui termine a 43 dernier nom de la SECONDE colonne comme tu l as mis dans le fichier que j ai télécharger
For i = 1 To 43
'on récupere le nom dans la colonne 2 est on le met dans la variable nom
nom = Cells(i, 2)
'par défaut on dit qu il est pas présent dans la colonne 1
present = False
'on va vérifier si il est present dans la colonne 1 pour se faire on parcour tout les nom de la ligne 1 a 34 dans ton exemple
For y = 1 To 34
'on va voir si on le trouve
If Cells(y, 1) = nom Then
'si on le trouve alors on dire qu il est present donc present = true
present = True
End If
Next y
'si on l a pas trouver dans la colonne present est tjs faux
If present = False Then
'donc on le note dans la colonne3
'ici on voit bien que le h est utilise pour savoir sur quel ligne ecrire le nom dans la colonne 3
Cells(h, 3) = nom
'on a ecrit le nom il faut donc rajouter 1 a h pou que le prochain nom se fasse sur la ligne suivante
h = h + 1
End If
Next i
'FINI
End Sub
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Comparaison de liste de nom

Avec fonction perso matricielle:


=diff(Liste2;Liste1)

Code:
Function Diff(champ As Range, champ2 As Range)
   Dim temp()
   ReDim temp(1 To champ.Count)
   j = 1
   For i = 1 To champ.Count
      témoin = IsError(Application.Match(Trim(champ(i)), champ2, 0))
      If témoin Then
         temp(j) = champ(i): j = j + 1
      End If
   Next i
   Diff = Application.Transpose(temp)
End Function


JB
 

Pièces jointes

  • comparaison_nom(1).xls
    28.5 KB · Affichages: 126
  • comparaison_nom(1).xls
    28.5 KB · Affichages: 131
  • comparaison_nom(1).xls
    28.5 KB · Affichages: 129
Dernière édition:

suistrop

XLDnaute Impliqué
Re : Comparaison de liste de nom

GROS SOUCIS :
il y a des nom avec des espaces a la fin et d autre sans .....
j ai rajouter la fonction trim() sur la cellule ca enleve les espaces superflu
la ca devrais marcher ...

Code:
'début du programme test
Sub test()
'h va nous servir a chaque fois qu on a trouver un editeur qui n est pas dans la  colonne officiel on va le marquer et il faudra donc passer a la ligne suivante
h = 1
'ici on selectionne la feuille excel ou on va utiliser le programme
Sheets("Feuil1").Select

'boucle qui comment a 1 ligne du premier nom de la SECONDE colonne et qui termine a 43 dernier nom de la SECONDE colonne comme tu l as mis dans le fichier que j ai télécharger
For i = 1 To 43
    'on récupere le nom dans la colonne 2 est on le met dans la variable nom
    nom = Trim(Cells(i, 2))
    'par défaut on dit qu il est pas présent dans la colonne 1
    present = False
    
    'on va vérifier si il est present dans la colonne 1 pour se faire on parcour tout les nom de la ligne 1 a 34 dans ton exemple
    For y = 1 To 34
        'on va voir si on le trouve
        If Trim(Cells(y, 1)) = nom Then
        'si on le trouve alors on dire qu il est present donc present = true
        present = True
        End If
    Next y
    
    'si on l a pas trouver dans la colonne present est tjs faux
    If present = False Then
        'donc on le note dans la colonne3
        'ici on voit bien que le h est utilise pour savoir sur quel ligne ecrire le nom dans la colonne 3
        Cells(h, 3) = nom
        'on a ecrit le nom il faut donc rajouter 1 a h pou que le prochain nom se fasse sur la ligne suivante
        h = h + 1
    End If
    
Next i
'FINI
End Sub
 

Pièces jointes

  • comparaison_nom_et_macro.xls
    28.5 KB · Affichages: 171
  • comparaison_nom_et_macro.xls
    28.5 KB · Affichages: 185
  • comparaison_nom_et_macro.xls
    28.5 KB · Affichages: 189
Dernière édition:

Discussions similaires