Concaténer les valeurs des cellules selon leur contenu
13 réponses
Bastien Ragni
Bonjour à tous,
Voilà mon problème.
J'ai 8 cellules contenant une chaine de caractères (initiales de noms).
Chaque cellule peut, tour à tour, être vide: une au moins contient une
chaine de caractère, plusieurs cellules peuvent contenir une chaine de
caractère mais leur nombre (sur 8 cellules) est variable.
Je souhaite concaténer leurs valeurs avant impression (A1&" "&A2&"
"&...etc...jusqu'à A8).
Mais cette solution fournit des blancs inutiles et inesthétiques (par
exemple si A1=XX et A8=YY).
Avez-vous une solution pour ne concaténer QUE les cellules contenant les
chaines de caractères?
Merci d'avance aux experts!
(PS: c'est toujours un réel plaisir pour moi que d'écrire sur ce forum. Mon
classeur a beaucoup progressé depuis que j'ai découvert le forum)
Re.. Avec une cellule vide la fonction insère un espace de trop....... Et trop, c'est trop
Mais cette solution fournit des blancs inutiles et inesthétiques Disait (écrivait) Bastien
;o))
JJ
"Starwing" a écrit dans le message de news:
Bonjour,
Ceci est une Fonction VBA, Une formule que l'on invente parce qu'elle n'existe pas dans Excel.
Pour l'utilisation, il faut le mettre dans un module standard. Suivre les instructions suivantes: ALT+F11 Insertion- Module Dans le module, copiez le code suivant:
Function CONCAT(plage As Range) Application.Volatile For Each c In plage x = x & " " & c.Value Next CONCAT = Right(x, Len(x) - 1) End Function
Sortir en cliquant sur le X en haut à droite
Revenir sur ta feuille Excel. Dans une cellule que tu auras choisi, tu écris =CONCAT(A1:A8)
Starwing
Re..
Avec une cellule vide la fonction insère un espace de trop.......
Et trop, c'est trop
Mais cette solution fournit des blancs inutiles et inesthétiques
Disait (écrivait) Bastien
;o))
JJ
"Starwing" <ubik10@hotmail.com> a écrit dans le message de
news:e5tgabdvEHA.612@TK2MSFTNGP15.phx.gbl...
Bonjour,
Ceci est une Fonction VBA, Une formule que l'on invente parce qu'elle
n'existe pas dans Excel.
Pour l'utilisation, il faut le mettre dans un module standard.
Suivre les instructions suivantes:
ALT+F11
Insertion- Module
Dans le module, copiez le code suivant:
Function CONCAT(plage As Range)
Application.Volatile
For Each c In plage
x = x & " " & c.Value
Next
CONCAT = Right(x, Len(x) - 1)
End Function
Sortir en cliquant sur le X en haut à droite
Revenir sur ta feuille Excel.
Dans une cellule que tu auras choisi, tu écris =CONCAT(A1:A8)
Re.. Avec une cellule vide la fonction insère un espace de trop....... Et trop, c'est trop
Mais cette solution fournit des blancs inutiles et inesthétiques Disait (écrivait) Bastien
;o))
JJ
"Starwing" a écrit dans le message de news:
Bonjour,
Ceci est une Fonction VBA, Une formule que l'on invente parce qu'elle n'existe pas dans Excel.
Pour l'utilisation, il faut le mettre dans un module standard. Suivre les instructions suivantes: ALT+F11 Insertion- Module Dans le module, copiez le code suivant:
Function CONCAT(plage As Range) Application.Volatile For Each c In plage x = x & " " & c.Value Next CONCAT = Right(x, Len(x) - 1) End Function
Sortir en cliquant sur le X en haut à droite
Revenir sur ta feuille Excel. Dans une cellule que tu auras choisi, tu écris =CONCAT(A1:A8)
Starwing
Starwing
Bonjour, tu as raison JJ
Alors je recommence :
Function CONCAT(plage As Range) Application.Volatile For Each c In plage If c <> "" Then x = x & " " & c.Value Else Next c CONCAT = Right(x, Len(x) - 1) End Function
Starwing
Bonjour, tu as raison JJ
Alors je recommence :
Function CONCAT(plage As Range)
Application.Volatile
For Each c In plage
If c <> "" Then x = x & " " & c.Value Else
Next c
CONCAT = Right(x, Len(x) - 1)
End Function
Function CONCAT(plage As Range) Application.Volatile For Each c In plage If c <> "" Then x = x & " " & c.Value Else Next c CONCAT = Right(x, Len(x) - 1) End Function
Starwing
Daniel
Merci Pita, J'ai essayé mais cette solution supprime aussi les " " que j'introduit pour séparer visuellement les chaines de caractères. J'obtiens XXYY. XX YY serait plus clair. "Pita" a écrit dans le message de news:
Bonjour, il vous suffit d'utiliser la fonction SUPPRESPACE() qui va éliminer tout les blancs multiples conssécutifs ainsi que les blancs de début ou de fin: =SUPPRESPACE(A1 & " " & A2& " " &...A8) (en Anglais =TRIM()) Bonne chance, JPP
"Bastien Ragni" wrote:
Bonjour à tous,
Voilà mon problème. J'ai 8 cellules contenant une chaine de caractères (initiales de noms). Chaque cellule peut, tour à tour, être vide: une au moins contient une chaine de caractère, plusieurs cellules peuvent contenir une chaine de caractère mais leur nombre (sur 8 cellules) est variable. Je souhaite concaténer leurs valeurs avant impression (A1&" "&A2&" "&...etc...jusqu'à A8). Mais cette solution fournit des blancs inutiles et inesthétiques (par exemple si A1=XX et A8=YY). Avez-vous une solution pour ne concaténer QUE les cellules contenant les chaines de caractères? Merci d'avance aux experts! (PS: c'est toujours un réel plaisir pour moi que d'écrire sur ce forum. Mon classeur a beaucoup progressé depuis que j'ai découvert le forum)
Bonjour,
Pourquoi ne pas faire avec une petite macro une sélection des cellules concaténées puis avec un Edition/Remplacer... (enfin huit si tu concatènes 8 cellules) où tu remplaces "deux espaces" par "un espace", "trois espaces" par "un espace", etc.. Daniel
Merci Pita,
J'ai essayé mais cette solution supprime aussi les " " que j'introduit pour
séparer visuellement les chaines de caractères.
J'obtiens XXYY.
XX YY serait plus clair.
"Pita" <jppita@videotron.ca> a écrit dans le message de news:
27FBA39F-425D-4965-BF6D-F57547BD1E78@microsoft.com...
Bonjour,
il vous suffit d'utiliser la fonction SUPPRESPACE() qui va éliminer tout
les
blancs multiples conssécutifs ainsi que les blancs de début ou de fin:
=SUPPRESPACE(A1 & " " & A2& " " &...A8) (en Anglais =TRIM())
Bonne chance,
JPP
"Bastien Ragni" wrote:
Bonjour à tous,
Voilà mon problème.
J'ai 8 cellules contenant une chaine de caractères (initiales de noms).
Chaque cellule peut, tour à tour, être vide: une au moins contient une
chaine de caractère, plusieurs cellules peuvent contenir une chaine de
caractère mais leur nombre (sur 8 cellules) est variable.
Je souhaite concaténer leurs valeurs avant impression (A1&" "&A2&"
"&...etc...jusqu'à A8).
Mais cette solution fournit des blancs inutiles et inesthétiques (par
exemple si A1=XX et A8=YY).
Avez-vous une solution pour ne concaténer QUE les cellules contenant les
chaines de caractères?
Merci d'avance aux experts!
(PS: c'est toujours un réel plaisir pour moi que d'écrire sur ce forum.
Mon
classeur a beaucoup progressé depuis que j'ai découvert le forum)
Bonjour,
Pourquoi ne pas faire avec une petite macro une sélection des cellules
concaténées puis avec un Edition/Remplacer... (enfin huit si tu
concatènes 8 cellules) où tu remplaces "deux espaces" par "un espace",
"trois espaces" par "un espace", etc..
Daniel
Merci Pita, J'ai essayé mais cette solution supprime aussi les " " que j'introduit pour séparer visuellement les chaines de caractères. J'obtiens XXYY. XX YY serait plus clair. "Pita" a écrit dans le message de news:
Bonjour, il vous suffit d'utiliser la fonction SUPPRESPACE() qui va éliminer tout les blancs multiples conssécutifs ainsi que les blancs de début ou de fin: =SUPPRESPACE(A1 & " " & A2& " " &...A8) (en Anglais =TRIM()) Bonne chance, JPP
"Bastien Ragni" wrote:
Bonjour à tous,
Voilà mon problème. J'ai 8 cellules contenant une chaine de caractères (initiales de noms). Chaque cellule peut, tour à tour, être vide: une au moins contient une chaine de caractère, plusieurs cellules peuvent contenir une chaine de caractère mais leur nombre (sur 8 cellules) est variable. Je souhaite concaténer leurs valeurs avant impression (A1&" "&A2&" "&...etc...jusqu'à A8). Mais cette solution fournit des blancs inutiles et inesthétiques (par exemple si A1=XX et A8=YY). Avez-vous une solution pour ne concaténer QUE les cellules contenant les chaines de caractères? Merci d'avance aux experts! (PS: c'est toujours un réel plaisir pour moi que d'écrire sur ce forum. Mon classeur a beaucoup progressé depuis que j'ai découvert le forum)
Bonjour,
Pourquoi ne pas faire avec une petite macro une sélection des cellules concaténées puis avec un Edition/Remplacer... (enfin huit si tu concatènes 8 cellules) où tu remplaces "deux espaces" par "un espace", "trois espaces" par "un espace", etc.. Daniel