Remplacer mots dans une plage

Chris57

XLDnaute Occasionnel
Bonjour à tous

j'ai une plage nommée newPLAGE qui contient des textes divers

je souhaite remplacer certains mots de cette plage par d'autres et ces mots sont situés dans 2 autres plages : exLISTEmots et newLISTEmots

voici la macro que j'ai écrite pour ça mais c'est très très long car la newPLAGE contient 1800 lignes
Code:
            For Each x In newPLAGE
            For Each y In exLISTEmots
            For Each Z In newLISTEmots
                If x <> "" And y <> "" Then                  
                    x = Replace(x, y, z)
                End If
            Next
            Next
            Next

y a t'il moyen d'accélérer ce genre de procédure ?
 

Chris57

XLDnaute Occasionnel
Re : Remplacer mots dans une plage

Oui c'est vrai ! Voici un classeur avec la macro que j'ai mise plus haut

la durée d’exécution est hallucinante !

Par contre je n'y arrive pas avec la méthode Array ...
 

Pièces jointes

  • Deduct_Deck2.xls
    215.5 KB · Affichages: 45

Staple1600

XLDnaute Barbatruc
Re : Remplacer mots dans une plage

Bonjour à tous


Sur mon propre fichier de test, cela fonctionne
(Mais j'ai testé avec des données très basiques)
Donc une macro qui emploi des Arrays
(on pourrait aussi traiter la chose avec un Dictionnary)

Code:
Sub remplacer()
Dim ta, tb, r As Range, i As Byte
Set r = Feuil1.Columns(1).SpecialCells(xlCellTypeConstants, 2)
ta = Sheets("Words").Range("B4:B20").Value: tb = Sheets("Words").Range("C4:C20").Value
For i = LBound(ta) To UBound(ta)
r.Replace What:=ta(i, 1), Replacement:=tb(i, 1)
Next i
End Sub
 

Chris57

XLDnaute Occasionnel
Re : Remplacer mots dans une plage

Merci Staple !!! La durée d’exécution est passée de 250 sec avec mon premier code à 13 seconde avec un autre code optimisé que j'avais fait entre temps à maintenant 0,6 sec avec ton code !!

de la balle !!!!


MERCI !
 

Staple1600

XLDnaute Barbatruc
Re : Remplacer mots dans une plage

Re

Chris57
Ce qui serait bien, c'est que tu postes ton dernier code VBA optimisé, non ?
1) pour satisfaire ma curiosité
2) pour les autres membres du forum que cela pourrait intéresser.
3) parce que c'est le principe de base d'un forum: le partage des connaissances
 

Chris57

XLDnaute Occasionnel
Re : Remplacer mots dans une plage

ah tu parles du code "intermédiaire" ! Je l'ai effacé, il n'avait aucun intérêt vu que le tiens est 20 fois plus rapide !
J'avais juste remplacé les for each par des for i, rien de bien innovant !
 

Discussions similaires

Réponses
2
Affichages
154

Statistiques des forums

Discussions
312 330
Messages
2 087 335
Membres
103 523
dernier inscrit
mounir2025