tu a écrit :
C'est parfait, les résultats son corrects.
merci pour ton retour !
explication du code VBA :
Dim cel As Range, n&, i&
: déclaration de variables ; Dim n& : idem que Dim n As Long
Application.ScreenUpdating = 0
: évite la mise à jour de l'écran ➯ exécution plus rapide
ActiveCell.Select
: sélectionne la cellule active ; c'est uniquement pour désélectionner le bouton « C »
(juste après que tu as cliqué dessus pour lancer la macro).
n = Cells(Rows.Count, 1).End(3).Row
: idem que n = Cells(Rows.Count, "A").End(xlUp).Row
n est donc le n° de la dernière ligne utilisée, selon la colonne A ; ici 85.
If n > 2 Then Range("I3:I" & n).ClearContents
; si n > 2 on efface la plage I3:I85 :
on efface les anciens résultats, pour éviter un mélange avec les résultats qu'on va écrire.
For i = 3 To n
.. Next i
: pour toutes les lignes, ici 3 à 85
Set cel = Worksheets("MVTS").Columns(2).Find(Cells(i, 1), , -4163, 1, 1)
: idem que :
Set cel = Worksheets("MVTS").Columns("B").Find(Cells(i, "A"), , xlValues, xlWhole, xlByRows)
on cherche donc le Code de la colonne A en feuille "MVTS", colonne B
If Not cel Is Nothing Then Cells(i, 9) = cel.Offset(1, 1)
* si Code n'a pas été trouvé : retour = Nothing ➯ on fait rien du tout
* si Code a été trouvé : retour <> Nothing ➯ on écrit le résultat en cellule de la ligne i, colonne I "Stock" ; ce résultat est selon la cellule trouvée : décalage 1 ligne en dessous et 1 colonne à droite ; exemple pour le Code 200002 : trouvé en B5 ➯ résultat en C6 : 54315
dhany