[RESOLU] Concatener en fonction de choix dans des colonnes

orval34

XLDnaute Nouveau
Bonjour à tous

J'ai un tableau avec comme information qui discute avec qui :

discussion.jpg

Pour plus de facilité de lecture (le tableau est plus long normalement) je désire, avoir les noms des personnes en relation avec Dominique.
C'est à dire que lorsqu'il y a une ou plusieurs sur la ligne 2, dans la cellule B2 il y a le nom de la colonne ou ce trouve les croix.

Je me doute qu'il faut utiliser les fonction concatener() et si(). Mais je pense qu'il y en a d'autre. Hélas mais connaissance d'excel sont limité.:eek:

Merci d'avance pour vos réponses

Orval

PS Desolé pour l'intitulé mais j'ai pas trouvé mieux :p
 
Dernière édition:

Modeste

XLDnaute Barbatruc
Re : Concatener en fonction de choix dans des colonnes

Bonjour orval34,

Il me semble bien que des cas semblables ont déjà été traités ...
Un essai avec une fonction personnalisée: placer le code suivant dans un module standard
VB:
Function quiEtQui(plage As Range)
For Each c In plage
    If c = "x" Then ch = ch & Cells(1, c.Column) & ", "
Next c
If Right(ch, 2) = ", " Then ch = Mid(ch, 1, Len(ch) - 2)
quiEtQui = IIf(ch = 0, "", ch)
End Function
En b2, ensuite, écrire "=quiEtQui(C2:I2)" et recopier vers le bas.
Cette fonction-ci ne remplira son office qu'avec des 'x' minuscules en guise de croix ... Je te laisse le soin d'adapter, si tu veux des 'X' majuscules ;)

[Edit:] Salut Dranreb :), Hello Robert :D
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Concatener en fonction de choix dans des colonnes

Bonjour.

L'ai écrite un peu différemment :
VB:
Function Communique(ByVal Titr As Range, ByVal Croix As Range) As String
Dim TTt(), TCx(), Ce As Long, Ts() As String, Cs As Long
TTt = Titr.Value
TCx = Croix.Value
For Ce = 1 To UBound(TTt, 2)
   If TCx(1, Ce) <> "" Then ReDim Preserve Ts(0 To Cs): Ts(Cs) = TTt(1, Ce): Cs = Cs + 1
   Next Ce
Communique = Join(Ts, ", ")
End Function
Code:
=Communique($C$1:$M$1;$C2:$M2)

P.S. Comme pour celle de Modeste, il faut l'installer dans un module ordinaire, non dans un module objet.

Edit: Bonjour Robert.
 
Dernière édition:

Robert

XLDnaute Barbatruc
Repose en paix
Re : Concatener en fonction de choix dans des colonnes

Bonjour Orval, Modeste, bonjour le forum,

Je ne comprends pas que l'on puisse s'embêter à faire une capture d'écran, puis enregistrer l'image pour enfin la mettre en pièce jointe plutôt que d'envoyer directement le fichier exemple ! Du coup, on est obligé de tout refaire pour tester. En principe je ne refais même pas dans ces cas là, je laisse tomber ! Mais il y a des jours où... En pièce jointe un solution par macro avec le code événementiel Change ci-dessous :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim PL As Range 'déclare la variable PL (PLage)
Dim LI As Integer 'déclare la variable LI (LIgne)
Dim CEL As Range 'déclare la variable CEL (CELlule)
Dim TXT As String 'déclare la variable TXT (TeXTe)

Set PL = Range("C1:" & Cells(1, Application.Columns.Count).Address(0, 0)).EntireColumn 'définit la palge PL
If Target.Row = 1 Then Exit Sub 'si le changement a lieu dans la ligne 1, sort de la procédure
If Application.Intersect(Target, PL) Is Nothing Then Exit Sub 'si le changement à lieu ailleurs que dans la palge PL, sort de la procédure
LI = Target.Row 'définit la ligne LI
For Each CEL In Application.Intersect(PL, Rows(LI)) 'bouce sur toutes les cellules de la ligne LI
    'si la cellule vaut "x" ou "X", définit le texte TXT
    If UCase(CEL.Value) = "X" Then TXT = IIf(TXT = "", Cells(1, CEL.Column), TXT & ", " & Cells(1, CEL.Column))
Next CEL 'prochaine cellule de la boucle
Cells(LI, 2).Value = TXT 'place le texte TXT dans la cellule en colonne B de la ligne LI
End Sub
Le Fichier (et pas son image !) :

[Édition]
Bonjour Bernard on s'est croisé...
 

Pièces jointes

  • Orval_v01.xlsm
    17.8 KB · Affichages: 32
Dernière édition:

orval34

XLDnaute Nouveau
Re : Concatener en fonction de choix dans des colonnes

Merci à vous trois pour vos réponses

Chaque code est interessant.

Après un test rapide je reste avec celui de modeste.

Mais celui de Dranreb a l'avantage de pouvoir choisir l’entête de colonne (pas obligé que se soit la ligne 1) et celui de robert fonctionne sur toute la page.

encore merci

Orval
 

orval34

XLDnaute Nouveau
Re : Concatener en fonction de choix dans des colonnes

@Robert

Désolé pour l'image, mais quand j'ai créé le tableau je n'avais pas l'intension de le garder, car l'utilisation de cette fonction est pour un autre classeur.

Promis, la prochaine fois je met un fichier excel joint :D
 

Discussions similaires

Statistiques des forums

Discussions
312 198
Messages
2 086 149
Membres
103 132
dernier inscrit
hedfahmi