Séparer un texte lorsqu'il reconnait une chaine de caractères

Bonjour à tous,

Je souhaite créer une macro qui permet de séparer un texte et de l'insérer dans une nouvelle ligne en dessous.

Exemple :

DOC123DOC4567DOC789

Cela doit donner :

DOC123

DOC4567

DOC789

Mon problème est que les mots ne font pas la même longueur (soit 6 ou 7 de longueur)

Le seul élément qui peut les distinguer est qu'ils commencent tous par DOC

Merci de votre aide

Inès

Bonsoir Inesbch,

Recherche par ta macro le 1ier DOC en tant que terme puis juste après le 2ème DOC

Donc au début cela va donner l'emplacement du 1ier DOC soit 1, puis ensuite l'emplacement du 2ième, soit 7

Tu conserveras pour le premier (donc 7-1) = les 6 premiers caractères. Ici DOC123.

Après il faut partir du 7+1 = 8 caractères pour chercher le 3ième DOC. Soit 14.

Idem faire la différence entre 14 et 7, soit 7. Donc ton 2ième DOC partira du 7ième caractère et ira jusqu'au 13ième caractère (14-1).Donc DOC4567.

Et recommencer tant que l'on trouvera un DOC plus loin.

Si souci pour la macro, fais un retour

Bonsoir,

Sinon avec Power Query tu peux faire ça facilement, sans passer par macro. Mais si tu disposes d'excel 2010 il te faudra le télécharger ce Power Query

A nouveau,

Voir ci-dessous un exemple de code VBA pour ton besoin.

Le texte à décomposer est placé en cellule A1.

Puis après lancement de la macro les lignes en dessous de la cellule A1 reçoivent les textes séparés.

Sub Sépare()
Range("A1") = Range("A1") & "DOC"
Lg = Len(Range("A1"))
T = 1
Tourne:
Two = InStr(Mid(Range("A1"), 2, Lg), "DOC")
If Two = 0 Then Range("A1") = "": Exit Sub
Terme = Mid(Range("A1"), 1, Two)
Lg = Lg - Two + 1
Range("A1") = Mid(Range("A1"), Two + 1, Lg)
T = T + 1
Range("A" & T) = Terme
GoTo Tourne
End Sub

Une autre solution est de "splitter" le Texte avec DOC comme séparateur

Sub Autre()
Dim Sep As Variant
Sep = Split([A1], "DOC")
Fin = Ubound(Sep)
For T = 1 To Fin
Mot = "DOC" & Sep(T)
Range("A" & T + 1) = Mot
Next T
End Sub

Merci pour vos réponses, je vais tester vos solutions :)

Bonjour,

Je propose quand même ma solution Power Query si cela peut servir à d'autre

4testinesbch.xlsx (17.43 Ko)
Rechercher des sujets similaires à "separer texte lorsqu reconnait chaine caracteres"