job75
XLDnaute Barbatruc
Bonjour le forum,
En VBA la fonction Join(sourcearray[, delimiter]) est très performante.
Mais pour l'argument sourcearray il est bien précisé :
Or une plage (colonne ou ligne) comme argument donne toujours un tableau bidimensionnel.
Dans le fichier joint, j'ai résolu le problème de 2 manières :
Ma préférence va bien sûr à la première solution.
Mais connaissez-vous une autre solution, plus simple ?
Merci d'avance.
Nota : c'est grâce à ce fil de Lone-wolf que je me suis posé ce problème :
https://www.excel-downloads.com/thr...nombres-avec-fonctions-personnalisees.163998/
A+
En VBA la fonction Join(sourcearray[, delimiter]) est très performante.
Mais pour l'argument sourcearray il est bien précisé :
Tableau à une dimension contenant les sous-chaînes à joindre
Or une plage (colonne ou ligne) comme argument donne toujours un tableau bidimensionnel.
Dans le fichier joint, j'ai résolu le problème de 2 manières :
Code:
Function Joindre1(Plage)
If Plage.Rows.Count = 1 Then Plage = Application.Transpose(Plage)
Plage = Application.Transpose(Plage)
Joindre1 = Join(Plage, "-")
End Function
Function Joindre2(Plage)
Dim ub&, tablo(), p, n&
Plage = Plage 'crée un tableau à 2 dimensions
ub = Application.Max(UBound(Plage), UBound(Plage, 2))
ReDim tablo(ub - 1) 'tableau à une dimension
For Each p In Plage
tablo(n) = p
n = n + 1
Next
Joindre2 = Join(tablo, "-")
End Function
Mais connaissez-vous une autre solution, plus simple ?
Merci d'avance.
Nota : c'est grâce à ce fil de Lone-wolf que je me suis posé ce problème :
https://www.excel-downloads.com/thr...nombres-avec-fonctions-personnalisees.163998/
A+