Bonjour,
Pour corriger automatiquement des cellules, j'utilise ce code là :
Dim lrdic&, lrco&, t&, j&, p&
Dim dic As Worksheet, co As Worksheet
Dim N%
Dim d() As String
Set dic = Worksheets("Bibliothèque")
Set co = Worksheets("Correspondances")
With dic
lrdic = .Cells(.Rows.Count, 1).End(xlUp).Row ' compte le nombres de lignes utilisées dans table
ReDim Preserve d(2, lrdic + 1) ' défini un tableau à 2 dimensions (2 , Nb de lignes)
For p = 1 To lrdic
d(1, p) = .Cells(p, 1).Value 'boucle qui charge dans le tableau les anciens codes et les nouveaux
d(2, p) = .Cells(p, 2).Value
Next p
End With
With co
lrco = .Cells(.Rows.Count, 1).End(xlUp).Row ' compte le nombre de lignes utilisées dans base
For t = 1 To lrco ' boucle sur nombre de lignes de base
For j = 1 To lrdic ' boucle sur nombre de lignes de table
If d(1, j) = .Cells(t, 3).Value Then _
.Cells(t, 3).Value = d(2, j) ' compare la valeur ancienne du tableau avec le contenu de la cellule colonne a de base
Next j ' change la valeur si la comparaison est vrai
Next t
.Activate
End With
Il fonctionne bien, mais il tiens compte de la casse, ce qui pose des problème.
Je viens poser la question ici, afin de savoir s'il est possible ou pas de ne pas tenir compte de la casse.
Si ça n'est pas possible, alors il faudra que je m'assure que chaque cellule commence par une majuscule.
Dans mon cas, si j'ai "cale vulg", il doit être transformé par "Cale arve" mais ne l'est pas, car la première lettre n'est pas une majuscule.
Je joins un document, si vous souhaitez voir comment s'exécute le code.
Ne sachant pas trop comment ne pas prendre en compte la casse, je risque d'opter pour le passage de toutes les premières lettre des codes en majuscule.
Bonne journée !