Soucis de formules et processus SI

Bonjour,

Je suis débutant sur excel et j'aimerais solliciter votre aide sur un suivi de stock que j'essaie tant bien que mal de mettre au point.

Mon fichier se compose en 3 feuilles :

  • Liste des consommables
  • Mouvement du stock
  • Feuil3 (feuille contenant les groupes pour liste déroulante)

Ce que j'aimerai faire c'est en rentrant la désignation et les entrées/sorties (feuille mouvement du stock), celui-ci soit capable de me trouver la désignation dans la feuille liste des consommables et me faire l'ajout ou la soustraction par rapport à mon stock initial.

Sur la colonne Stock, j'ai pu déjà réussir à appliquer l'ajout et la soustraction avec la fonction suivante :

=SI('Mouvement du stock'!C4="Entrée";Tableau2[@[Stock initial]]+'Mouvement du stock'!E4;SI('Mouvement du stock'!C4="Sortie";Tableau2[@[Stock initial]]-'Mouvement du stock'!E4))

Mais je ne sais pas comment faire pour que le fichier puisse me trouver automatiquement la désignation et me faire l'opération voulu. J'ai pensé à utiliser des SI mais je ne pense pas que ce soit la meilleure solution pour 61 références.

En espérant avoir été clair.

Dans l'attente de vos retours

JMnd

Bonjour,

un fichier stock à tester

entrée / Sortie et valeur du stock

il me reste à modifier les noms des comboBox et des TextBox

et ajouter une colonne pour le stock minimum

Si cela te conviens, fais -moi un signe

Amicalement

Pierrot

Bonjour Pierre,

Je vous remercie de votre réponse, j'avoue que ce que vous me proposez est au delà de mes espérances.

Je suis curieux de savoir comment vous avez fait mais je pense que c'est bien au delà de mes compétences.

C'est vraiment très bien. Voulez-vous que je crée des références internes et que je vous les envoie pour avoir une base de données plus complètes ?

Voilà, pour moi, le fichier est fini, il reste une mise en forme conditionnelle pour le stock à commander

jette un oeil dessus

j'ai rajouté des colonnes et en ai supprimé d'autre, qu'en pense-tu ?

Pierrot

28stock-jmnd-cp01.xlsm (103.65 Ko)

C'est vraiment bien!

Est-il possible d'ajouter une alerte de couleur (surbrillance ou fond rouge) lorsque la case à commander est présente dans la feuille matériels.

En tout cas, je vous remercie énormément.

JMnd

Bonjour,

Pour changer la couleur de la case lorsque cette dernière affiche "A commander",

il te suffit de faire une mise en forme conditionnelle sur la colonne I (en se référent au fichier de Cappe Pierre)

J'espère t'avoir aidé

Bonjour,

J'ai une petite incohérence avec le fichier, dans la case état du stock, certains articles sont considérés comme Article en stock alors que la valeur du stock est inférieure à la valeur du stock minimum.

La formule est bien la même partout, c'est à dire : =SI(F3<=H3;"A Commander";"Article en Stock")

L'exemple est visible à la ligne 24.

Bien cordialement,

JMnd

Bonjiour, JMnd

sur ma version, tout fonctionne

il me reste à différencier la couleur de l'annonce "A commander" et " Article en Stock " sur le formulaire

Amicalement

Pierrot

18stock-jmnd-cp03.xlsm (106.91 Ko)

Bonjour Pierre,

Si je comprends bien, l'état du stock est visible sur le formulaire (boite de dialogue avec les onglets) en cliquant sur chaque article. Sachant que j'aurais plus de 60 articles, serait-ce possible d'avoir une vision plus globale de l'état du stock par exemple dans la feuille matériels colonne i?

Merci

Dans la feuille "Matériels", dans la colonne F "stock initial",tu vois tout de suite le stock actuel en magasin

Pierrot

Une autre version avec le stock bien en vue

Pierrot

10stock-jmnd-cp03.xlsm (107.10 Ko)

Bonjour,

Ci joint une autre solution

Tu as juste à saisir une désignation dans la colonne D de la feuille "Mouvement du stock" et tu te laisse guider.

Je te met le code qui est en Feuille2 :

Private Sub Worksheet_Change(ByVal Target As Range) 'Dès que la feuille change la macro se déclange
Dim PosRech, PosX, PosY, Ref As String
Dim Stock As Integer

    If Target.Column = 4 Then 'On se concentre sur la colonne D

        Quantite = InputBox("Quantité ?", "Quantité article")
        Target.Offset(0, 1).Value = Quantite 'On change la valeur de la colonne quantité
        PosRech = Sheets("Liste des consommables").Range("D2:D62").Find(Target.Value, , xlValues).Address 'on cherche dans la feuille1 la bonne désignation de l'article et on récupère son adresse
        Stock = Sheets("Liste des consommables").Range(PosRech).Offset(0, 3).Value 'On récupère le stock de l'article qui se situe 3 fois à droite de ce dernier
        Ref = Sheets("Liste des consommables").Range(PosRech).Offset(0, -2).Value

        If MsgBox("C'est une entrée ?", vbYesNo, "Entrée ou sortie") = vbYes Then 'On détermine si c'est une entrée ou une sortie
            Stock = Stock + Quantite
            Target.Offset(0, -1).Value = "Entrée"
        Else
            Stock = Stock - Quantite
            Target.Offset(0, -1).Value = "Sortie"
        End If

        Target.Offset(0, -2).Value = Ref
        Target.Offset(0, -3).Value = Format(Date, "MM/DD/YYYY") ' On écrit la date à laquelle l'opération ce passe

    End If

End Sub

Bonjour, ta solution fonctionne bien mais ce n'est pas ce que JMnd avait demandé

je garde quant même

Salutations amicales

Pierrot

Bonjour Fazzbetter,

Le fichier est également très bien mais quand on rentre les entrées/sorties sur la feuille "Mouvement du stock", celles-ci ne sont pas actualiser dans la feuille "Liste des consommables". C'est dommage.

JMnd

Bonjour,

Autant pour moi, j'ai oublier une ligne dans mon code ^^

Sheets("Liste des consommables").Range(PosRech).Offset(0, 3).Value = Stock

Je te remet le code complet :

Private Sub Worksheet_Change(ByVal Target As Range) 'Dès que la feuille change la macro se déclange
Dim PosRech, PosX, PosY, Ref As String
Dim Stock As Integer

    If Target.Column = 4 Then 'On se concentre sur la colonne D

        Quantite = InputBox("Quantité ?", "Quantité article")
        Target.Offset(0, 1).Value = Quantite 'On change la valeur de la colonne quantité
        PosRech = Sheets("Liste des consommables").Range("D2:D62").Find(Target.Value, , xlValues).Address 'on cherche dans la feuille1 la bonne désignation de l'article et on récupère son adresse
        Stock = Sheets("Liste des consommables").Range(PosRech).Offset(0, 3).Value 'On récupère le stock de l'article qui se situe 3 fois à droite de ce dernier
        Ref = Sheets("Liste des consommables").Range(PosRech).Offset(0, -2).Value

        If MsgBox("C'est une entrée ?", vbYesNo, "Entrée ou sortie") = vbYes Then 'On détermine si c'est une entrée ou une sortie
            Stock = Stock + Quantite
            Target.Offset(0, -1).Value = "Entrée"
        Else
            Stock = Stock - Quantite
            Target.Offset(0, -1).Value = "Sortie"
        End If

        Sheets("Liste des consommables").Range(PosRech).Offset(0, 3).Value = Stock
        Target.Offset(0, -2).Value = Ref
        Target.Offset(0, -3).Value = Format(Date, "MM/DD/YYYY") ' On écrit la date à laquelle l'opération ce passe

    End If

End Sub

Bonjour Fazzbetter,

Nickel, je te remercie toi comme Pierre pour votre aide.

J'ai une dernière question si j'ajoute une désignation (entrée de nouvelles références), je range la ligne range D2:D62 et j'ajoute les nouvelles lignes : (D2:D65).

En gros où est ce que je suis censé inscrire ton codage s'il venait à être modifier pour la raison que j'ai évoqué ?

Merci beaucoup

JMnd

Re,

Pour ne rien à avoir à modifier dans le code change la ligne n°9 :

Avant :

PosRech = Sheets("Liste des consommables").Range("D2:D62").Find(Target.Value, , xlValues).Address 'on cherche dans la feuille1 la bonne désignation de l'article et on récupère son adresse

Après :

PosRech = Sheets("Liste des consommables").Range("D2:D999").Find(Target.Value, , xlValues).Address 'on cherche dans la feuille1 la bonne désignation de l'article et on récupère son adresse

Tu peu donc aller jusqu'à 999 désignation (si tu en as plus augmente ce nombre).

Ensuite, il faut juste que tu modifie ta liste pour pouvoir sélectionner la bonne désignation

Re,

Pas de soucis, je veux bien essayer mais je suis encore débutant.

Je vais sur mon fichier, Alt+F11, Insertion, Module, je copie le codage et ayant changer la ligne. Flèche verte

Et là il me demande un nom de macro, n'existe-il pas déjà ? ou faut-il que je le recrée ?

Re,

Quand tu ouvres VBA (avec Alt + F11), tu double clique sur la "Feuil2 (Mouvement de stock)" (je t'ai mis une capture en dessous)

Et là tu peut voir ton code.

ouvrir code

Si tu n'y arrives pas (ce qui serait étonnant) je te met le fichier modifié ci-dessous.

Re,

Nickel, c'était aussi simple.

Merci beaucoup

Rechercher des sujets similaires à "soucis formules processus"