Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Concatener une liste de longeur variable

  • Initiateur de la discussion Initiateur de la discussion Fourtet
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

F

Fourtet

Guest
Bonjour,
je vous sollicite pour résoudre le souci suivant :

Je dispose d'une colonne de prénom (A1:A23) dont je souhaite concaténer les données dans une seule cellule (A24), en les séparant par des virgules (Michel, René, Marcel...), sauf pour la dernière donnée que je souhaite voir précédée d'un "et" (Michel, René, Marcel et Maurice)

Jusqu'à là pas de pb, sauf que la longueur de ma liste de prénom varie (toutes les cellules de la colonne ne sont pas tjs remplies), donc çà se complique trop pour moi.

Quelqu'un aurait une solution ?
(je ne maitrise pas du tout VBA)

MERCI
Alan
 
Re : Concatener une liste de longeur variable

Bonjour Fourtet et bienvenue sur le forum.

Je te propose une solution en passant par une colonne intermédiaire que tu peux masquer.

En B1, mettre cette formule :
Code:
=SI(ESTVIDE(A1);"";A1&";")

Cette formule est à tirer vers le bas jusqu'en B21.

En B22, mettre :
Code:
=SI(ESTVIDE(A22);"";A22&" et ")

Puis en B23, mettre :
Code:
=SI(ESTVIDE(A23);"";A23)

Ensuite, en A24, consolider le tout avec cette formule :
Code:
=CONCATENER(B1;B2;B3;B4;B5;B6;B7;B8;B9;B10;B11;B12;B13;B14;B15;B16;B17;B18;B19;B20;B21;B22;B23)

A+
 
Re : Concatener une liste de longeur variable

Bonjour et bienvenue,
Fonction perso
Code:
Function CONCAT(c As Range)
Dim T, i%, j%, texte$
T = c.Value
For i = UBound(T) To LBound(T) Step -1
    If Not IsEmpty(T(i, 1)) Then
        texte = "et " & T(i, 1)
        For j = i - 1 To LBound(T) Step -1
            If Not IsEmpty(T(j, 1)) Then
                texte = T(j, 1) & ", " & texte
            End If
        Next
    Exit For
    End If
Next
CONCAT = texte
End Function
Et en B1 par exemple
Code:
=CONCAT(A1:A23)
A+
kjin
 
Re : Concatener une liste de longeur variable

Merci à vous 2
Fred0o, ta proposition ne semble pas intégrer le fait que la dernière données de la liste ne se situe pas tjs dans la dernière cellule. Du coup çà ne fonctionne pas.

James007 : ta proposition fonctionne bien. Le souci c'est que j'ai étendu ta formule aux 23 cellules de ma colonne et là, excel me renvoi le message "Formule trop longue"

Du coup je suis tjs bloqué !

Une autre idée ?

MERCI
 
Re : Concatener une liste de longeur variable

bonsoir Kjin😱 , et tous
juste pour te dire Kjin que ton post est bien passé ( oui tu le sais) avec ta fonction, mais peut-être ne sais-t'il pas lire ou l'utiliser.(fourtet bien sur)
a+
papou 😱

EDIT James je vois que je ne suis pas le seul à apprécier la fonction de Kjin, mais cela ne semble pas avoir touché Fourtet ???
 
Re : Concatener une liste de longeur variable

Merci à tous
l'intitulé de mon mail mentionnait "je ne maitrise pas VBA"
à priori y-a pas d'autre issues que de s'y mettre.... une nuit courte en perspective...
A+
 
Re : Concatener une liste de longeur variable

Bonsoir le fil 🙂,
EDIT James je vois que je ne suis pas le seul à apprécier la fonction de Kjin, mais cela ne semble pas avoir touché Fourtet ???
Le temps qu'on rédige un post, d'autres viennent s'intercaler 🙄...
Je pense que l'amis Fourtet n'a tout simplement pas jeter un oeil en arrière 😉...
Donc pour qu'il comprenne, c'est les #4 et #5 que notre ami a loupé...
Bonne soirée 😎
Ajout : La preuve en image... Mais finalement, j'ai fait une erreur, donc c'est le VBA qu'il n'aime pas (ça peut se comprendre), mais pour concaténer des plages variables avec modification sur la dernière cellule, je suis septique sans...
 
Re : Concatener une liste de longeur variable

Bonsoir Jean Noël 😱 et tous,
oui Jean Noël il n'aime pas le vba mais dans ce cas précis, il a juste à copier le fonction dans un module et d'utiliser dans une cellule CONCAT ce n'est plus du vba, mais l'utilisation d'une formule.
Enfin apparemment il aime les choses compliqués, alors c'est son problème
bonne soirée à tous
Papou 😱
 
Re : Concatener une liste de longeur variable

Bonsoir,

La liste commence en A3. Dans le tableur:
=concatchamp(DECALER(A3;;;NBVAL(A3:A100));",")

Code:
Function concatChamp(champ As Range, sep)
   temp = Join(Application.Transpose(champ.Value), sep)
   p = InStrRev(temp, ",")
   concatChamp = Left(temp, p - 1) & Replace(Mid(temp, p), ",", " et ")
End Function


JB
 

Pièces jointes

Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…