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

3 réponses

  1. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
     
    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
  2. 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
    1. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
       
      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
  3. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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