Concatener seulement les valeurs différentes

Bonjour à tous,

j'espère que vous allez bien et que mon questionnement VBA et/ou logique pourras vous amuser ou du moins que vous pourrez m'aider ^^.

Bon j'avoue mon cerveau est bloqué, je n'arrive plus à trouver de solution. Vous êtes mon dernier espoir ^^.

Alors pour simplifier la compréhension de ma problématique je vais décrire les problèmes en 3 parties simplifiés:

problématique n°1: concaténer les valeurs des cellules d'une ligne des colones B, C, D et E dans la colonne F (="total")

colonne 1, 2, 3 ,4 = cellule avec valeur (texte et numérique)

colonne 5 = concaténation des valeurs sans doublage des valeurs + ne pas mettre les valeurs qui sont contiennent "NA" (la colonne 1 et 3 par exemple pourrait avoir la même valeur dans ce cas en colonne 5 j'aurais les valeurs des colonnes 1,2 et 4)

voici un exemple en tableau :

image

problématique n°2: les valeurs des cellules des colonne b, c, d, e peuvent être "NA"

Les valeurs des cellules à concaténer contiennent parfois "NA". La valeur contenent NA (en majuscule) ne doit pas être concaténée.

voici l'exemple en tableau :

image

problématique n°3: les valeurs des cellules à concaténer en colonne 5 sont parfois déjà des valeurs concaténées

Parfois dans une ou plusieurs cellule des colonnes B, C ,D, E, la valeur de la cellule est déjà une concaténation de valeurs. il faut donc que ces valeurs n'apparaissent pas en doublons dans la colonne total si jamais une autre colonne présente une des valeurs de cette concaténation. par exemple:

- en ligne 1 colonne B j'ai "chien chat"

- en ligne 1 en colonne E j'ai "chien"

--> En total, "chien" ne doit apparaitre qu'une seule fois.

je vous met le tableau en exemple ci-dessous :

image

Voila les 3 grosses problématiques qui me pose le plus de problème. je ne me suis pas encore posée sur les problématiques suivantes n'ayant pas encore solutionné les 3 premières. Cependant, pour que vous ayez une vision complète du fichier, je vous explique les problématiques qui vont suivrent ( auquel je trouverais peut une solution toute seule ne m'ettant pas plongé complètement dans leur résolution actuellement)

Problématique n° 4: il n'y a pas que 5 colonnes mais une multitude (de meme pour les lignes)

Je disais précédemment que la concaténation des colonnes b, c, d ,e se fait en F ( ce qui est vrai ^^), mais après la colonne F, je reproduit le même processus (jusqu'à la colonne CQ) sauf que je n'ai pas forcément 4 colonnes avant la colonne total. Dans mon fichier, je peux aller jusqu'à 12 colonnes à concaténer dans le colonne total. Petit tableau d'exple ci-dessous :

image

Problématique n° 5: concaténation des colonnes totales

A la fin de toute mes colonnes, j'ai une dernierè colonne qui concatène cette fois toutes les colones "total" de le même façon que précedement c'est à dire sans avoir de doublon.

vous trouverez le tableau ci-dessous en exemple :

image

Voila pour les problématiques. De mon coté j'ai essayé de faire les concaténations via :

- formule excel en intégrant des si dans des si, ... sauf que la formule est trop longue. Du coup excel ne fait pas le calcul

- j'ai tenter de faire par une macro VBA en mettant des Si et des else mais je m'y perd telment j'ai de si dans les si.

Je penses qu'il existe une solution plus simple que de mettre plein de si dans des si, mais mon cerveau refuse de voir une autre solution. Du coup je tourne en rond.

J'ai donc espoir que des regards neufs comme les vôtres pourront m'apporter une solution ou du moins me laisser entrevoir la lumière au fond du tunnel.

En plus, de cela ce document est un gros attendu dans mon projet (boulot). Ca fait plusieurs semaines que je tourne en rond dessus et je ne peux plus trop me permettre de me laisser bcp de temps pour réfléchir. je dois rendre ce document pour milieu de la semaine pro. et je bloque.

J'espère sincèrement que vous pourrez m'aider. Je vous ai mis en pièce jointe le fichier excel exemple (avec bcp moins de colonnes et de lignes que mon fichier de travail).

Cdt.

Gwlad.

16pr-forum-excel.xlsx (12.87 Ko)

bonjour,

une proposition avec une fonction personnalisée

Function concatsansdoublon(plage)
    For Each cel In plage
        If InStr(cel, "NA") = 0 Then
            mots = Split(cel)
            For Each mot In mots
                If InStr(sol, mot) = 0 Then sol = sol & mot & vbCrLf
            Next
        End If
    Next
    concatsansdoublon = Left(sol, Len(sol) - 2)
End Function
21pr-forum-excel.xlsm (18.99 Ko)

Bonjour,

Une autre solution si vous disposez de la fonction JOINDRE.TEXTE

27pr-forum-excel.xlsm (16.17 Ko)

Vous êtes géniaux,

je vous remercie tout les deux.

h2so4:

J'ai pris ta solution car elle m'évite d'avoir les doublons dans la cellule total.

Jj'ai juste rajouter le retour à la ligne dans le split comme ceci :

mots = Split(cel, vbCrLf)

et la boumm c'est exactement ce que je voulais. un grand MERCI à toi.

Thev:

Je ne connaissais pas cette fonction. C'est génial aussi merci.

Malheureusement, les doublon restent. C'est pourquoi je n'ai pas utilisé ta solution. Cependant, grâce à toi j'ai découvert cette fonction qui me sera bien utile pour d'autre projet. donc MERCI

Encore merci à vous deux. Vous n'imaginez pas l'épine que vous m'avez enlevé du pied en plus de m'avoir appris des choses.

bonsoir,

pour compléter ta correction (j'ai détecté des problèmes en cas d'espace inopportun ou de LF indépendant de CR) donc voici :

Function concatsansdoublon(plage)
    For Each cel In plage
        If InStr(cel, "NA") = 0 Then
            mots = Split(Replace(Replace(cel, vbLf, " "), vbCr, " "))
            For Each mot In mots
            If mot <> "" Then If InStr(sol, mot) = 0 Then sol = sol & mot & vbCrLf
            Next
        End If
    Next
    concatsansdoublon = Left(sol, Len(sol) - 2)
End Function
Rechercher des sujets similaires à "concatener seulement valeurs differentes"