Concaténer sans doublon

woods_uzumaki Messages postés 2 Statut Membre -  
woods_uzumaki Messages postés 2 Statut Membre -
Bonjour à tous,

Je vais essayer d'expliquer le plus précisément mon problème car pour moi il est loi d'être simple. Et en plus il m'est ultra important (pour le travail).

Lors d'une inscription à une conférence, les étudiants sélectionnent leurs intérêts pour différents domaines d’études.
J'ai donc pour un même étudiant, plusieurs colonnes avec des domaines études sélectionnés (Commerce en colonne A, Digital en B, etc.). Sauf qu'au vue de la base qui m'a été transmis par le presta, il peut y avoir doublon dans les domaines pour une même personne. Exemple : A2=Digital, B2=Commerce, C2=Digital, D2=Commerce, etc.
Pour pouvoir intégrer cette base à notre outil, je dois concaténer dans une même cellule, l'ensemble des domaines sélectionnés par une personne :
- sans doublon (sachant que l'on peut avoir en colonne F le même domaine qu'en A)
- en séparant les domaines par une virgule
- en prenant en compte que si la colonne est vide, ne rien mettre. Ne mettre qu'une virgule lorsque le domaine est ajouté à l'ensemble des domaines car non présent dans les cellules précédentes.

Au départ, j'avais, laborieusement, regroupé tous les domaines dans une cellule, en prenant en compte que certaines cellules étaient vides (donc ne rien ajouter), sinon ajouter une virgule, puis de nouveau formule SI pour ajouter le domaine. Voici la formule :

=CONCATENER(H2;SI(ESTVIDE(I2);"";",");SI(ESTVIDE(I2);"";I2);SI(ESTVIDE(J2);"";",");SI(ESTVIDE(J2);"";J2);SI(ESTVIDE(K2);"";",");SI(ESTVIDE(K2);"";K2);SI(ESTVIDE(L2);"";",");SI(ESTVIDE(L2);"";L2);SI(ESTVIDE(M2);"";",");SI(ESTVIDE(M2);"";M2);SI(ESTVIDE(N2);"";",");SI(ESTVIDE(N2);"";N2))

Je dois donc concaténer l'ensemble des colonnes en une seule, sans doublon dans les domaines, les séparant par une virgule quand un domaine est ajouté (sinon rien), et appliquer cela à tous les étudiants (donc lignes)

Merci d'avance pour votre aide précieuse,
William

5 réponses

  1. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
     
    Bonjour
    voyez ici

    https://www.cjoint.com/c/GGspQcmAMkv

    la seule chose à admettre pour ne pas compliquer la formule est que l'édition se termine pas une virgule si le dernier titre est un doublon

    crdlmnt

    La qualité de la réponse dépend surtout de la clarté de la question, merci!
    0
    1. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
       
      ... et pour suivre, un second modèle, sans virgule avec une édition en colonne
      https://www.cjoint.com/c/GGsp1nXbl7v
      la cellule doit être formatée en "alignement" retour à la ligne
      crdlmnt
      0
    2. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
       
      ... et on complète avec celui ci, j'avais omis de prendre en compte qu'il pouvait y avoir des cellules vides

      Classeur3 seul valable donc

      https://www.cjoint.com/c/GGsqokjeynv

      crdlmnt
      0
  2. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonjour,

    avec une fonction personnalisée :
    Function concat(plage As Range) As String
            Dim c As Range, dict
            Set dict = CreateObject("Scripting.Dictionary")
            For Each c In plage
                  If Not dict.exists(c.Value) And c <> "" Then dict(c.Value) = 1
            Next c
            concat = Join(dict.keys, ", ")
            Set dict = Nothing
    End Function

    =concat(B2:G2)

    https://www.cjoint.com/c/GGsqpmBQWbG
    eric

    PS : remplacer ", " par "," si tu ne veux pas d'espace après la ,
    En essayant continuellement, on finit par réussir. 
    Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
    En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
    0
  3. Raymond PENTIER Messages postés 58211 Date d'inscription   Statut Contributeur Dernière intervention   17 480
     
    Bonjour.

    Il est dommage que ta liste de domaines soit en ligne 1, et ta liste d'étudiants en colonne A. En effet l'outil DONNÉES/Supprimer les doublons ne fonctionne que sur des données en colonne !
    Si tu as la possibilité de refaire ta base en permutant lignes et colonnes, tant mieux.

    Sinon, il te faut sélectionner ta base A1:N6 en Feuil1, faire Copier, aller en A1 de Feuil2, et faire Collage option Transposer.
    Puis faire un Copier-Coller de B8:F14 en B16, en prenant bien soin que la ligne 15 reste parfaitement vide.
    Sélectionner B16:B22 et faire DONNÉES/Supprimer les doublons/Continuer avec la sélection en cours
    En B24 saisir la formule
    =B16 & SI(B17="";"";"," & B17 & SI(B18="";"";"," & B18 & SI(B19="";"";"," & B19 
    & SI(B20="";"";"," & B20 & SI(B21="";"";"," & B21 & SI(B22="";"";"," & B22))))))
    (j'ai ajouté les espaces uniquement pour la lisibilité ; tu peux t'en passer).
    0
  4. Raymond PENTIER Messages postés 58211 Date d'inscription   Statut Contributeur Dernière intervention   17 480
     
    Illustrations du post 5 :


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

    Posez votre question
  6. woods_uzumaki Messages postés 2 Statut Membre
     
    Merci beaucoup à tous pour vos solutions.
    Effectivement supprimer les doublons n'est que par colonne, ca aurait pu être plus simple si j'y avait pensé au début. Mais j'ai appris des choses :) Donc pas plus mal !
    0