Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

homepyrof53

XLDnaute Occasionnel
Bonjour,

Je voudrais écrire une pattern pour regexp, mais je bloque
Voici mon problème
J'ai une chaine de caractère (issu d'une base internet) qui a la structure suivante :
- une date exemple 22/11/2011
- suivi d'un chaine de caractère


Ceci plusieurs fois sans caractère séparateur

22/11/2011 action_1 23/11/2011 action_2 25/11/2011 Noel .......

Je voudrais séparer pour chaque date
pattern =([0-9][0-9]/[0-9][0-9]/20[0-9][0-9]).*

Dans ce cas il ne s’arrête pas à la seconde date


Merci de votre aide
 
Re : Aide sur les regexp

Bonjour Homepyrof53 🙂,
C'est normal vu que RegExp prends toujours la chaine la plus longue qu'il peux trouver 🙄...
Après, c'est un peu difficile sur un échantillon aussi court, à priori tu as seulement 2 espaces (pas d'espace dans le texte Action). Ce devrait être utilisable si c'est le cas. Par contre je ne vois pas le rôle de tes parenthèses 😱...
Je te proposerais
Code:
[0-3]\d/[0-1]\d/20\d\d [^ ]*
\d étant un chiffre et [^ ] tout sauf un espace 😛...
Bon courage 😎
 
Re : Aide sur les regexp

Bonjour,
merci de placer un petit fichier exemple comportant quelques données et d'inscrire manuellement le résultat attendu à côté avec quelques explications supplémentaires si besoin.
A+
Edit : bonjour Jean-Noël, apparemment toi tu as compris😱
 
Re : Aide sur les regexp

Merci de vos réponses

Je continue à chercher et je viens de trouver :

([0-9][0-9]/[0-9][0-9]/20[0-9][0-9])(.)*?(\d+,\d\d)

C'est le ? qui fait que ça s'arrête à la première occurrence

Voila la chaine exactement:

02/01/2012* * Action * 22,00 19/12/2011* * Action * 45,00 12/12/2011* * Action * 22,00 02/12/2011* * Action * 6,90 30/11/2011* * Action * 6,90 25/11/2011* * Action * 2,81

que je veux transformer en
date - nom de l'action - montant

Le fait de mettre des élements entre parenthèse me permet de récupérer les valeurs

Merci
 
Re : Aide sur les regexp

Re
Bravo si tu as trouvé.
Cela est dû au fait que les quantificateurs vont chercher par défaut l'occurrence la plus grande. L'utilisation du "?" permet de trouver la 1ère occurrence conforme à ton pattern (voir ici notamment).

Si vous souhaitez que les quantificateurs cessent de chercher l'occurrence la plus longue, et se bornent à la première séquence conforme, il vous faut remplacer les versions gourmandes * et + par leurs équivalents non gourmands *? et +?
A+
 
Dernière édition:
Re : Aide sur les regexp

Bonsoir,

Pour obtenir toutes les occurences

Code:
Function Extrait(c, n)
  Application.Volatile
  Set obj = CreateObject("vbscript.regexp")
  obj.Global = True
  obj.Pattern = "[0-3][0-9]/[0-1][0-9]/20[0-9]{2}\* \* Action \* \d+,\d{2}"
  Set a = obj.Execute(c)
  If a.Count > 0 And n <= a.Count Then Extrait = a(n - 1) Else Extrait = ""
End Function

JB
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
887
L
Réponses
9
Affichages
1 K
D
Réponses
4
Affichages
1 K
  • Question Question
Microsoft 365 Programme trop lent
Réponses
12
Affichages
1 K
S
Réponses
13
Affichages
2 K
Stedemart
S
A
Réponses
25
Affichages
5 K
Angelzeus
A
V
Réponses
0
Affichages
7 K
Vanhoove
V
N
Réponses
5
Affichages
3 K
Nicocotte125
N
M
Réponses
2
Affichages
1 K
max3134
M
Retour