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 37
| 'En tout début de Module
Option Explicit
'Oblige à déclarer l'ensemble des variables utilisées dans le code
Sub teste()
'Déclarer ses variables
Dim Cel As Range
Dim CellExt As Range
Dim StrTrois As String
'Autant que possible il vaut mieux éviter les activesheet, activeworkbook...
'c'est source de problème en cas de changement involontaire de feuille active par exemple
For Each Cel In Feuil1.UsedRange
'On récupère les trois dernières caractères
StrTrois = Right(Cel, 3)
'On controle que ces trois caractères représentent une extension connue (petit tableau contenant les extension possible)
With Feuil2
For Each CellExt In .Range("A2", .Cells(.Rows.Count, "A").End(xlUp))
If CellExt.Value = StrTrois Then
'OK c'est une des extensions à remplacer, on garde juste la partie numerique
'Pour les paramètre, on utilise la forme "MatchCase:" uniquement si les paramètre ne se suivent pas
'Par contre attention du moment qu'on écrit un paramètre "MatchCase:", les suivant devront tous être ecrit de la même façon
'Sinon on écrit au plus simple pour aléger le code
Cel.Replace StrTrois, "", xlPart, MatchCase:=False
'On peut aussi faire
Cel.Value = Val(Cel.Value)
'Dans les deux cas attetion au séparateur décimal qui est souvent source de problèmes (. ou ,)
'On va chercher le format que l'on souhaite mettre à la place dans le tableau Feuil2
cell.NumberFormat = CellExt.Offset(, 1).Value
'On passe à la cellule suivante
Exit For
End If
Next
End With
Next
End Sub |
Partager