1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
|
Option explicit
Sub Valeurs_remplacer()
'Déclaration des variables
Dim sh As Worksheet, Feuille As Worksheet 'Déclarer les feuilles et les utiliser dans des variables est plus rapide qu'un accès dynamique avec leur nom
Dim Tableau() As String 'On a un seul tableau avec les 2 colonnes
Dim inf As Long, sup As Long, i As Long 'inf et sup servent aussi à accélérer le code, i sert à parcourir les cellules/tableaux
Set sh = Sheets("Info.complémentaires") 'On met la feuille la plus utilisée dans une variable afin d'y accéder plus efficacement (vitesse et lisibilité du code)
Application.ScreenUpdating = False 'On empêche l'application de mettre à jour l'affichage (exécution plus rapide)
Application.Calculation = xlCalculationManual 'Idem pour les calculs de formules
With sh 'On indique que tout ce qui commence par " . " appartient à l'objet sh (qui est ta feuille déclarée précédemment)
sup = .Range("A" & Rows.Count).End(xlUp).Row + 1 'On récupère le nombre de valeurs à modifier, qui sera le nombre d'éléments sur lesquels bouclés mais aussi la borne supérieur de tes tableaux
ReDim Preserve Tableau(sup,1) 'Du coup le tableau doit contenir au moins sup ligne et 2 colonnes (la première occurrence est toujours 0)
For i = 0 To sup 'Pour chaque valeur contenue dans ta liste
'On remplit le tableau
Tableau(i,0) = .cells(i + 1, 1).value 'On remplit les tableaux
Tableau(i,1) = .cells(i + 1, 2).value 'Idem
Next i
inf = LBound(Tableau, 1) 'On récupère la borne inférieure de ton tableau
End With
For Each Feuille In Worksheets 'Pour chaque feuille du classeur
If Feuille.Name <> "Info.complémentaires" And Feuille.Name <> "Fiche UF*" Then 'Si son nom est différent de ... (tu as compris) alors
For i = inf To sup 'Pour chaque élément de tes tableaux
Feuille.Cells.Replace Tableau(i,0), Tableau(i,1), xlWhole, xlByRows, false 'Dans la feuille, on remplace comme tu l'as demandé la
'valeur de la colonne de gauche en fait, par la valeur de la colonne de droite, la casse n'est pas respectée
Next i
End If
Next Feuille
'On permet de nouveau la mise à jour de l'affichage et des formules
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub |