Option Explicit
Option Private Module
'Déclaration variables ***********************
Public GAMME As String 'Fournisseur
Public Nom_Produit As String 'Fournisseur du fichier stock
Public Quantite_Deduite As Integer
Public Cible As Worksheet 'Feuill FOURNISSEUR
Public Reference_Produit As String 'Model pour recherche
Sub Cursseur()
Dim i%, Compteur_vide&, Start_boucle As Range, Cellule_Cherche As Range
Compteur_vide = 0
Set Start_boucle = Cells(2, 1) 'demarrage boucle recup infos
'Start_boucle.Select 'selectionner premiere cellule de recup
For i = 1 To 13
GAMME = "": Reference_Produit = "": Quantite_Deduite = 0: Nom_Produit = ""
With Start_boucle.Offset(i - 1, 0)
If .Value <> "" Then 'si non vide
Compteur_vide = 0
GAMME = .Value
If Not .Offset(0, 1).Value = "" Then
Reference_Produit = .Offset(0, 1).Value
Quantite_Deduite = .Offset(0, 2).Value
If Not .Offset(0, 9).Value = "" Then
Nom_Produit = .Offset(0, 9).Value
Else
Compteur_vide = Compteur_vide + 1
If Compteur_vide = 3 Then Exit For
End If
End If
End If
End With
If Not GAMME = "" Then
On Error Resume Next
Set Cellule_Cherche = Nothing
Set Cellule_Cherche = Sheets("FOURNISSEUR").Range("A:A").Find(What:=Nom_Produit, After:=Range("A1"), LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
If Not Cellule_Cherche Is Nothing Then
Set Cellule_Cherche = Cellule_Cherche.MergeArea.EntireRow.Find(What:=Reference_Produit, After:=Cellule_Cherche, LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
If MsgBox("Voulez vous déduire la quantité : " & Quantite_Deduite & vbLf & Nom_Produit & vbLf & Cellule_Cherche.Value & vbLf & "Stock : " & Cellule_Cherche.Offset(0, 1).Value, vbYesNo + vbQuestion) = 6 Then Cellule_Cherche.Offset(0, 1).Value = Cellule_Cherche.Offset(0, 1).Value - Quantite_Deduite
End If
On Error GoTo 0
End If
Next i
End Sub