OVH Cloud OVH Cloud

Concaténer les valeurs des cellules selon leur contenu

13 réponses
Avatar
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)

3 réponses

1 2
Avatar
Jacky
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





Avatar
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
Avatar
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



1 2