Sub Bus()
a = [b2]
b = Split(a)
For i = 0 To UBound(b)
c = c & b(i) & i + 1
Next
MsgBox Left(c, Len(c) - 2)
End Sub
J'ai commencé à la cellule B2
Au lieu d'avoir un MsgBox, on peut avoir le résultat dans une cellule à droite de chaque cellule col B traitée par exemple en col D ?
La même, mais transformée en fonction personnalisée
VB:
Function outtaspace(r As Range)
Dim i As Byte
b = Split(r.Value2)
For i = 0 To UBound(b)
c = c & b(i) & i + 1
Next
outtaspace = Left(c, Len(c) - 2)
End Function
A utiliser de la sorte
Si on en A1: aaa bbb ccc ddd eee fff
alors en B1, saisir =outtaspace(A1)
Je laisse les formulistes proposer la formule qui se passera de VBA.
Function EspaceNombre(ByVal x) As String
Dim n&, i&
For i = 1 To Len(x)
If Mid(x, i, 1) = " " Then n = n + 1: x = Replace(x, " ", n, , 1)
ext i
EspaceNombre = x
End Function
Ce sera un peu mieux comme ceci (mais jusqu'à un certain point)
VB:
Function outtaspace(r As Range)
Dim i As Byte
b = Split(VBA.Trim(r.Value2))
For i = 0 To UBound(b)
c = c & b(i) & i + 1
Next
outtaspace = Left(c, Len(c) - 1)
End Function
Ce sera un peu mieux comme ceci (mais jusqu'à un certain point)
VB:
Function outtaspace(r As Range)
Dim i As Byte
b = Split(VBA.Trim(r.Value2))
For i = 0 To UBound(b)
c = c & b(i) & i + 1
Next
outtaspace = Left(c, Len(c) - 1)
End Function