Bonjour
Pourrais-tu nous expliquer ce qui fait que dans tel cas, tu ne rajoutes qu'un 0, dans tel autre deux, dans un autre cas encore, une autre possibilité... ? A première vue, je ne vois pas de critère simple, dépend des points, <, /, parenthèses...
@ plus
Bonjour, Benamou39, CISCO
Beaucoup plus compliqué qu'il n'y parait.
Je m'y suis frotté en formules sans succès.
Peut-être VBA, RegExp ???
Function AjoutZero(t$)
Dim nombre%, i%, n%, j%
nombre = 3 'modifiable
t = "." & t
For i = Len(t) To 1 Step -1
n = 0
For j = i To 1 Step -1
If Mid(t, i, 1) = Mid(t, j, 1) Then n = n + 1 Else Exit For
Next
If n = nombre Then t = Application.Replace(t, j + 1, 0, 0)
i = j + 1
Next
AjoutZero = Mid(t, 2)
End Function
Cisco,
-> Devant les trois caractères !
J'ajoute autant de zéro devant les trois caractères qu'il y a de termes en trois caractères (dans la chaîne totale) séparés des
. < / ...
Function AjoutZeroSep(t$)
Dim nombre%, sep$, i%, n%, j%
nombre = 3 'modifiable
sep = ".</()" 'séparateurs
t = "." & t
For i = Len(t) To 1 Step -1
n = 0
For j = i To 1 Step -1
If InStr(sep, Mid(t, j, 1)) Then Exit For Else n = n + 1
Next
If n = nombre Then t = Application.Replace(t, j + 1, 0, 0)
i = j
Next
AjoutZeroSep = Mid(t, 2)
End Function
Function AjoutZeroSep(t$, sep$, nombre%)
Dim i%, n%, j%
t = sep & t
For i = Len(t) To 1 Step -1
n = 0
For j = i To 1 Step -1
If InStr(sep, Mid(t, j, 1)) Then Exit For Else n = n + 1
Next
If n = nombre Then t = Application.Replace(t, j + 1, 0, 0)
i = j
Next
AjoutZeroSep = Mid(t, Len(sep) + 1)
End Function
puist = sep & t
au lieu deAjoutZeroSep = Mid(t, Len(sep) + 1)
J'ai testé, j'ai l'impression d'avoir le même résultat.AjoutZeroSep = t