Compraison listes dans excel

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

3 réponses

  1. 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
    1. 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
      1. Contributeur
        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
    2. Contributeur
      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