Selection.Find un nombre quelconque

Messages postés
44
Date d'inscription
mardi 6 décembre 2005
Statut
Membre
Dernière intervention
25 avril 2019
- - Dernière réponse : Whismeril
Messages postés
13285
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
18 mai 2019
- 25 avril 2019 à 14:37
Bonjour,

Dans un fichier Word de plusieurs milliers de paragraphes, il y en a plusieurs centaines "formatés" ainsi :
<nombre>¶
Par exemple :

ou
59¶
ou encore
1754¶
Je voudrais trouver la syntaxe correcte pour trouver <nombre>¶
Quand je fais :
With Selection.Find
.MatchWildcards = True
.Text = ("[0-9]" & Chr(13))
.Execute
End With
je ne trouve qu'un chiffre devant ¶. Ce qui peut arriver ailleurs que dans les paragraphes recherchés. Comme :
Je vous apporte les 12¶
où mon code sélectionne 2¶, ce qui ne me convient pas.

A votre avis, quel ".Text =" faut-il écrire pour ne trouver que les paragraphes <nombre>¶ ?
Merci de votre aide.

--
Afficher la suite 

Votre réponse

3 réponses

Messages postés
13285
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
18 mai 2019
358
0
Merci
Bonjour
Il y a bien longtemps que je n’ai pas fait de VBA, mais je dirais que tu as 2 options:
  • l’operateur like
  • utliser une Regex

Commenter la réponse de Whismeril
Messages postés
44
Date d'inscription
mardi 6 décembre 2005
Statut
Membre
Dernière intervention
25 avril 2019
0
Merci
Bonjour,
Je réponds avec un peu de retard, vacances de Pâques obligent...
Merci Whismeril pour ton intervention. Je connaissais "like" mais pas les "RegExp" que tu m'as fait découvrir. Un sacré outil que je n'oublierai pas.
Mais ça ne résout pas mon problème. Avant de poser ma question, je savais trouver mes fameux paragraphes "nombre¶" mais au prix d'un For each para in ActiveDocument.Paragraphs ... Next para. Sur plusieurs milliers de paragraphes, c'est très long en temps. Mon idée était de passer par Selection.Find car cette fonction est quasiment instantanée, même si le texte recherché est très loin dans le document.
Mon souci est donc de trouver une syntaxe adéquate à Selection.Find.Text =
Si on pouvait y mettre une RegExp, ce serait magique. Mais hélas, comme pour Like, les comparaisons doivent se faire une à une et c'est très long. On retombe inexorablement dans un For each para.

En résumé, j'arrive à ce que je veux faire mais je n'arrive pas à améliorer mon code en rapidité.
Tant pis...

--
Commenter la réponse de cs_Apolinaire
Messages postés
13285
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
18 mai 2019
358
0
Merci
Bonjour
Si tu peux charger tout le texte dans une string, alors le traitement par regex est très rapide.
Commenter la réponse de Whismeril

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.