VBA: Accélération du traitement du For Next (recherche et changement de texte)

jcdffr

XLDnaute Nouveau
Bonjour tout le monde,

J’ai un code qui recherche dans une plage tous les accents et les remplaces par la même lettre sans accents, voir remplacer les caractères spéciaux par une espace.

Ce code fonctionne très bien mais je me demandais s’il y aurait une façon plus rapide d'effectuer cette manipulation car le traitement me semble très lent. Mon LastRow = 1100 max.
Je note que ces calculs se font par le processeur.

Début Code -----------------

Const Accents As String = "àâäåéèêëîïôöùûüÈÉÊËÀÁÂÃÄÅÙÚÛÜ-_"
Const Normaux As String = "aaaaeeeeiioouuuEEEEAAAAAAUUUU "
Dim c As Range, ai As Byte

For Each c In Range("K2:K" & LastRow)
For ai = 1 To Len(Accents)
c.Value = Replace(c.Value, Mid(Accents, ai, 1), Mid(Normaux, ai, 1))
Next ai
Next c


Fin Code -----------------

K contient le nom et prénoms d'une personne

merci d'avance pour votre aide :)
 

pierrejean

XLDnaute Barbatruc
Re : VBA: Accélération du traitement du For Next (recherche et changement de texte)

Bonjour jcdffr

A tester:
Code:
Sub change()
LastRow = ...
Accents = Array("à,â,ä,å,é,è,ê,ë,î,ï,ô,ö,ù,û,ü,È,É,Ê,Ë,À,Á,Â,Ã,Ä,Å,Ù,Ú,Û,Ü,-,_")
Normaux = Array("a,a,a,a,e,e,e,e,i,i,o,o,u,u,u,E,E,E,E,A,A,A,A,A,U,U,U,U, ")
Dim c As Range, ai As Byte
For Each c In Range("K2:K" & LastRow)
For ai = LBound(Accents) To UBound(Accents)
 c.Value = Replace(c, Accents(ai), Normaux(ai))
Next ai
Next c
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 368
Messages
2 087 670
Membres
103 633
dernier inscrit
Surfer