Injection d'espace dans une chaîne de caractère

Bonjour à tous,

Je me permets de poster sur ce forum une requête dans le cadre de mon apprentissage du langage Visual Basics.

Je dispose d'un fichier Excel dans lequel figure une suite de repère fonctionnels, pour un traitement d'information je souhaiterai mettre les données de cette colonne sous la même forme. Une partie des données figurent sous la forme que je souhaite atteindre càd : (C = chiffre ; L = lettre) : "C LLL CCC LL" (en tenant compte des espaces) et une autre est sous la forme "CLLLCCCLL" ; l'objectif je que souhaiterai atteindre consiste dans un premier temps à différencier les cellules ayant la bonne mise en forme des cellules ayant la mauvaise (sans espace) : pour se faire je pensais passer par la longueur de la chaîne de caractère. Puis d'injecter dans ces cellules un espace aux intervalles définis dans l'exemple ci-dessus.

J'ai effectué une large recherche sur le WEB sans parvenir à trouver plus d'information, le seul algorithme que j'ai trouvé permet d'injecter un espace avec un pas de 1 mais pas avec un pas variable comme dans mon cas.

En vous remerciant par avance de l'attention portée à ma requête, et en vous souhaitant une agréable journée.

Cordialement.

Bonjour, un fichier exemple représentatif des données sur lesquels on pourra trouver différentes écritures serait utile.

7exemple.xlsm (9.16 Ko)

Si le format est toujours du même nombre de caractères alors vous pouvez utiliser une formule afin d'obtenir une colonne avec

un format unique : "C LLL CCC LL"

=SI(NBCAR(A2)=9;STXT(A2;1;1)&" "&STXT(A2;2;3)&" "&STXT(A2;5;3)&" "&STXT(A2;6;2);A2)

Re-Bonjour,

J'ai déjà pensé à réaliser une formule. Néanmoins, je pensais passer par une macro sous VBA car les volumes d'information à traiter son importants ~950 000/2M de références dans une dizaine de classeurs différents. De plus, je souhaiterai injecter mon résultat dans la même cellule (de manière à ne pas modifier la structure d'origine de mon tableau) car d'autres macro sont déjà existantes dans ces classeur (je ne souhaite aucune interférence dans l'exécution de ces macro), or créer une formule dans une cellule faisant référence à elle-même induit une erreur dans l'exécution de celle-ci, voilà pourquoi je me suis refusé à passer par cette méthode.

Merci tout de même pour la promptitude de votre démarche.

bonjour,

Cette macro devrait faire ton affaire :

Sub Galopin()
Dim Arr, i&, S$
Arr = [A1].CurrentRegion.Value
For i = 2 To UBound(Arr)
   S = Arr(i, 1)
   If Len(S) = 9 Then
   Arr(i, 1) = Left(S, 1) & " " & Mid(S, 2, 3) & " " & Mid(S, 5, 3) & " " & Mid(S, 8)
   End If
Next
[A1].CurrentRegion = Arr
End Sub

A+

C'est parfait !

Merci pour vos retours.

Je vous souhaite une agréable journée.

Rechercher des sujets similaires à "injection espace chaine caractere"