Concaténer sans doublon

Fermé
woods_uzumaki Messages postés 2 Date d'inscription mardi 18 juillet 2017 Statut Membre Dernière intervention 19 juillet 2017 - Modifié le 18 juil. 2017 à 17:35
woods_uzumaki Messages postés 2 Date d'inscription mardi 18 juillet 2017 Statut Membre Dernière intervention 19 juillet 2017 - 19 juil. 2017 à 17:06
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

Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 394
Modifié le 18 juil. 2017 à 17:43
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
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 394
18 juil. 2017 à 17:54
... 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
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 394
18 juil. 2017 à 18:14
... 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
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 211
Modifié le 18 juil. 2017 à 18:17
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
Raymond PENTIER Messages postés 58388 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 17 avril 2024 17 088
18 juil. 2017 à 18:32
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
Raymond PENTIER Messages postés 58388 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 17 avril 2024 17 088
18 juil. 2017 à 18:44
Illustrations du post 5 :


0

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

Posez votre question
woods_uzumaki Messages postés 2 Date d'inscription mardi 18 juillet 2017 Statut Membre Dernière intervention 19 juillet 2017
19 juil. 2017 à 17:06
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