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 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
|
Sub maj_stock()
Dim Fe_1 As Worksheet, Fe_2 As Worksheet
Dim Plage_1 As Range, Plage_2 As Range
Dim Cel_1 As Range, Cel_2 As Range
Dim old_stock As Integer, new_stock As Integer
Dim lign_maj As Integer, lign_manq As Integer
Dim t As Single
Set Fe_1 = Worksheets("MaJ_Stock")
Set Fe_2 = Worksheets("Master")
'initialise le timer
t = Timer
'défini sur la colonne A ligne 2 de la feuille "MaJ_Stock"
With Fe_1
Set Plage_1 = .Range(.Cells(2, 1), .Cells(.Rows.Count, 1).End(xlUp))
End With
'défini sur la colonne AJ ligne 2 de la feuille "Master"
With Fe_2
Set Plage_2 = .Range(.Cells(2, 36), .Cells(.Rows.Count, 1).End(xlUp))
End With
'boucle sur chaque cellule de la plage
For Each Cel_1 In Plage_1
'effectue la recherche
Set Cel_2 = Plage_2.Find(Cel_1.Value, , xlValues, xlWhole)
'si trouvé, récup de la valeur en colonne M de la feuille "Feuil1"
'pour la mettre en colonne M de la feuille "Feuil2" sur la ligne
'correspondante
If Not Cel_2 Is Nothing Then
'enregistre l ancienne valeur
old_stock = Cel_2.Offset(, -19).Value
'enregistre la nouvelle
new_stock = Cel_1.Offset(, 12).Value
Cel_2.Offset(, -19) = new_stock
'affiche la date de maj
Cel_2.Offset(, 1) = Date
'calcule la variation de stock
Cel_2.Offset(, 2) = (new_stock - old_stock)
'incremente un compteur
lign_maj = lign_maj + 1
Else
'colore la ligne manquante pour mieux la reperer
Cel_1.EntireRow.Interior.ColorIndex = 46
'incremente un compteur
lign_manq = lign_manq + 1
End If
Next Cel_1
'affiche moi le résultat de cette macro
MsgBox ("Lignes mises à jour : " & lign_maj & vbCrLf & "Lignes manquantes : " & lign_manq & vbCrLf & "Temps de traitement : " & Timer - t & " s")
End Sub |
Partager