[code=vb]Sub MiseAjourPrix_2()
Const DecalColPrix As Long = 11 'indice de décalage de colonne des prix par rapport à la colonne B de chaque feuille Articles
Dim oldCalculation As XlCalculation
Dim RefArticles As Variant 'Tableau des référence sur la colonne B de chaques feuille Articles
Dim PrixActuels As Variant 'Tableau des prix actuel sur la colonne F de chaque feuille articles
Dim NouveauxPrix As Variant 'Tableau des deux colonne A et B de la feuille nouveauxprix
Dim idx As Variant 'variant de recherche
Dim sh As Worksheet 'feuille de recherche
Dim plg As Variant 'plage de départ
Dim i As Long, j As Long ' indices de boucles
'On Error GoTo FIN:
With Application
oldCalculation = .Calculation
.Calculation = xlCalculationManual
.ScreenUpdating = False
.EnableEvents = False
End With
Set sh = Sheets("nouveauxprix")
NouveauxPrix = sh.Range("A2:B" & sh.Cells(sh.Rows.Count, 1).End(xlUp).Row).Value
For Each sh In Worksheets
If sh.Name <> "nouveauxprix" Then
Set plg = sh.Range("B1:B" & sh.Cells(sh.Rows.Count, 2).End(xlUp).Row)
RefArticles = plg.Value
PrixActuels = plg.Offset(, 4).Value
For j = 1 To UBound(RefArticles)
idx = Application.Match(RefArticles(j, 1), NouveauxPrix, 0)
If Not IsError(idx) Then PrixActuels(j, 1) = NouveauxPrix(idx, 2)
Next j
plg.Offset(, 11).Value = PrixActuels
End If
Next sh
FIN:
With Application
.Calculation = oldCalculation
.ScreenUpdating = False
.EnableEvents = False
End With
If Err.Number > 0 Then
MsgBox "Une erreur c'est produite pendant de la mise à jour des prix!", vbExclamation, "Mise à jour des prix"
End If
End Sub