Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…