Calcul avec décalage

bonjour le forum,

je cherche de l'aide pour ramener en colonne I de la feuille DONNEES, exemple ce qui est en C4 de la feuille MVTS si B3 de la feuille MVTS correspond au code en colonne A de la feuille DONNEES.

j'ai essayé avec "Offset" mais ça renvoie une erreur.

merci d'avance.

Moutchec.

7classeur2.xlsm (139.73 Ko)

Bonjour Moutchec,

je te retourne ton fichier modifié :

6classeur2.xlsm (73.41 Ko)

clique sur ton bouton « C ».

si besoin, tu peux demander une adaptation.

merci de me dire si ça te convient.

dhany

Bonjour @dhany,

C'est parfait, les résultats son corrects.

Pourriez-vous s'il vous plaît ajouter quelques commentaires, histoire pour moi de comprendre (surtout la partie -4163,1,1)

Merci beaucoup.

Moutchec.

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

Re, Un tout grand merci.

Bon week-end.

Cordialement.

Moutchec.

Salut Moutchec,

Salut Dhany,

Formule en 'DONNEES' [I3] et tirer vers le bas...

=INDEX(MVTS!B:C;EQUIV(A3;MVTS!B:B;0)+1;2)

A+

Bonjour @curulis57,

à la base ce classeur est fait avec des formules mais comme j'essaye de m'introduire dans le monde merveilleux du VBA, je me suis dit que la meilleure façon d'apprendre était de transformer petit à petit mes fichiers et franchement je progresse même si je suis encore très loin du compte... c'est grâce à vous tous.

merci.

Moutchec.

Rechercher des sujets similaires à "calcul decalage"