Excel et les doublons

cmpop -  
eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

J'ai un petit soucis avec un document excel :
mon document est en fait un répertoire, il y a donc plusieurs colonnes classiques (nom, prénom, adresse, etc) et une colonne "groupe" qui classe les gens selon leur groupe d'appartenance (par exemple : famille, amis, etc. les groupes ne sont pas ceux là car c'est un document pour le boulot, mais c'est pour illustrer).
Pour info, le document sert à faire du publipostage.
Le but est qu'en filtrant par groupe, on puisse faire du publipostage pour tel ou tel groupe (bon jusque là je sais faire).
Par contre, certaines personnes appartiennent à plusieurs groupes. Du coup, si je veux faire du publipostage pour plusieurs groupes, ces personnes apparaissent 2 fois, ce qui est un problème pour le publipostage.
J'ai pensé à faire une colonne par groupe avec par exemple un 1 ou un x si la personne appartient à un groupe mais ça ferait vraiment beaucoup de colonnes (il y a beaucoup de groupes) et donc ça devient plus difficile d'utilisation. Le but c'est que le doc soit utilisable par d'autres personnes facilement.

Des idées ? des suggestions ? toute aide serait la bienvenue, car là je bloque !!

merci

10 réponses

  1. Lentzouille Messages postés 728 Statut Membre 64
     
    Bonjour,

    Tu es sous quel version d'office ? 2003/2007/2010 ?
    0
    1. cmpop
       
      je suis sous 2010
      0
  2. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonsoir,

    Tu pourrais pointer les lignes déjà éditées à l'aide d'une macro vba, et ajouter un filtre sur les lignes (vides).
    Cette macro marques les lignes non masquées à l'aide d'un bouton :
    Private Sub BtnPointer_Click()
        Dim lig As Long
        For lig = [B65536].End(xlUp).Row To 2 Step -1
            If Not (Rows(lig).Hidden) Then
                Cells(lig, 1) = "x"
            End If
        Next lig
    End Sub

    exemple
    eric
    0
    1. cmpop
       
      Bonjour,

      Merci mais en fait je ne m'y connais pas tellement en macro... pas sure d'avoir le niveau pour bien comprendre la solution du coup.
      dans le fichier exemple, toutes les lignes sont pointées...
      merci,
      0
    2. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      Au début vide la colonne Pointage.
      Sélectionne un groupe, et après l'avoir traité tu marques les lignes affichées à l'aide du bouton.
      Sélectionne un autre groupe et dans Pointage filtrre sur (vide) pour masquer les lignes déjà traitées et ainsi de suite.
      eric
      0
    3. cmpop
       
      Bonjour,

      Je ne saisi toujours pas bien le fonctionnement.
      En prenant votre fichier exemple, je sélectionne par exemple le groupe 1. je fais mon publipostage et je pointe à l'aide du bouton.
      Je sélectionne ensuite le groupe 2 en plus du 1.
      Puis je filtre sur vide dans la colonne du pointage. Je me retrouve quand même avec les noms 1, 7 et 9 que j'ai déjà traité puisqu'ils faisaient aussi parti du groupe 1...
      donc si je refais un publipostage je les aurai 2 fois.
      0
    4. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      Tu as raison, ma logique n'était pas bonne.
      Je te prépare autre chose pour ce soir.
      eric
      0
    5. cmpop
       
      Super, c'est très gentil, merci beaucoup.
      0
  3. Lentzouille Messages postés 728 Statut Membre 64
     
    Bonjour,

    Sous Office 2010, dans le ruban, onglet données tu as un bouton qui s'appelle "Supprimer les doublons"

    Cdt
    0
    1. cmpop
       
      bonjour,

      Merci mais cela ne règle pas mon problème.
      Prenons l'exemple de Monsieur X qui fait parti du groupe A et du groupe B. Si je supprime une des deux lignes, il n'apparaîtra plus que dans un seul groupe.

      merci,
      0
    2. Lentzouille Messages postés 728 Statut Membre 64
       
      Faut qu'il apparaisse où alors ?
      0
    3. cmpop
       
      peut être que j'ai mal expliqué. Voilà un exemple :

      Pour chaque personne il y a une ligne et plusieurs colonnes remplies : adresse, tel, etc.
      Il y a une colonne "groupe" et non pas une colonne par groupe car il y a beaucoup de groupes et donc sinon ça ferait trop de colonnes et le tableau deviendrait difficile d'utilisation.
      Prenons l'exemple suivant :
      M.A fait parti des groupes 1 et 3 et apparaît donc sur 2 lignes
      M. B fait parti du groupe 2
      M. C fait parti des groupes 1 et 2 et apparaît donc sur 2 lignes

      Je voudrais faire en sorte que si je filtre :
      - si je filtre groupe 1, les lignes correspondant à M. A et M. C doivent s'afficher
      - si je filtre groupe 2, les lignes correspondant à M. B et M. C doivent s'afficher
      - si je filtre groupes 1 et 2, les 3 lignes correspondant à M.A, M.B et M.C doivent s'afficher mais M. C ne doit s'afficher qu'une seule fois, bien qu'il fasse partie du groupe 1 et du groupe 2.

      J'espère que c'est plus clair.
      0
  4. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Re,

    nouvelle version à tester :
    https://www.cjoint.com/?BDzsjyYpe81

    eric
    0
    1. cmpop
       
      je pense que c'est exactement ça. peux tu m'expliquer comment créer les macros similaires sur mon doc ?
      merci beaucoup !!
      0
    2. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      Par contre il faudra traiter les groupes 1 par 1, sinon il faut rajouter un 3ème bouton car il n'y a pas d'évènement pour détecter l'activation d'un filtre.

      Pour copier la macro :
      clic-droit sur l'onglet de la feuille concernée, choisir "visualiser le code..."
      coller l'ensemble du code :
      Private Sub BtnPointer_Click() 
          Dim lig As Long, lig2 As Long 
          For lig = 2 To [C65536].End(xlUp).Row 
              If Not (Rows(lig).Hidden) Then 
                  lig2 = 2 
                  While Cells(lig2, 3) <> "" 
                      If Cells(lig, 3) = Cells(lig2, 3) Then Cells(lig2, 1) = "x" 
                      lig2 = lig2 + 1 
                  Wend 
              End If 
          Next lig 
      End Sub 
      
      Private Sub BtnRAZ_Click() 
          [A1].AutoFilter Field:=1 
          [A1].AutoFilter Field:=2 
          [A:A].ClearContents 
          [A1] = "Pointage" 
          [A1].AutoFilter Field:=1, Criteria1:="=" 
      End Sub

      Adapter éventuellement les n° de colonne.
      Si pb déposer un extrait du fichier aznonymisé sur cjoint.com et coller ici le lien fourni.

      eric
      0
    3. cmpop
       
      super j'essaye ça ce soir ou demain, merci bien !
      0
    4. cmpop
       
      Bon je galère un peu
      ci joint un fichier : http://cjoint.com/?3DAqMIVjodZ
      sachant que j'ai les impératifs suivants :
      - il faut que le fichier marche quelque soit le nom des groupes bien sur et surtout quelque soit leur nombre
      - il y a en vrai plus de 800 noms dans la liste
      - il faut que les lignes soient pointées uniquement si le nom et le prénom sont les même... il y a plusieurs personnes qui ont le même nom de famille mais pas le même prénom.
      merci beaucoup !! un jour j'apprendrai à faire les macro ;)
      0
    5. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      Je vois ça ce soir.
      Par contre je pense qu'on ne peut pas se contenter du nom.
      Est-ce que nom&prénom est suffisant pour éliminer les homonymies ou faut-il ajouter un champ par sécurité ? Si oui lequel serait le plus discriminant ?

      eric
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. PHILOU10120 Messages postés 6463 Date d'inscription   Statut Contributeur Dernière intervention   835
     
    Pour traiter le groupe 1 ou 2 et 3 il suffit de filtrer sur 1, 2 ou 3 et là il n'y a pas de problème
    pour moi la question était quand on groupe le 3 groupes ce que j'ai traité par contre si on groupe que 2 groupes il faudra filtrer autrement mais ce n'était pas dans la question
    0
    1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      Heuuu, garder les 3 groupes c'est ne pas filtrer en fait.
      Le demandeur dira si ça convient.
      eric
      0
  7. PHILOU10120 Messages postés 6463 Date d'inscription   Statut Contributeur Dernière intervention   835
     
    Pour le nom et prénom on peut créer une colonne avec le nom et le prénom
    =A2&" "&B2
    colonne A le nom
    espace
    colonne B le nom
    et faire la recherche sur ce critére
    par contre combien de groupe ?
    0
    1. cmpop
       
      je n'ai pas compté mais une quinzaine je pense. l'idée est que le nombre de groupe puisse évoluer également.
      0
  8. PHILOU10120 Messages postés 6463 Date d'inscription   Statut Contributeur Dernière intervention   835
     
    Bonjour sur la feuille ou les trois listes ont été regroupées mettre cette formule dans une colonne à coté
    =SI(NB.SI(A2:$A$1000;A2)>1;1;"")
    en considérant que A est la colonne avec les noms autrement changer la lettre dans la formule
    et la ligne 2 est la ligne du premier nom
    et 1000 est la ligne du dernier nom
    vous adaptez ces données à vos besions
    la formule compte le nombre de fois qu'elle trouve le nom dans la colonne et vous met un 1 pour vous le dire
    pour supprimer les doublons filtrer sur les 1 et supprimer les lignes
    et voila il n'y a plus de doublon
    -1
    1. cmpop
       
      merci mais cela ne convient pas... je ne veux pas supprimer les doublons je ne veux juste pas qu'ils aparraissent quand je filtre plusieurs groupes et que la même personne fait partie de plusieurs groupes.
      en plus, certains personnes ont le même nom de famille, mais pas le même prénom !
      0
  9. PHILOU10120 Messages postés 6463 Date d'inscription   Statut Contributeur Dernière intervention   835
     
    re:
    soit vous faite une nouvelle liste groupant les trois listes sans doublon avec ma réponse précédante
    soit vous ne supprimer pas les lignes mais vous les masquez cela vous permettra de les garder pour les autres cas
    -1
  10. PHILOU10120 Messages postés 6463 Date d'inscription   Statut Contributeur Dernière intervention   835
     
    Le fichier exemple pour la liste des 3 répertoires

    https://www.cjoint.com/?3Dzt1vXsOgp

    Il suffit de mettre ma formule données plus haut et de mettre un filtre automatique et de sélectionner le filtre sur les cellules vides et il vous reste affichée que les nom sans doublon
    Après enlever le filtre et tout est Ok
    je vous ai mis 2 boutons pour piloter les macros
    -1
    1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      Bonjour,

      ça colle pas ton truc.
      Si on veut traiter le groupe 1, tu masques les lignes si doublon dans un autre groupe...
      eric
      0