1. Ce site utilise des "témoins de connexion" (cookies) conformes aux textes de l'Union Européenne. Continuer à naviguer sur nos pages vaut acceptation de notre règlement en la matière. En savoir plus.

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

Discussion dans 'Forum Excel' démarrée par micgca, 9 Février 2017.

  1. micgca

    micgca XLDnaute Junior

    Inscrit depuis le :
    25 Février 2014
    Messages :
    68
    "J'aime" reçus :
    0
    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:

  2. micgca

    micgca XLDnaute Junior

    Inscrit depuis le :
    25 Février 2014
    Messages :
    68
    "J'aime" reçus :
    0
     
  3. micgca

    micgca XLDnaute Junior

    Inscrit depuis le :
    25 Février 2014
    Messages :
    68
    "J'aime" reçus :
    0
    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.
     
  4. natorp

    natorp XLDnaute Accro

    Inscrit depuis le :
    27 Septembre 2008
    Messages :
    1522
    "J'aime" reçus :
    19
    Utilise:
    Excel 2013 (PC)
    Bjr micgca

    Pour moi le décompte se fait bien par référence dans la feuille Refprod
    Peux tu nous détailler ce que tu fais exactement ? et ce qui te pose problème ?

    Cordialement, Gérard
     
  5. micgca

    micgca XLDnaute Junior

    Inscrit depuis le :
    25 Février 2014
    Messages :
    68
    "J'aime" reçus :
    0
    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.
     
  6. natorp

    natorp XLDnaute Accro

    Inscrit depuis le :
    27 Septembre 2008
    Messages :
    1522
    "J'aime" reçus :
    19
    Utilise:
    Excel 2013 (PC)
    Re,

    En remplaçant le code du module1 par celui-ci :
    Code (Visual Basic):
    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
     
  7. micgca

    micgca XLDnaute Junior

    Inscrit depuis le :
    25 Février 2014
    Messages :
    68
    "J'aime" reçus :
    0
    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.
     
  8. natorp

    natorp XLDnaute Accro

    Inscrit depuis le :
    27 Septembre 2008
    Messages :
    1522
    "J'aime" reçus :
    19
    Utilise:
    Excel 2013 (PC)
    Bonjour

    Avez-vous avancer ? oui on pourrait répéter cette macro pour un autre article..

    Cordialement, Gérard
     
  9. micgca

    micgca XLDnaute Junior

    Inscrit depuis le :
    25 Février 2014
    Messages :
    68
    "J'aime" reçus :
    0
    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.
     
  10. natorp

    natorp XLDnaute Accro

    Inscrit depuis le :
    27 Septembre 2008
    Messages :
    1522
    "J'aime" reçus :
    19
    Utilise:
    Excel 2013 (PC)
    Re,

    effectivement c'est bien ça
    Code (Text):
     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 (Text):
                        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
     
  11. micgca

    micgca XLDnaute Junior

    Inscrit depuis le :
    25 Février 2014
    Messages :
    68
    "J'aime" reçus :
    0
    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.
     
  12. micgca

    micgca XLDnaute Junior

    Inscrit depuis le :
    25 Février 2014
    Messages :
    68
    "J'aime" reçus :
    0
    et aussi, comment enchainer plusieurs fois cette manip pour d'autres articles, je comprends mieux le code, quel serait l'enchainement (en ligne de code) dans la même macro ?
    Merci.
    Micgca.
     

Partager cette page