XL 2010 Boucle pour remplacer la valeur d'une cellule par la valeur d'une table de correspondance

Mak_tarmak

XLDnaute Junior
Bonjour,
Je commence à m'intéresser aux macros vba et je cherche à optimiser une macro que j'ai enregistré.
Dans le fichier ci-joint il y a l'onglet tableau qui contient des salles dont il faut épurer le nom grâce à la table de correspondance qui se trouve dans l'onglet salles.
Les noms corrects se trouvent dans la colonne B de ce dernier onglet.
La macro "remplacerSalles" fonctionne mais est trop longue. Je cherche donc à l'optimiser.
Pourriez-vous me conseiller sur la boucle à utiliser ? et comment gérer les erreurs quand une salle ne se trouve pas la liste à remplacer dans l'onglet tableau ?
Merci pour votre aide,
 

Pièces jointes

  • Boucle_SALLES .xlsm
    44.2 KB · Affichages: 18
Solution
Re Mak_tarmak, bonjour Bruno

Sinon, en plus optimisé, celle la est encore quatre fois plus rapide, 4 centièmes de secondes sur 10000 valeurs, avec une seule passe par replace mais il faut rester dans la limite de transpose de 65536 valeurs max à modifier, ce qui laisse quand même de la marge.

Bien cordialement, @+
VB:
Sub remplacerSalles3()
Dim Tablo, Tablo2, y&
With Sheets("Salles")
    Tablo = .Range("A2:B" & .Range("A65536").End(xlUp).Row).Value2
End With
With Sheets("tableau")
    Tablo2 = Join(Application.Transpose(.Range("A2:A" & .Range("A65536").End(xlUp).Row).Value2), "|")
End With
For y = LBound(Tablo, 1) To UBound(Tablo, 1)
    Tablo2 = Replace(Tablo2, Tablo(y, 1), Tablo(y, 2))
Next y
With Sheets("tableau")
    .Range("A2:A"...

Discussions similaires

Statistiques des forums

Discussions
315 093
Messages
2 116 137
Membres
112 668
dernier inscrit
foyoman