Texte JOINDRE_TEXTE2007

patricktoulon

XLDnaute Barbatruc
Bonjour à tous
comme personne ne pense au pauvres utilisateur qui n'ont pas 365 ou 2016
je me lance
une petite fonction similaire a joindre.texte mais qui fonctionne pour tout le monde
fonctionne pour vba et en formule
VB:
'********************************************
'fonction JOINDRE_TEXTE pour  les versions EXCEL inferieur à 2016
'patricktoulon
' version 1.0
'utilisation en formule:
'=JOINDRE_TEXTE2007(A1:A3;"-")' join plusieurs cellule contigues  de la meme colonne
'=JOINDRE_TEXTE2007(A1:C1;"-")' join plusieurs cellule contigues de la meme ligne
'*******************************************
Function JOINDRE_TEXTE2007(r As Range, Char As String)
Dim Tbl
If r.Rows.Count = 1 Then Tbl = Application.index(r.Value, 1, 0) Else Tbl = Application.Transpose(r)
JOINDRE_TEXTE2007 = Join(Tbl, Char)
End Function

Sub test5()
MsgBox JOINDRE_TEXTE2007([A1:A3], "-")
MsgBox JOINDRE_TEXTE2007([A1:C1], "-")
End Sub
 

patricktoulon

XLDnaute Barbatruc
petit ajout
prise en charge des cellules vides tout en gardant les espace entre mots dans une même cellule
VB:
'********************************************
'fonction JOINDRE_TEXTE pour  les versions EXCEL inferieur à 2016
'patricktoulon
' version 1.0
'utilisation en formule:
'=JOINDRE_TEXTE2007(A1:A3;"-")' join plusieurs cellule contigues  de la meme colonne
'=JOINDRE_TEXTE2007(A1:C1;"-")' join plusieurs cellule contigues de la meme ligne
'*******************************************
Function JOINDRE_TEXTE2007(r As Range, Char As String)
Dim Tbl, T$
If r.Rows.Count = 1 Then Tbl = Application.Index(r.Value, 1, 0) Else Tbl = Application.Transpose(r)
T = Join(Tbl, "|"): T = Replace(T, " ", "*"): T = Application.Trim(Replace(T, "|", " "))
JOINDRE_TEXTE2007 = Replace(Replace(T, " ", Char), "*", " ")
End Function

Sub test5()
MsgBox JOINDRE_TEXTE2007([A1:A8], "-")
MsgBox JOINDRE_TEXTE2007([A1:h1], "-")
End Sub
 

Statistiques des forums

Discussions
312 084
Messages
2 085 194
Membres
102 811
dernier inscrit
caroline29260