Compraison listes dans excel

lucie -  
ccm81 Messages postés 11033 Statut Membre -
Bonjour,

J'ai un fichier excel dans lequel j'ai deux listes dans deux feuilles différentes. J'aimerais trouver un moyen de sortir automatiquement les noms des personnes présentes dans la feuille 1 et qui n'existe pas dans la seconde. Est-ce possible ?
Merci d'avance

Cdlt
Lucie

A voir également:

3 réponses

Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 447
 
Bonjour
en supposant que votre liste feuille 1 commence en A1:
en colonne B, B1:
=SI(NB.SI(Feuille2!A:A;A1)=0;A1;"")
à tirer sur la hauteur du champ
vous ressortira les nom existants en feuille 1 non présents en feuille 2
à adapter à vos champs
crdlmnt
0
lucie
 
Bonjour,

Oui cela fonctionne mais est ce possible d'obtenir une liste sans les cases vides au milieu (une liste avec tous les noms à la suite)
J'ai essayé en faisant un filtre presonnalisé mais on ne peut pas choisir "non vide". J'ai donc mis différent de 0 et différent de "" mais cela conserve tout de même les cases vides....

Merci
Cdlt
Lucie
0
Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 447
 
Tout dépend de ce que vous voulez:

soit votre édition est statique et une fois établie, ne sera pas modifiée par des évolutions de listes:
dans ce cas, il suffit de construire la liste avec la formule, de faire un copier / Collage spécial :"valeur" pour garder l'édition sans les formules, et de trier la colonne par ordre croissant pour avoir une liste complète sans trou.

ou alors simplement de trier ensemble les colonnes A et B en ordre croissant sur la colonne B

soit vos listes sont évolutives et pour avoir une édition sans trou en continu, vous pouvez procéder comme suit:

vos listes commencent en A2 sur les deux feuilles (pas en A1)
sur feuille 1 dans une colonne hors champ que vous pourrez masquer(colonne X pour l'exeple), entrez cette formule en X2:
=SI(NB.SI(Feuille2!A:A;A1)=0;MAX($X$1:X1)+1;0)
attention, le premier X1 est bloqué, pas le second
tirer cette formule sur la hauteur utile
en B2, placez la formule:
=SI(LIGNE()-1>MAX(X:X);"";INDEX(A:A;EQUIV(LIGNE()-1;0);1))
qui vous éditera la liste sans trou des noms inexistant en feuille 2

ici un petit modèle conforme à cette option pour faciliter la compréhension
http://www.cijoint.fr/cjlink.php?file=cj201105/cijAj9F0ck.xls

crdlmnt
0
ccm81 Messages postés 11033 Statut Membre 2 433
 
bonjour à tous les deux

une option avec macro (altF11 pour acceder à l'editeur puis coller le code)

Option Explicit

Const F1 = "Feuil1"
Const F2 = "Feuil2"
Const lidebF1 = 1
Const coF1 = "A"
Const lidebF2 = 1
Const coF2 = "A"
Const lidebR = 1   ' ligne debut resultat
Const coR = "C"    ' colonne resultat

Public Sub extraction()
Dim lifinF1 As Long, liF1 As Long
Dim lifinF2 As Long
Dim LiR As Long
Dim plageR As Range, c As Range
Dim nom As String
lifinF1 = Sheets(F1).Range(coF1 & 65536).End(xlUp).Row
lifinF2 = Sheets(F2).Range(coF2 & 65536).End(xlUp).Row
Set plageR = Sheets(F2).Range(coF2 & lidebF2 & ":" & coF2 & lifinF2)
LiR = lidebR
For liF1 = lidebF1 To lifinF1
  nom = Sheets(F1).Range(coF1 & lidebF1 + liF1 - 1).Value
  Set c = plageR.Find(nom)
  If c Is Nothing Then
    Sheets(F1).Range(coR & LiR).Value = nom
    LiR = LiR + 1
  End If
Next liF1
End Sub


RQ1. modifier les constantes
RQ2. j'ai mis les resultats en feuille F1

bonne suite
0