[Excel]Séparer des données

Résolu/Fermé
Foreverson Messages postés 231 Date d'inscription vendredi 3 octobre 2008 Statut Membre Dernière intervention 22 juin 2014 - 9 nov. 2010 à 10:54
Foreverson Messages postés 231 Date d'inscription vendredi 3 octobre 2008 Statut Membre Dernière intervention 22 juin 2014 - 10 nov. 2010 à 10:17
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 lundi 19 février 2007 Statut Contributeur Dernière intervention 12 février 2016 139
Modifié par thanassos le 9/11/2010 à 10:59
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 vendredi 3 octobre 2008 Statut Membre Dernière intervention 22 juin 2014 27
9 nov. 2010 à 11:26
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 16589 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 12 janvier 2023 3 289
9 nov. 2010 à 12:27
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 vendredi 3 octobre 2008 Statut Membre Dernière intervention 22 juin 2014 27
10 nov. 2010 à 10:17
Merci à vous pour vos réponses
0