Problème avec .find - VB/VBA/VBS - Programmation
Marsh Posté le 09-08-2006 à 11:14:03
Bizarre en effet... Mais find() c'est pas super super comme fonction.
Tu as regardé ce topic : http://forum.hardware.fr/hardwaref [...] 3792-1.htm ?
Regardes mon dernier post dessus, ça peut être utile.
Marsh Posté le 09-08-2006 à 11:56:51
je viens de trouver le problème ct tout con....Bon mtnt autre question (ms je vais créer un nouveau message)
Je veux remplacer des mots et pour cela je fais une boucle While..et j'ai rien trouvé de bien pour m'arrêter.While i <> ActiveDocument.Words.Count n'est pas efficace car il y a trop de mots ds mon document.Il faudrait un truc du genre While (!EOF) ms ça n'existe pas en VB.
T'as une idée?
Marsh Posté le 09-08-2006 à 13:26:41
Un peu en retard mais inspiré du Delete Crochets si cela peut rendre service
|
Marsh Posté le 09-08-2006 à 14:15:42
merci ms je vais mieux t'expliquer mon problème...
Je te montre mon code je pense que c plus rapide au niveau exécution:
Sub add_ID(ref As Integer)
Selection.Find.ClearFormatting
reference = ref
With Selection.Find
While i <> ActiveDocument.Words.Count
.Forward = True
.ClearFormatting
.MatchWholeWord = True
.MatchCase = False
.Wrap = wdFindStop
.Execute FindText:="&&"
If Selection.text = "&&" Then
Selection.Delete
Selection.InsertBefore ("[" & reference & "]" )
Selection.Style = "monStyle"
Selection.Font.Color = wdColorRed
Selection.Font.Underline = wdUnderlineNone
Selection.Font.Bold = True
reference = reference + 1
End If
i = i + 1
refTotal = reference - 1
Wend
End With
End Sub
ça ça marche, mon problème est de le modifier pour que la boucle s'arrête dès qu'il n'y a plus rien à remplacer.
Marsh Posté le 09-08-2006 à 16:10:48
Eh bien au niveau temps y'a pas photo : sur un doc bidon de 94 pages le mien : 0.6 s, ton code 19 s,sans compter qu'il ne fonctionne pas correctement
Marsh Posté le 09-08-2006 à 16:37:55
Maintenant les temps sont comparables et ton code fonctionne correctement, reste peut etre à l'optimiser
|
Marsh Posté le 09-08-2006 à 16:50:11
Alors là....chapeau!!!
Je te remercie vraiment...tu me donne de quoi bien terminer ma journée!!!
Merci beaucoup!
Marsh Posté le 09-08-2006 à 16:54:06
Bon là je viens de tester et retester sur des gros fichiers et je me dois de te re-remercier!!!
C'est là qu'on voit les pros qd même!!!
Merci!
Marsh Posté le 09-08-2006 à 16:55:54
Je viens de rajouter après ton post dans le code un :
|
après le 1er .execute
|
Marsh Posté le 09-08-2006 à 09:40:50
Bonjour,
J'ai un problème avec le find...je m'explique je voudrais simplement remplacer ds un texte la suite de caractère "&&" par un nombre [1] puis [2]....et c'est ça le problème j'incrémente un compteur et je dois remplacer la cha9ne de caractère par un nombre différent à chaque fois.
Le problème c'est que mon code me remplace bien les "&&" avec un nombre qui s'incrémente ms c pas ds l'ordre, par exemple le 2 premiers serotn 1 et 2 puis ça va de 2 en 2, donc le 4 eme à la valeur 3 etc..enfin c'est n'impoorte quoi!!
Si vous avez déjà rencontré ce problème...please give me a solution!!!
Merci