Madvin
Messages postés123Date d'inscriptionmardi 5 août 2003StatutMembreDernière intervention26 août 2012
-
6 juin 2007 à 15:44
drikce06
Messages postés2236Date d'inscriptionlundi 29 mai 2006StatutMembreDernière intervention29 mai 2008
-
7 juin 2007 à 16:05
Bonjour à tous,
Je n'ai jamais fait de VBA sous Word et je ne trouve pas exactement ce que je recherche sur le net. C'est sous Word 2000 plus précisément.
Est-ce que quelqu'un saurait par hasard comment faire par macro, avec une méthode simple si possible, pour :
1) Rechercher toutes les occurrences dans un fichier WORD vérifiant l'expression régulière <> avec * n'importe quelle chaîne de caractères.
2) Ajouter dans le document après chacune des occurences trouvées : saut de ligne + "B_" + la chaîne de caractères correspondant à *.
Pour info, les occurences recherchées peuvent se trouver dans des tableaux.
De plus, est-ce que quelqu'un sait où trouver la documentation officielle pour le VBA sur le net ? J'ai eu beau parcourir dans tous les sens le site de Microsoft je ne trouve pas.
Ou alors éventuellement un site bien fichu à ce sujet. Si vous avez je suis preneur.
Merci beaucoup.
Si vous pouviez me donner un coup de pouce ce ne serait pas de refus.
Madvin
Messages postés123Date d'inscriptionmardi 5 août 2003StatutMembreDernière intervention26 août 20123 7 juin 2007 à 15:59
Bon ben finalement j'ai réussi !!
Mais c'était franchement laborieux !!!
Côté documentation c'est vraiment pas le top !!
Bon la macro est vraiment basique et bourrée de bidouillages, mais elle peut être améliorée.
La voici donc pour ceux que cela intéresse :
Sub MyMacro()
Dim newExpr As String
' Deplacement du curseur en debut de document
Selection.Start = ActiveDocument.Content.Start
Selection.End = ActiveDocument.Content.Start
'Proprietes de la recherche a effectuer
With Selection.Find
.ClearFormatting
.Text = "(\<\\>)" 'Expression régulière : on recherche les <> avec * une chaîne quelconque
.Forward = True
.Wrap = wdFindStop 'On arrête la recherche à la fin du document
.MatchWildcards = True 'Pour accepter les recherches avec expressions régulières
End With
'Ajout de la nouvelle expression pour chaque occurrence trouvée
While Selection.Find.Execute
Madvin
Messages postés123Date d'inscriptionmardi 5 août 2003StatutMembreDernière intervention26 août 20123 7 juin 2007 à 10:50
Merci pour ta réponse fiko81 mais c'est pas exactement ce que je veux faire.
Je veux ajouter dans le document après toutes les expressions au format "<>" avec * n'importe quelle chaine autre que "<<" et ">>", l'expression "B_*" avec * la même chaîne que dans l'expression recherchée.
Ex :
Si mon fichier contient ça :
<>
<> (dans une cellule d'un tableau)
Je veux obtenir ça :
<>
B_123456_abcd
<> | <- Dans la même cellule du
B_xyz123_lmnop_99 | <- tableau
J'ai pas mal avancé. Hier j'arrivais à le faire pour la première occurrence trouvée, mais depuis ce matin j'essaye de le réitérer pour tous, mais ça ne marche pas... Et j'arrive même plus à le faire marcher pour la première occurrence depuis.
Pour info voici où j'en suis pour l'instant :
Dim newExpr As String
With Selection.Find
.ClearFormatting
.Text = "\<\\>"
.Forward = True
.Wrap = wdFindContinue
End With
Mais ça ne marche pas, il ne se passe rien.
Et si j'enlève la boucle While, ça m'ajoute B à l'emplacement du curseur : c'est à dire qu'il ne trouve pas et ne sélectionne pas la première occurrence trouvée correspondant à l 'expression régulière, alors que hier ça marchait... Pourquoi ????
Franchement c'est honteux de voir aussi peu de documentation. Et en plus ce n'est pas vraiment de la documentation, mais toujours les mêmes exemples basiques. Rien de bien complet et clair sur la fonction des différents objets et méthodes existantes.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Madvin
Messages postés123Date d'inscriptionmardi 5 août 2003StatutMembreDernière intervention26 août 20123 7 juin 2007 à 11:02
C'est bizarre... En faisant une exécution pas à pas, je remarque que le code passe directement de la ligne "While" à la suite sans passer par "Wend". =/ Comment ça se fait ?
drikce06
Messages postés2236Date d'inscriptionlundi 29 mai 2006StatutMembreDernière intervention29 mai 200810 7 juin 2007 à 16:05
Tu pourrais en faire un snippet "Parcourir un fichier word et remplacer une occurence", ce serai sympa et voir déposer également le code sur le forum de mortalino (voir ma signature) dans la section Word (proposition de code). Ce serai sympa et pourrai servir à quelqu'un.
@+.