Recherche multiple

Bonjour le forum

j'ai un tableau de stock a remplir, je veux en fait remplir la colonne "Sorties (Ventes)" dans l'anglet "STOCK" automatiquement et cela doit être fait à partir de la liste des ventes, si un article est vendu la formule doit allez cherchez les ingrédient utiliser pour cet article dans l'anglet "FICHE TECHNIQUE" et mettre les quantités utilisés selon la fiche technique en la multipliant par le nombre des articles vend

17c3.xlsx (33.74 Ko)
9c3.xlsx (33.74 Ko)

u saisi déjà dans l'anglet "vente"

Bonjour,

Essayez ceci, la formule est créée à partir d'une fonction personnalisée.

Formule en E8:

=stock([@PRODUITS];VENTE!A4;Tableau3[[#En-têtes];[BB monge]:[PAIN SND BAGEL]])

le code de la fonction personnalisée:

Function Stock(produit As String, article As String, produits As Range) As Variant
    Dim f1 As Worksheet, f2 As Worksheet
    Dim Tbl As ListObject, Tb2 As ListObject
    Dim Col_Index As Long, Lig_Index As Long
    Dim Cell_Val As Variant
    Dim r As ListRow

    On Error GoTo GestionErreur

    ' Références aux feuilles
    Set f1 = Sheets("FICHE TECHNIQUE")
    Set f2 = Sheets("VENTE")

    ' Références aux tableaux
    Set Tbl = f1.ListObjects("Tableau3")
    Set Tb2 = f2.ListObjects("Tableau6")

    Col_Index = Tbl.ListColumns(produit).Index ' Trouver le N° de la colonne (Index) de la colonne correspondant au produit dans Tableau3
    Lig_Index = -1
    For Each r In Tb2.ListRows ' pour chaque ligne du Tableau6
        If r.Range.Cells(1, 1).Value = article Then ' Trouver le N° de la ligne (Index) correspondant à l'article dans Tableau6
            Lig_Index = r.Index 'relevé du N° de ligne
            Exit For
        End If
    Next r
    If Lig_Index = -1 Then GoTo GestionErreur 'si aucune ligne trouvée, on sort

    ' Obtenir la valeur à l’intersection ligne/colonne
    Stock = 0 'initialisation du stock à 0
    Cell_Val = Tbl.DataBodyRange.Cells(Lig_Index, Col_Index).Value 'on retient la valeur de la cellule correspondant à l'intersection de la ligne et de la colonne
    If IsNumeric(Cell_Val) Then Stock = Stock + Cell_Val ' si la valeur est numérique, on l'ajoute au stock
    Exit Function

GestionErreur:
    Stock = "pas trouvé" 'message affiché dans la cellule si l'article n'est pas trouvé
End Function

le fichier:

Cdlt

Merci bien

la formule me semble correcte sauf que elle doit tenir compte du Total dans la feuille "Vente" ; quad j'ajoute les tableaux en entier la formule ne marche pas !!

PRODUITSUniteStock InitialEntrées (Achats)Sorties (Ventes)Stock Final
BB mongePIECE200pas trouvé#VALEUR!
ŒUFPIECE0pas trouvé#VALEUR!
POULETKG0pas trouvé#VALEUR!
CHAMPIGNONKG0pas trouvé#VALEUR!
PERSILKG0pas trouvé#VALEUR!
MOZZARELLAKG0pas trouvé#VALEUR!

merci de voir

bonjour voici le fichier en entier

8stock-2s.xlsm (159.71 Ko)

désole mais la formule au finale doit être pour chaque article utilisé dans le produit final est le nombre de produit vendu ( dans la colonne N) x quantité dans la fiche technique

comme par exemple pour " omelette nature" BB Monge: 15*2 =30 et ŒUF : 15*3 = 30

merci

Bonjour,

Essayez ceci:

Cdlt

PS: Si la réponse vous convient, passez le post en "RESOLU", merci

merci beaucoup

très bien

Rebonjour

j'ai détecté une erreur , si deux ou plusieurs produits de vente utilise un même ingrédient le tableau ne fais pas la somme des plats incluant cet ingrédient mais il reste sur la somme du premier plat

exemple :

si une omelette nature utilise 3 œufs et que j'ai vendu 15 plats alors le calcul serait exacte dans le tableau soit : 3*15 =75 œufs

mais si j'ajoute sur les ventes un autre plat contenant des œufs comme par exemple 5 plats et que le plat utilise 2 œufs le tableau affiche = (3+2) œufs *15 = 75 au lieu de ( 3+2)*(15+5) = 100

merci de voir

encore 1000 merci pour votre disponibilité :)

Pourriez-vous joindre le fichier avec les exemples que vous citez?

Le voilà

Bonjour,

Vu la complexité de la structure du fichier, je l'ai repensé autrement, j'ai inséré une colonne (H, Total ventes) dans la feuille "FICHE TECHNIQUE", ainsi on a le nombre de ventes sur la même feuille (récupérés par formule)

Puis j'ai abandonné la fonction personnalisée pour la remplacer par une macro, maintenant, pour avoir le total des sorties(ventes) dans la feuille "STOCK", vous cliquerez sur le bouton vert.

Cdlt

Merci, mais je crois qu'il existe un petit erreur

le macro additionne la quantité des ingrédients et la multiplie par les article vendus et ceci même si il la quantité vendu est ZERO

exemple : Fiche technique : Omelette nature = 3 œufs

ŒUF BENEDICTE = 4 oeufs

vente : 15 plats omelette nature

0 plats ŒUF BENEDICTE

le fichier calcul de la façon suivante : (3+4) œufs * 15 = 105

alors il doit calculer comme suit : 3*15 = 45

il ne doit pas tenir compte des quantité issu de la fiche technique si la vente est zéro

Ok, voilà le fichier corrigé:

encore désolé vraiment désolé mais il y un erreur dans la logique arithmétique

le calcul doit être fait comme ca : 15 plats * 3 œufs +5 plats *2oeufs = 55

et non pas ( 3+2) œufs *(15+5)plats = 100 c'est mon erreur et pas la programmation

Ceci est-il mieux?

OUI PARFAIT

merci beaucoup

Rechercher des sujets similaires à "recherche multiple"