Stock - 1 réf. saisie = plusieurs réf. sorties

micgca

XLDnaute Junior
Bonjour à tous,
me voilà de retour,
toujours avec ma gestion de stock,
ce que je souhaite,
par exemple,
la référence BUREAU saisie dans la feuille Matrice BL n’entraine pas le décompte de 1 bureau dans la feuille Refprod mais 1 chaise + 1 table + 1 souris.
C'est possible ça ?
en fait cela revient à dire que pour 1 bureau saisie on décompte 1 chaise + 1 table + 1 souris.

Merci à tous en attendant.
Cordialement.
Micgca.
 

Pièces jointes

  • ESSAI 1 v1.xlsm
    19.2 KB · Affichages: 65

micgca

XLDnaute Junior
Bonjour à tous,
me voilà de retour,
toujours avec ma gestion de stock,
ce que je souhaite,
par exemple,
la référence BUREAU saisie dans la feuille Matrice BL n’entraine pas le décompte de 1 bureau dans la feuille Refprod mais 1 chaise + 1 table + 1 souris.
C'est possible ça ?
en fait cela revient à dire que pour 1 bureau saisie on décompte 1 chaise + 1 table + 1 souris.

Merci à tous en attendant.
Cordialement.
Micgca.
 

micgca

XLDnaute Junior
Bonjour à tous,
alors personne a une idée ?

Une référence saisie dans un bon de livraison entraine le décompte de plusieurs références dans la feuille de stock ?

Je galère mais je ne désespère pas....

Merci d'avance à tous.

Micgca.
 

micgca

XLDnaute Junior
Bonjour,
tout d'abord merci,
oui le décompte se fait bien.
Mon problème est que je souhaite pour certaines références saisies dans le bon de livraison, que le décompte se fasse sur plusieurs références dans la feuille Refprod.
Par exemple, si je saisis dans le BL 1 RM1234 cela va bien décompté dans la feuille Refprod 1 adaptateur.
Ce que je souhaite, par exemple, c'est que si je saisis dans le BL 1 RM1001 (Bureau) que cela entraîne le décompte dans la feuille Refprod, d'1 bureau mais aussi d'1 chaise et d'1 table.
En fait, je veux associer plusieurs références à décompter lorsqu'une seule est saisie.
Merci d'avance à tous.
Micgca.
 

natorp

XLDnaute Accro
Re,

En remplaçant le code du module1 par celui-ci :
VB:
Sub MAJSTOCK_Clic()
    Dim ligne As Integer: ligne = 2
    Dim valeur_stock As Integer: valeur_stock = 0
    Dim valeur_demandee As Integer: valeur_demande = 0
    Rem Dim ref_prod As String: Dim ref_BL As Sting
    Dim choix_utilisateur As Byte
   
    While (Worksheets("Refprod").Cells(ligne, 3).Value <> "")
        valeur_stock = Worksheets("Refprod").Cells(ligne, 3).Value
        ref_prod = Worksheets("Refprod").Cells(ligne, 2).Value
       
        For Each cellule In Worksheets("Matrice BL").Range("D18:D24")
            If cellule.Value = ref_prod Then
                valeur_demandee = Worksheets("Matrice BL").Cells(cellule.Row, 5)
                If (valeur_demandee > valeur_stock) And cellule.Offset(0, 2) <> "garantie" Then
                    MsgBox ("La référence " & cellule.Value & " ne possède pas assez de stock")
                    test = True
                End If
            End If
        Next cellule
        ligne = ligne + 1
    Wend
   
    If (test = True) Then
        Exit Sub
        Else
        choix_utilisateur = MsgBox("Le BL semble bon, souhaitez-vous mettre à jour le stock ?", vbYesNo)
        If (choix_utilisateur = 6) Then
            For Each cellule In Worksheets("Matrice BL").Range("D18:D24")
                ligne = 2
                While (Worksheets("Refprod").Cells(ligne, 3).Value <> "")
                    If (cellule.Value = "RM1001" And cellule.Value = Worksheets("Refprod").Cells(ligne, 2).Value) And cellule.Offset(0, 2).Value <> "garantie" Then
                    Worksheets("Refprod").Cells(ligne, 3).Value = Worksheets("Refprod").Cells(ligne, 3).Value - ThisWorkbook.Worksheets("Matrice BL").Cells(cellule.Row, 5).Value
                    Worksheets("Refprod").Cells(ligne + 1, 3).Value = Worksheets("Refprod").Cells(ligne + 1, 3).Value - ThisWorkbook.Worksheets("Matrice BL").Cells(cellule.Row, 5).Value
                    Worksheets("Refprod").Cells(ligne + 2, 3).Value = Worksheets("Refprod").Cells(ligne + 2, 3).Value - ThisWorkbook.Worksheets("Matrice BL").Cells(cellule.Row, 5).Value
                    End If
                        If (cellule.Value <> "RM1001" And cellule.Value = Worksheets("Refprod").Cells(ligne, 2).Value) And cellule.Offset(0, 2).Value <> "garantie" Then
                        Worksheets("Refprod").Cells(ligne, 3).Value = Worksheets("Refprod").Cells(ligne, 3).Value - ThisWorkbook.Worksheets("Matrice BL").Cells(cellule.Row, 5).Value
                        End If
                    ligne = ligne + 1
                Wend
            Next cellule
        Else
            Exit Sub
        End If
    End If
End Sub

Cordialement, Gérard
 

micgca

XLDnaute Junior
Ouaouh...respect grand maître, oui ça marche.

J'essaye juste de comprendre comment la macro relie le premier article de la feuille BL aux trois autres de la feuille refprod....

On pourrait répéter cela, dans la même macro, pour un autre article ?

Je vais me pencher dessus pour comprendre mais si une explication venait je crois que je gagnerai un temps certain.

En tout cas grand merci Gérard et bonne soirée à tous.
A plus.
Micgca.
 

micgca

XLDnaute Junior
Bonjour oui cela fonctionne mais comme je vous le disais, j'aimerais comprendre le code pour progresser et éviter de rester un "assisté".
Donc pour pouvoir adapter le code à tout autre article qui nécessiterait également dêtre "rattaché" à 1 deux ou plus de référence dans la feuille de stock, je lis votre code et si possible, expliquez moi à partir de if (cellule.Value="RM001" car je pense que c'est à ce moment qu'on relie le RM1001 aux autre références.
D'avance merci, en espérant que je "capte" tout.
Merci et bonne journée.
Micgca.
 

natorp

XLDnaute Accro
Re,

effectivement c'est bien ça
Code:
 If (cellule.Value = "RM1001" And cellule.Value = Worksheets("Refprod").Cells(ligne, 2).Value) And cellule.Offset(0, 2).Value <> "garantie" Then
permet de tester la présence de la chaîne de caractères (ici RM1001) dans l'une des lignes du tableau en colonne 2

ensuite
Code:
                    Worksheets("Refprod").Cells(ligne, 3).Value = Worksheets("Refprod").Cells(ligne, 3).Value - ThisWorkbook.Worksheets("Matrice BL").Cells(cellule.Row, 5).Value
                    Worksheets("Refprod").Cells(ligne + 1, 3).Value = Worksheets("Refprod").Cells(ligne + 1, 3).Value - ThisWorkbook.Worksheets("Matrice BL").Cells(cellule.Row, 5).Value
                    Worksheets("Refprod").Cells(ligne + 2, 3).Value = Worksheets("Refprod").Cells(ligne + 2, 3).Value - ThisWorkbook.Worksheets("Matrice BL").Cells(cellule.Row, 5).Value
On modifie la valeur de la cellule correspondante dans la feuille Refprod sur la 1ère ligne trouvée en colonne 3 et sur la ligne suivante (ligne + 1) et encore suivante (ligne +2) puisque c'est là que se trouvent les valeurs à modifier

J'espère avoir été clair, cordialement, Gérard
 

micgca

XLDnaute Junior
Ok merci je vois bien.
Le seul problème potentiel est que si on ajoute des références dans Refprod et qu'on trie par référence ou libellé, on peut se retrouver "coincé".
Y aurait il un moyen de rattacher la réf RM1001 à une ou plusieurs références RM1001 RM1002 RM1003. Ainsi on pourrait trier la feuille Refprod et tout continuerait à bien se décompter.
Dernier point, si on veut répéter la même opération mais avec d'autres références, peut-on "coder" dans la même macro, à la suite ?
Encore merci.
Cordialement.
Micgca.
 

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 909
Membres
101 836
dernier inscrit
karmon