'Zon V1 , à adapter
Const PlRang$ = "B3:C6"
Const PlFeuil$ = "E3:E10"
Const PlModif$ = "G3"
Const NomFParam$ = "Parametre"
Const Msg1$ = "Veuillez Vérifier le nom de la feuille parametre et le contenu de ses cellules"
Sub ExeRang()
Application.Calculation = xlCalculationManual
MajRang ActiveCell
Application.Calculation = xlCalculationAutomatic
End Sub
Sub MajRang(C As Range) 'Gestion d'erreur à ajouter aprés tests
Dim T, U, V, Ch, Numlig&
Numlig = C.Row
' U = Init(ThisWorkbook.Name, NomFParam, PlFeuil) ' à voir pour le traitement de plusieurs feuilles à la fois, boucle sur U
T = Init(ThisWorkbook.Name, NomFParam, PlRang) 'recup de colonnes et des rangs
Ch = T(LBound(T, 1), 1) & Numlig & ":" & T(UBound(T, 1), 1) & Numlig
V = Init(ThisWorkbook.Name, ActiveSheet.Name, Ch) 'recup plage K:N nom de la feuille à traiter
Ch = Init(ThisWorkbook.Name, NomFParam, PlModif) 'doit retourner 1 seule cellule
Ch = Left(Ch, 2) & Numlig & ":" & Right(Ch, 2) & Numlig 'PLage AD : GK avec numéro de ligne
'Traitement d'une seule plage AD:GK, si plusieurs faire une boucle sur Ch
TraitementRang T, V, ThisWorkbook.Name, ActiveSheet.Name, Ch, Numlig
End Sub
Sub TraitementRang(T, V, C$, ByVal F$, ByVal P$, Numlig&)
'On sert de le colonne 2 de T pour affecter la valeur cellule qu'on vient de comparer avec V
Dim I&, J&, K&
I = 1
With Workbooks(C).Sheets(F).Range(P)
For K = 1 To .Cells.Count
If .Cells(I, K) <> "" Then
For J = LBound(V, 2) To UBound(V, 2)
.Cells(I, K) = IIf(.Cells(I, K) = V(1, J), T(J, 2), .Cells(I, K))
Next J
End If
Next K
End With
End Sub
Function Init(ByVal C$, ByVal F$, ByVal P$)
On Error Resume Next
With Workbooks(C).Sheets(F).Range(P)
Init = .Cells
End With
End Function