Faire correspondre plusieurs cellules à leur valeur et regroupé le tout

Bonjour à tous,

Je suis un nouveau dans le monde magique d'Excel et mon niveau est débutant + mais en aucun cas expert.
J'ai besoin de votre aide pour une base de donnée sur laquelle je travaille.

J'ai une liste de personne et pour chaque personne j'ai plusieurs colonnes avec leur diagnostic (colonne C à I).

Je souhaiterai faire apparaitre dans la colonne J le diagnostic correspondant pour le patient.

Le problème arrive quand un patient a plusieurs diagnostics.

Par exemple pour le patient 1 la colonne J serait "diag___3", pour le patient 7 "diag___4 et diag___6" par exemple. Dans la vraie base de données certains patients peuvent avoir jusqu'à 4 diagnostic différents.

J'ai essayé de suivre quelques astuces trouver sur internet à base de INDEX et MATCH par exemple mais je n'arrive pas au résultat voulu.

image

C'est mon premier post sur un forum d'aide Excel désolé si je ne suis pas très clair.

Merci beaucoup pour votre aide.

PS : je travaille sur EXCEL 2016

Bonjour à tous !

Et....

Une proposition en J2 ?

=SIERREUR(INDEX($C$1:$I$1;;EQUIV(1;C2:I2;0));"")

A étirer vers le bas.

Remarque : Il est préférable pour une aide adaptée, de joindre un classeur (pas une image !), anonymisé mais représentatif, accompagné d'exemples du résultat attendu.

Bonjour,

Merci pour la réponse j'essaye ça tout de suite.
Pour la pièce jointe j'ai essayé mais je n'ai pas réussi à trouver le bouton Fichier de l'éditeur dont il est question dans le post[A lire avant de poster].

Et évidemment en écrivant ce mail je le vois...

Merci encore je vous dis si ça fonctionne.

Arf malheureusement ça ne marche pas.

J'ai le même problème avec votre formule. A savoir que pour les patients qui ont plusieurs diagnostics seuls le premier diagnostic apparait. :(

Bonjour à tous,

En J2, via une fonction personnalisée

=Concatener1(C$1:I$1;C2:I2)

Function Concatener1(rng1 As Range, rng As Range) As String
    Dim result As String, i As Byte
    For i = 1 To rng.Columns.Count
        If rng.Cells(1, i).Value = 1 Then
            ' Concaténer la valeur correspondante de rng1
            result = result & rng1.Cells(1, i).Value & ", "
        End If
    Next i
    ' Supprime la dernière virgule et espace
    If Len(result) > 0 Then
        result = Left(result, Len(result) - 2)
    End If
    ' Retourner le résultat concaténé
    Concatener1 = result
End Function

klin89

Bonsoir à tous !

J'ai le même problème avec votre formule. A savoir que pour les patients qui ont plusieurs diagnostics seuls le premier diagnostic apparait. :(

Désolé, je n'avais pas intégré cette contrainte.

Je vous propose une contribution "au plus simple..." (aphorisme tulipien ) :

Note : L'obsolescence de votre Excel est très pénalisante. Les produits "modernes" (notamment Microsoft 365) rendent les choses nettement plus faciles :

=JOINDRE.TEXTE(",";;FILTRE($C$1:$I$1;C4:I4;""))

bonjour

une proposition spécial xl 2016 avec qques explications

cordialement

19nilrod.xlsx (11.82 Ko)

Re

Ou celle-ci :

=JOINDRE.TEXTE(","; VRAI; SI(C2:I2=1;C$1:I$1; ""))

klin89

Hey,

Et ça à mettre en J2 ? Peut être à valider par CTRL+MAJ+ENTREE

=CONCAT(SI(C2:I2=1;$C$1:$I$1&",";""))

@+

re à tous,

la fonction personnalisée revue :

En J2 à recopier vers le bas :

=concatener1(C2:I2;C$1:I$1)
Function concatener1(rng As Range, rng1 As Range) As String
concatener1 = Join(Filter(Evaluate("IF(" & rng.Address & "=1, " & rng1.Address & ")"), False, 0), ", ")
End Function

klin89

Bonsoir à tous !

@BAROUTE78 : Hello !

Et ça à mettre en J2 ? Peut être à valider par CTRL+MAJ+ENTREE

=CONCAT(SI(C2:I2=1;$C$1:$I$1&",";""))

Il me semble (la documentation Microsoft est ambiguë) que la fonction CONCAT n'est pas disponible sous Excel 2016.

image

Autre source :

image

Ah mince …

En effet la documentation n'est pas hyper précise ... Je n'ai pas de version 2016 sous la main pour tester

image

@+

Bonsoir à tous de nouveau !

Ah mince …

Ce n'est pas chose facile que de jongler avec la disponibilité des fonctions...

J'avais commencé, moi aussi, à œuvrer avec ce "récent" CONCAT.....

Merci à tous et particulièrement à Klin89 pour sa solution qui marche parfaitement pour ce que je voulais faire. En plus c'est la première fois que j'utilise une fonction personnalisée donc il faudra que je regarde comment ça marche réellement mais en tout cas ça marche et j'ai pu l'appliquer à mon vrai tableau.

Merci également à Tulipe4 dont la solution fonctionne mais ne me permet pas de l'inclure directement dans mon tableau.

Merci à vous tous.

Bonjour à tous !

Puis-je connaitre votre sentiment quant à ma proposition (ici) ?

Bonjour,

Effectivement elle fonctionne quand j'ouvre le fichier mais dès que je clique sur une cellule les résultats disparaissent je ne sais pas pourquoi.

image

Du coup je me suis rabattu sur les autres solutions qui fonctionnaient sans soucis.

Merci quand même pour votre proposition

Bonjour à tous !

Effectivement elle fonctionne quand j'ouvre le fichier mais dès que je clique sur une cellule les résultats disparaissent je ne sais pas pourquoi.

Oups ! Je pensais avoir œuvré sans la fonction CONCAT......
L'erreur démontre que cette fonction n'est pas disponible dans votre Excel 2016.

Le pire c'est que si ca semble marcher.
Quand j'ouvre le fichier pour la première fois les résultats s'affichent. Mais après quand je sélectionne une cellule pour voir la formule ou quoi que ce soit ca disparait.
Voila le tableau juste après l'avoir ouvert sans rien touché d'autre.

image

Bonjour à tous de nouveau !

Le pire c'est que si ca semble marcher.
Quand j'ouvre le fichier pour la première fois les résultats s'affichent. Mais après quand je sélectionne une cellule pour voir la formule ou quoi que ce soit ca disparait.

L'affichage à l'ouverture résulte d'un calcul antérieur. Il est donc normal qu'il s'affiche comme tel.

Rechercher des sujets similaires à "correspondre leur valeur regroupe tout"