Public Sub Macro1()
Dim p As Range 'déclare la variable p
Dim cel As Range 'déclare la variable cel
Dim tbl() As String 'déclare le tableau de variables tbl
Dim x As Integer 'déclare la variable x
Dim dest As Range 'déclare la variable dest
' __________________________________________________ _______________________________
Dim FichierSource As Workbook
Dim l, m
Set FichierSource = ActiveWorkbook
' ************************************************** ***************************************
' Conversion du format des numéros pour avoir le même format que dans le fichier initial
Windows("Worksheet in Basis (1)").Activate
Sheets("Sheet1").Select
For l = 2 To 200
Range("J" & l) = Val(Range("J" & l))
Next l
Range("A1").Select
' ************************************************** ***************************************
' ************************************************** ***************************************
' Conversion du format des numéros pour avoir le même format que dans la base de donné
FichierSource.Activate
Sheets("vrac").Select
For m = 2 To 200
Contenu = Range("A" & m) = Val(Range("A" & m))
Range("A1").Select
' __________________________________________________ _______________________________
'*******************************
'stocke les articles à commander
'*******************************
With Sheets("vrac") 'prend en compte l'onglet "vrac"
Set p = .Range("C2:C" & .Range("C65536").End(xlUp).Row) 'définit la variable p
End With 'fin de la prise en compte de l'onglet "vrac"
For Each cel In p 'boucle sur toutes les cellules de la plage
If cel.Value = "a commander" Or cel.Value = "à commander" Then 'condition "si la valeur de la cellule est "a/à commander"
ReDim Preserve tbl(x) 'redimensionne le tableau de variable tbl
tbl(x) = CStr(cel.Offset(0, -2)) 'donne une valeur à la variable x du tableau
x = x + 1 'définit/redéfinit la variable x
End If 'fin de la condition
Next cel 'prochaine cellule de la plage
'********************************************
'Renvoie les valeurs planifiées dans Résultat
'********************************************
Windows("Worksheet in Basis (1)").Activate
With Sheets("Sheet1") 'prend en compte l'onglet "planning"
Set p = .Range("J2:J" & .Range("J65536").End(xlUp).Row) 'définit la variable p
End With 'fin de la prise en compte de l'onglet "planning"
For Each cel In p 'boucle 1 : sur toutes les cellules de la plage
For x = 0 To UBound(tbl, 1) 'boucle 2 : sur tous les élément du tableau de variables tbl
If CStr(cel.Value) = tbl(x) Then 'condition 1 : si les deux valeurs sont identiques
[COLOR=red]FichierSource.Activate
With Sheets("Resultat") 'prend en compte l'onglet "Resultat"
[/COLOR] If .Range("A2") = "" Then 'condition 2 : si A1 est vide
Set dest = .Range("A2") 'définit la variable dest (A2 si A2 est vide)
Else 'sinon
Set dest = .Range("A65536").End(xlUp).Offset(1, 0) 'la première ligne vide rencontrée
End If 'fin de la condition 2
End With 'fin de la prise en compte de l'onglet "Resultat"
'copie la plage A:K de la cellule correspondante dans dest
Range(Cells(cel.Row, 1), Cells(cel.Row, 11)).Copy Destination:=dest
Exit For 'sor de la boucle 2
End If 'fin de la condition 1
Next x 'prochain élément de la boucle 2
Next cel 'prochaine cellule de la boucle 1
End Sub