Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1490 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VB .NET] Traitement vba trop lent ??

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[VB .NET] Traitement vba trop lent ??

n°624795
Corbier
Barbe's powaaa
Posté le 29-01-2004 à 12:36:20  profilanswer
 

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 !
 :hello:


---------------
Sans ma barbe, quelle barbe !
mood
Publicité
Posté le 29-01-2004 à 12:36:20  profilanswer
 

n°624953
Corbier
Barbe's powaaa
Posté le 29-01-2004 à 15:07:57  profilanswer
 

Alors je viens de trouver, ça va bien 4x plus vite...
Voici mon code :


        For Each d In hash_bdd
            temp = Split(d.Value, ";", 3, CompareMethod.Text)
 
            wordRange.Find.ClearFormatting()
            wordRange.Find.Text = temp(0)
            wordRange.Find.MatchWholeWord = True
            wordRange.Find.Replacement.Highlight = True
            wordRange.Find.Execute(, , , , , , , , , , replaceAll, , , , )
        Next d


 
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


---------------
Sans ma barbe, quelle barbe !

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VB .NET] Traitement vba trop lent ??

 

Sujets relatifs
[NuKed/ PHP] Insertion d'un Block pour écouter une Radio Net en Live[VB .NET] Optimisation de grosses boucles...
Logiciel grand public fait en .NET? vous en connaissez?visual studio .NET.... combien de CDs ?
Meilleure solution pour se connecter à MySQL avec C# .NETInstallation .NET OracleClient OCI
migration en .Net[VBA] Comment déclencher le traitement à la sortie d'une cellule
MFC et .NET[ASP.NET] newsletter à 10000 personnes en .Net, possible ?
Plus de sujets relatifs à : [VB .NET] Traitement vba trop lent ??


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR