[Excel]Séparer des données

Résolu
Foreverson Messages postés 231 Date d'inscription   Statut Membre Dernière intervention   -  
Foreverson Messages postés 231 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

je souhaite faire une petite macro, je pense avoir besoin d'utiliser les expressions régulières mais je ne sais pas comment ça marche avec Excel. Voici mon problème :

Soit wi un mot d'au moins 3 lettres. En A1, j'ai une suite comme celle-ci :
w1(1|2|3)(1|2|3)(0|1)w2(1|2|3)(1|2|3)(0|1) etc. jusqu'à w10.

Je souhaiterai obtenir le résultat suivant
Colonne A           Colonne B          Colonne C              Colonne D
   w1                  (1|2|3)          (1|2|3)                (0|1)
   w2                  (1|2|3)          (1|2|3)                (0|1)

pour tous mes w.

Dans un 1er temps, mon idée serait de parcourir le texte de la cellule A1, et dès que l'on trouve un chiffre (1|2|3), on avance de 2 caractères, on copie le texte depuis ce caractère jusqu'à la fin du texte que l'on coupe/colle en A2 et ainsi de suite.

2 détails :
-je ne connais pas bien le code VBA
-je ne sais pas utiliser les Regex dans Excel

Toute autre idée sera bien entendu la bienvenue.
Merci d'avance !
A voir également:

4 réponses

thanassos Messages postés 1706 Date d'inscription   Statut Contributeur Dernière intervention   137
 
Bonjour,
J'ai une solution qui peut paraître un peu tordue :
Dans rechercher et remplacer tu remplace tout les ( par ,( ensuite tu sélectionnes toutes tes données, tu vas dans données > convertir , délimité et tu selectionne virgule et tu fais terminer.
ça devrai fonctionner si j'ai pas fait d'erreur.
Wake me, when you need me ...
0
Foreverson Messages postés 231 Date d'inscription   Statut Membre Dernière intervention   27
 
Je vois ce que tu veux dire mais mes parenthèses sont fictives, c'est une écriture Regex, elles n'existent pas vraiment, elles sont là pour illustrer un "groupe".

Dans A1, je peux avoir une chaîne du style toto111titi210tutu330 et le but est donc d'obtenir, dans un premier temps

toto111
titi210
tutu330

puis dans un second temps

toto 1 1 1
titi 2 1 0
tutu 3 3 0
ce qui devrait poser moins de problèmes.

Merci de ta réponse, dans l'idée, je suis d'accord avec toi. Eventuellement, je pourrai appliquer cela, remplacer 0 par 0; 1 par 1; etc. mais ça fait faire pas mal de remplacements sans compter qu'il est possible d'avoir quelques cas particuliers dans lesquels ça ne marchera pas.

Je garde cette solution sous le coude, mais si d'autres ont des idées, n'hésitez pas.
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
Bonjour

avec un chouia de VBA

restitution à partir de A10 à adapter éventuellement

Sub separer_par_wx()
Dim lig As Byte, cptr As Byte
Dim tampon() As String
tampon = Split(Range("A1"), "w")
lig = 10
For cptr = 1 To UBound(tampon)
    texto = "w" & tampon(cptr)
    Cells(lig, 1) = texto
    Cells(lig, 1).Parse "[**][**************][*****]", Cells(lig, 1)
    lig = lig + 1
Next

End Sub

0
Foreverson Messages postés 231 Date d'inscription   Statut Membre Dernière intervention   27
 
Merci à vous pour vos réponses
0