Traitement vba trop lent ?? [VB .NET] - VB/VBA/VBS - Programmation
Marsh Posté le 29-01-2004 à 15:07:57
Alors je viens de trouver, ça va bien 4x plus vite...
Voici mon code :
|
Je me demande maintenant s'il n'y a pas moyen d'encore optimiser cela... (pas moyen de passer outre le replace ??? Si je mets le surlignage simplement sur le find, ça ne marche pas )
Et comment changer la couleur du surlignage ??? Parce que la propriété highlightcolorindex dépend de Range, et si je la modifie, tout le texte est alors surligné o_O
Marsh Posté le 29-01-2004 à 12:36:20
Bonjour !
Alors voici mon problème : il s'avère que je dois effectuer une recherche de termes spécifiques dans un document rtf en "automatisant" Word ; les termes trouvés doivent être surlignés. Le problème est que le nombre de termes (stockés dans une hashtable) peut être particulièrement important et au final, je me rends compte que le traitement devient particulièrement lent.
j'utilise du vba directement intégré dans VB .NET et je pense que c'est à cela qu'est dû la lenteur... Voici mon code :
Dim oW As Word.Application = New Word.Application
Dim oWDoc As Word.Documents = oW.Documents
Dim d As DictionaryEntry
oWDoc.Open(path)
For Each d In hash_bdd
temp = Split(d.Value, ";", 3, CompareMethod.Text)
With oWDoc.Application.ActiveDocument.Range.Find
.ClearFormatting()
.Text = temp(0) 'Texte recherché
.MatchWholeWord = True 'On cherche l'expression exacte
.Highlight = False
With .Replacement 'On définit les params de remplacement
.ClearFormatting()
.Text = temp(0) 'Le texte n'est pas remplacé, donc on garde le même terme
.Highlight = True 'Mais on le surligne !
End With
.Execute(Replace:=Word.WdReplace.wdReplaceAll, Format:=True)
End With
Next d
Voilou. Alors ma question serait de savoir s'il n'y a pas moyen d'utiliser des fonctions proprement internes à VB .NET (contenues dans le composant Microsoft Word 9.0 Object Library, par exemple) et qui seraient peut-être bcp plus efficaces que les fonctions utilisées par le biais de vba...
Voilà si qqun peut m'éclairer, merci bcp !
---------------
Sans ma barbe, quelle barbe !