Créer boucle recherche d'infos
Bonjour,
Dans le fichier joint il y a les explication.
Problème : Je voudrais aller chercher les informations dans le bon d'enlèvement (cf feuille bon d'enlèvement) et les copier dans ma feuille stock à côté de la bonne référence quand ce dernier sera validé (cf flèche violette)
Merci d'avance pour votre aide.
Bonjour Aslo, bonjour le forum,
Essaie comme ça :
Sub Macro1()
Dim OS As Worksheet 'déclare la variable OS (Onglet Stock)
Dim OB As Worksheet 'déclare la variable OB (Onglet Bon)
Dim TVS As Variant 'déclare la variable TVS (Tableau des Valeur Stock)
Dim TVB As Variant 'déclare la variable TVB (Tableau des Valeur Bon)
Dim I As Integer 'déclare la variable I (Incrément)
Dim J As Integer 'déclare la variable J (incrément)
Set OS = Worksheets("Stock") 'définit l'onglet OS
TVS = OS.Range("A1").CurrentRegion 'définit la tableau des valeurs stock TVS
Set OB = Worksheets("BON D'ENLEVEMENT MATERIEL") 'définit l'onglet OB
TVB = OB.Range("H4").CurrentRegion 'définit la tableau des valeurs Bon TVB
For J = 2 To UBound(TVB, 1) 'boucle 1 : sur toutes les lignes J du tableau des valeur bon TVB (en partant de la seconde)
For I = 2 To UBound(TVS, 1) 'boucle 2 : sur toutes les lignes I du tableau des valeur Stock TVS (en partant de la seconde)
If TVS(I, 1) = TVB(J, 1) Then 'si le numéro de gravage de l'onglet OB correspond à la référence de l'onglet OS
OS.Cells(I, "K").Value = CDate(OB.Range("I2").Value) 'renvoie la date en I2 de l'onglet OB dans la cellule ligne I colonne K de OS
OS.Cells(I, "L").Value = OB.Range("C20").Value 'renvoie le sous-traitant en C20 de l'onglet OB dans la cellule ligne I colonne L de OS
OS.Cells(I, "M").Value = TVB(J, 3) 'récupère dans la cellule ligne I colonne M de l'onglet OS la cause ligne J colonne 3 de TVB
Exit For 'sort de la bouce 2
End If 'fin de la condition
Next I 'prochaine ligne I de la boucle 2
Next J 'prochaine ligne J de la boucle 1
End Sub
Bonjour Aslo, bonjour le forum,
Essaie comme ça :
Sub Macro1() Dim OS As Worksheet 'déclare la variable OS (Onglet Stock) Dim OB As Worksheet 'déclare la variable OB (Onglet Bon) Dim TVS As Variant 'déclare la variable TVS (Tableau des Valeur Stock) Dim TVB As Variant 'déclare la variable TVB (Tableau des Valeur Bon) Dim I As Integer 'déclare la variable I (Incrément) Dim J As Integer 'déclare la variable J (incrément) Set OS = Worksheets("Stock") 'définit l'onglet OS TVS = OS.Range("A1").CurrentRegion 'définit la tableau des valeurs stock TVS Set OB = Worksheets("BON D'ENLEVEMENT MATERIEL") 'définit l'onglet OB TVB = OB.Range("H4").CurrentRegion 'définit la tableau des valeurs Bon TVB For J = 2 To UBound(TVB, 1) 'boucle 1 : sur toutes les lignes J du tableau des valeur bon TVB (en partant de la seconde) For I = 2 To UBound(TVS, 1) 'boucle 2 : sur toutes les lignes I du tableau des valeur Stock TVS (en partant de la seconde) If TVS(I, 1) = TVB(J, 1) Then 'si le numéro de gravage de l'onglet OB correspond à la référence de l'onglet OS OS.Cells(I, "K").Value = CDate(OB.Range("I2").Value) 'renvoie la date en I2 de l'onglet OB dans la cellule ligne I colonne K de OS OS.Cells(I, "L").Value = OB.Range("C20").Value 'renvoie le sous-traitant en C20 de l'onglet OB dans la cellule ligne I colonne L de OS OS.Cells(I, "M").Value = TVB(J, 3) 'récupère dans la cellule ligne I colonne M de l'onglet OS la cause ligne J colonne 3 de TVB Exit For 'sort de la bouce 2 End If 'fin de la condition Next I 'prochaine ligne I de la boucle 2 Next J 'prochaine ligne J de la boucle 1 End Sub
Merci pour tout !! C'est super !