Concatenation si cellules non vides

antiphot

XLDnaute Occasionnel
Bonjour à toutes et à tous

Ma question du jour s'addresse aux formulistes. J'ai dans une colonne (disons A) des valeurs de A1 à A5. Je désire concatener ces valeurs en B1. Jusque là pas de pb. Mon souçi est que dans ces 5 cellules, certaines peuvent être vides.
Je ne désire concatener bien sûr que celles qui contiennent une valeur.

J'ai essayé avec la condition Si mais vu le nombre de cas c'est la galère.

Je pense qu'il doit y avoir moyen de faire plus simple peut-être avec une fonction matricielle ?

Je sais que la solution serait simple en vba, mais dans ce cas préçis, il me faut une formule

merci par avance à tous les formulistes qui voudront bien se pencher sur ma question
 

jejdjd

XLDnaute Nouveau
Bonjour,

Merci a tous pur vos réponses, il me reste juste un petit problème

Voici mon code :
Function ConcatPlage(plage As Range, séparateur As String, Optional contenant As String) As String
Dim rep As String, c As Range
For Each c In plage
If InStr(c.Value, contenant) > 0 And c.Value <> "-" And c.Value <> "0" And c.Value <> "." And c.Value <> ".." And c.Value <> "Autres" And c.Value <> "autres" Then
rep = rep & c.Value & séparateur
End If
Next c
ConcatPlage = Left(rep, Len(rep) - Len(séparateur))
End Function


Lorsqu'il n'y a pas de contenu dans H, G et I, il m'écrit "#VALEUR!" et je souhaiterais que si il ne trouve rien il écrive un espace vide.
Savez-vous comment je peux faire, s'il vous plaît ?
 

mcnano

XLDnaute Nouveau
Re : Concatenation si cellules non vides

Bonjour le Forum,
Bonjour antiphot, nat54, l'ami pierrejean,

alors en formule une plus courte pour pierrejean, :):):)

=SUBSTITUE(SUPPRESPACE(A1&" "&A2&" "&A3&" "&A4&" "&A5);" ";"-")

Jocelyn

Oup's Bonjour hoerwind, désolé pour la collision, et je n'ais pas copié :cool:
Bonjour à tous et merci pour ce petit forum car c'était exactement ce dont j'avais besoin :)
La formule marche nickel :)
Juste un détail bien chiant dans mon cas : je cherche à l'utiliser pour un score de tennis. 6 colonnes, chacune représentant le score de chaque joueur dans chaque set (joueur1SET1, joueur2set1, joueur1set2 ...).
Si mes colonnes ont pour valeur 6,2,4,2,vide,vide : le résultat va être 6-2-4-2
Ma question est simple mais sûrement compliquée : comment ne pas avoir de tiret entre 2 sets mais seulement entre les 2 jeux d'un set :/
Merci aux ingés en formules :)))

Ma formule actuelle :
=SUBSTITUTE(TRIM(K2&" "&L2&" "&M2&" "&N2&" "&O2&" "&P2);" ";"-")
 
Dernière édition:

mcnano

XLDnaute Nouveau
Bonjour à tous,

Je ne connais pas ta version d'excel mais ci-joint une approche avec joindre.texte()

JHA
Merci pour la réactivité :)
Excel 2016 et Google Sheets !
En fait l'idée est vraiment d'avoir le score complet dans une seule et unique cellule.
Car la valeur de cette cellule va être reportée automatiquement sur une petite app de Livescoring...
Jusqu'à maintenant je faisais très simple avec : =K2&"-"&L2&" "&M2&"-"&N2&" "&O2&"-"&P2
Mais le souci était la présence systématique des tirets donc résultat moche sur l'app...
Maintenant je parviens en effet à retirer les tirets en cas de cellule vide ce qui déjà une belle avancée MAIS les tirets entre les sets sont vraiment de trop et rendre le résultat finalement pas plus exploitable ...
 

JHA

XLDnaute Barbatruc
Bonjour à tous,

A essayer
VB:
=INDEX(DECALER($B11;;;;2);1)&" "&INDEX(DECALER($B11;;;;2);2)&" - "&INDEX(DECALER($D11;;;;2);1)&" "&INDEX(DECALER($D11;;;;2);2)&SI(F11<>"";" - ";"")&INDEX(DECALER($F11;;;;2);1)&" "&INDEX(DECALER($F11;;;;2);2)

JHA
 

Pièces jointes

  • Classeur concatener.xlsx
    11.7 KB · Affichages: 2

mcnano

XLDnaute Nouveau
Merci je pense avoir réussi :)
J'ai bien le format 6-4 3-0
TOP
Possible de jouer sur l'espace entre 2 données par ex entre les sets ? 6-4 6-3
J'arrive en ajoutant plusieurs fois &" "& mais si cela s'affiche sur le sheet ça ne passe pas sur l'app. Il y a peut-être une formule mieux adaptée ?
Merci encore :)
 

JHA

XLDnaute Barbatruc
Bonjour à tous,

Restons simple!
A essayer
VB:
=$B11&"-"&$C11&"   "&$D11&"-"&$E11&SI($F11<>"";"  ";"")&$F11&SI($F11<>"";"-";"")&$G11

Si il peut n'y avoir qu'une seule partie
VB:
=$B11&"-"&$C11&SI($D11<>"";"  ";"")&$D11&SI($D11<>"";"-";"")&$E11&SI($F11<>"";"  ";"")&$F11&SI($F11<>"";"-";"")&$G11

JHA
 

Pièces jointes

  • Classeur concatener.xlsx
    11.9 KB · Affichages: 1
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 305
Messages
2 087 078
Membres
103 455
dernier inscrit
saramachado