Bonjour tout le monde,
j’ai un probleme sous excel …j’ai une colonne de caractere du genre xxx-xxxx-xxx-xxxxx-xxxxx et je veux mettre cette colonne sous un autre format comme ceci xxx-xxxx-xxx-xxxxx -xxxxx avec 6 ou 7 espaces entre les 2 derniers chaines de caracteres selon le mot à traiter en cours .j’ai essayé de traiter ce cas sous VBA mais toujours pas de resultat .
merci d’avance pour votre aide
merci de préciser le langage ou l’environnement de developpement ds le titre de ton topic :jap:
Bonjour,
je te passe quelques fonctions de ma composition qui servent à manipuler les String, ça devrais au moins te montrer 2-3 trucs, et tu peux t’en servir telle quelle si elle te sont utile:
Public Function implode(table As Variant, separator As String) As String
' implode a table into as String using the separator
Dim sep As String
Dim element
If Not IsEmpty(table) Then
For Each element In table
implode = implode + sep + CStr(element)
sep = separator
Next
End If
End Function
Public Function splitString(ByVal value As String, ByVal separator As String) As String()
' opposite of implode: explode the string for the given separator
Dim result() As String
ReDim result(0 To 0)
Dim size As Integer
size = 0
Dim prevpos As Integer
Dim pos As Integer
pos = 0
prevpos = 1
Do
pos = InStr(pos + 1, value, separator)
size = size + 1
ReDim Preserve result(size - 1) ' zero indexed
If (pos > 0) Then
result(size - 1) = Mid(value, prevpos, pos - prevpos)
Else
result(size - 1) = Mid(value, prevpos)
End If
prevpos = pos + 1
Loop While (pos > 0)
splitString = result
End Function
La 2ème fonction sépare une String en plusieurs éléments dans un tableau, avec un séparateur paramétré et la première refait le contraire.
Dans ton cas:
tableau = splitString(cell.value,"-")
'renvoie une tableau à 5 éléments
tableau(4)=" "+tableau(4)
'ajoute des espaces au 5ème élément
cell.value = implode(tableau,"-")
' regroupe les éléments séparés par des "-"
et tu boucle avec ça sur toutes les cellules dont tu as besoin.
Tu peux aussi refaire le traitement fait dans les fonctions: recherche de caractères, concaténation, mais pour moi, ça ne gagne pas grand chose par rapport à utiliser des fonction génériques.
edit: il faut aussi détecter si les espaces sont déjà présents si ton script est relancé plusieurs fois.