Modifier le format d'une cellule et le generalisé

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.:wink:
edit: il faut aussi détecter si les espaces sont déjà présents si ton script est relancé plusieurs fois.