IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Différents choix pour gérer un stock [XL-2013]


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2018
    Messages : 7
    Par défaut Différents choix pour gérer un stock
    Bonjour,

    J'ai un stock de créé dans mon fichier excel.
    J'ai une boîte de dialogue qui permets de sélectionner la pièce de rechange qu'on a utilisée, et en fonction de la pièce la ligne associée à son stock diminue de -1.
    Jusqu'à là tout va bien.
    Certaines Pièces De Rechange sont à monter, et comprennent donc plusieurs PDR en une. On la sélectionne et les différentes lignes associées à chacun des stocks diminues.

    CEPENDANT (là commence mon problème), par gain de temps certaines Pièces de rechanges qui comprennent plusieurs PDR sont montées en avance.
    J'ai une ligne dans mon tableau pour ces pièces déjà assemblées.

    Je n'arrive pas à mettre en code le fait que quand le stock d'une pièce montée est > 1, la macro enlève du stock sur la pièce déjà montée, et lorsque le stock est à 0, elle enlève le stock sur chacune des PDR une à une.

    PTR 001 est une pièce montée
    La première ligne est pour essayer d'enlever toute la pièce déjà montée d'un coup (Panier pret)
    les autres lignes pour enlever PDR par PDR si la pièce PTR 001 n'est pas déjà montée.

    En J21 j'ai mon stock de pièce déjà montées..
    Soit ça ne m'enlève rien à mon stock, soit ça ne m'enlève que le stocks des PDR une à une...

    Désolé c'est un peu flou j'espère ne pas vous avoir perdu en route !

    Si jamais vous avez une idée.. cordialement

    Voilà mon exemple de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    If ComboBox1.Value = "PTR 001" And Sheets("Stock_Local_Filtres").Range("J21").Value > 1 Then Sheets("Stock_Local_Filtres").Range("J21").Value = (Sheets("Stock_Local_Filtres").Range("J21").Value - 1)    'PANIER PRÊT
            If ComboBox1.Value = "PTR 001" Then Sheets("Stock_Local_Filtres").Range("D21").Value = (Sheets("Stock_Local_Filtres").Range("D21").Value - 20)  'cartouches
            If ComboBox1.Value = "PTR 001" Then Sheets("Stock_Local_Filtres").Range("D42").Value = (Sheets("Stock_Local_Filtres").Range("D42").Value - 1)  'joint 1
            If ComboBox1.Value = "PTR 001" Then Sheets("Stock_Local_Filtres").Range("D45").Value = (Sheets("Stock_Local_Filtres").Range("D45").Value - 1)  'joint 2
            If ComboBox1.Value = "PTR 001" Then Sheets("Stock_Local_Filtres").Range("D46").Value = (Sheets("Stock_Local_Filtres").Range("D46").Value - 1)  'joint 3
            If ComboBox1.Value = "PTR 001" Then Sheets("Stock_Local_Filtres").Range("D7").Value = (Sheets("Stock_Local_Filtres").Range("D7").Value - 1)  'panier
            If ComboBox1.Value = "PTR 001" Then Sheets("Stock_Local_Filtres").Range("D31").Value = (Sheets("Stock_Local_Filtres").Range("D31").Value - 20)  'coupelles
            If ComboBox1.Value = "PTR 001" Then Sheets("Stock_Local_Filtres").Range("D30").Value = (Sheets("Stock_Local_Filtres").Range("D30").Value - 20)  'ressorts

  2. #2
    Membre chevronné
    Homme Profil pro
    Responsable d'un système d'information métier
    Inscrit en
    Janvier 2007
    Messages
    231
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Responsable d'un système d'information métier
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 231
    Par défaut
    Bonjour,

    rapidement, le "J21 strict >1" n'est pas la cause du problème ? il faut donc au minimum 2 en stock pour que la condition s'applique...

    J21 >=1 ? ou J21 > 0 ?

  3. #3
    Membre chevronné
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Mars 2021
    Messages
    334
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2021
    Messages : 334
    Par défaut
    Salut, avant de commencer mettre un peu d'ordre dans le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Dim Sht As Worksheet
    Dim CBV As String
     
    Set Sht = ThisWorkbook.Sheets("Stock_Local_Filtres")
    CBV = ComboBox1.Value
     
    If CBV = "PTR 001" And Sht.Range("J21").Value > 1 Then Sht.Range("J21").Value = Sht.Range("J21").Value - 1    'PANIER PRÊT
     
    If CBV = "PTR 001" Then
        With Sht
            .Range("D21").Value = .Range("D21").Value - 20  'cartouches
            .Range("D42").Value = .Range("D42").Value - 1  'joint 1
            .Range("D45").Value = .Range("D45").Value - 1  'joint 2
            .Range("D46").Value = .Range("D46").Value - 1  'joint 3
            .Range("D7").Value = .Range("D7").Value - 1  'panier
            .Range("D31").Value = .Range("D31").Value - 20 'coupelles
            .Range("D30").Value = .Range("D30").Value - 20  'ressorts
        End With
    End If
    En suite serait il possible de mettre tout le code utilisé ? As tu essayé de faire en pas a pas pour voir si les lignes de codes passent bien quand tu le veux ?

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 186
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Avant de penser à la partie programmation, je me pencherais sur la conception de mes données.
    Ce que vous décrivez, ou tout au moins ce que j'en ai déduit, ressemble à une gestion de produit fini et semi fini.
    Je commencerais donc à construire une table de conversion avec en colonne 1, la référence du produit fini, suivi en colonne 2 de la référence au produit "pièce de de rechange" et ensuite la quantité en colonne 3 dont on a besoin (Ceci est uns explication à la grosse louche)
    Ainsi en tapant la référence du produit fini et la quantité à produire, il suffirait d'aller chercher à l'aide de VBA ou Power Query toutes les pièces de rechanges dont on a besoin pour ce produit.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2018
    Messages : 7
    Par défaut
    Citation Envoyé par TOFatJOB Voir le message
    Bonjour,

    rapidement, le "J21 strict >1" n'est pas la cause du problème ? il faut donc au minimum 2 en stock pour que la condition s'applique...

    J21 >=1 ? ou J21 > 0 ?
    Merci, je n'avais pas fais attention au " >= ".


    En suite serait il possible de mettre tout le code utilisé ? As tu essayé de faire en pas a pas pour voir si les lignes de codes passent bien quand tu le veux ?
    Ma ligne de code existait déjà, et fonctionne. Le seul point que j'ai voulu rajouter c'est cette notion de "Si panier déjà monté prendre dans ce stock, si le panier n'est pas monté prendre PDR par PDR". Et c'est ça qui me bloque.
    Le code est beaucoup trop long pour le mettre en entier j'ai plein de panier, et tout se répète avec différentes PDR, assez inutile.

    Ainsi en tapant la référence du produit fini et la quantité à produire, il suffirait d'aller chercher à l'aide de VBA ou Power Query toutes les pièces de rechanges dont on a besoin pour ce produit.
    Alors pas vraiment, j'ai déjà le stock de toutes les PDR qui est rempli, renseigné et qui se soustrait à l'utilisation d'un filtre. Donc ça c'est OK. Seulement certain panier de filtre peuvent être préparé à l'avance (gain de temps). De ce fait quand je descend à mon local je n'ai pas autant de PDR dans les tiroirs parce que les PDR sont déjà montées sur les panier de filtres prêt. C'est pour ça que je voulais bien faire la différence entre les PDR et les paniers préparés. (je nomme PDR toutes les pièces utiles pour monter un panier entier)




    Maintenant lorsque je valide mon code j'ai (et c'est le problème que je redoutais) mon stock de panier prêt qui diminue, AINSI QUE mon stock de PDR qui diminuent. Je n'arrive pas à créer une condition SI (si panier pret ne pas prendre de PDR) dans une autre condition SI (si PTR 001 sélectionné alors ...).



    Merci à tous pour vos premières réponses en tous cas

  6. #6
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2018
    Messages : 7
    Par défaut
    Bonjour,

    J'ai essayé de rajouter une condition pour les stocks de PDR (si PTR 001 choisit + stock de panier prêt < 1).
    Ça fonctionnait mais seulement si le stock de panier prêt était au minimum de 2. Sinon lorsque le stock était de 1, le panier s'enlevait dans un premier temps (première ligne de code) et passait à 0, et les lignes de codes en dessous (enlever les PDR) se jouaient quand même car le stock était passé à 0.

    J'ai donc interverti les lignes de codes, en mettant la condition du stock de panier en dernier et HOP ça fonctionne!

    Je vais pouvoir intégrer cette mécanique avec le reste de mes filtres/paniers/PDR !

    Merci à vous pour m'avoir aider dans cette réflexion (et oui je vais penser à mettre un peu d'ordre dans mes lignes de code haha)

    Code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    If ComboBox1.Value = "PTR 001" And Sheets("Stock_Local_Filtres").Range("J21").Value < 1 Then Sheets("Stock_Local_Filtres").Range("D21").Value = (Sheets("Stock_Local_Filtres").Range("D21").Value - 20)  'cartouches
            If ComboBox1.Value = "PTR 001" And Sheets("Stock_Local_Filtres").Range("J21").Value < 1 Then Sheets("Stock_Local_Filtres").Range("D42").Value = (Sheets("Stock_Local_Filtres").Range("D42").Value - 1)  'joint 1
            If ComboBox1.Value = "PTR 001" And Sheets("Stock_Local_Filtres").Range("J21").Value < 1 Then Sheets("Stock_Local_Filtres").Range("D45").Value = (Sheets("Stock_Local_Filtres").Range("D45").Value - 1)  'joint 2
            If ComboBox1.Value = "PTR 001" And Sheets("Stock_Local_Filtres").Range("J21").Value < 1 Then Sheets("Stock_Local_Filtres").Range("D46").Value = (Sheets("Stock_Local_Filtres").Range("D46").Value - 1)  'joint 3
            If ComboBox1.Value = "PTR 001" And Sheets("Stock_Local_Filtres").Range("J21").Value < 1 Then Sheets("Stock_Local_Filtres").Range("D7").Value = (Sheets("Stock_Local_Filtres").Range("D7").Value - 1)  'panier
            If ComboBox1.Value = "PTR 001" And Sheets("Stock_Local_Filtres").Range("J21").Value < 1 Then Sheets("Stock_Local_Filtres").Range("D31").Value = (Sheets("Stock_Local_Filtres").Range("D31").Value - 20)  'coupelles
            If ComboBox1.Value = "PTR 001" And Sheets("Stock_Local_Filtres").Range("J21").Value < 1 Then Sheets("Stock_Local_Filtres").Range("D30").Value = (Sheets("Stock_Local_Filtres").Range("D30").Value - 20)  'ressorts
            If ComboBox1.Value = "PTR 001" And Sheets("Stock_Local_Filtres").Range("J21").Value >= 1 Then Sheets("Stock_Local_Filtres").Range("J21").Value = (Sheets("Stock_Local_Filtres").Range("J21").Value - 1)    'PANIER PRÊT

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Choix SGBD pour gérer un planing véhicule
    Par Dakuan dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 29/05/2008, 23h15
  2. Choix SGBD pour gérer des fichiers Excel et des images ?
    Par benoit69 dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 01/03/2007, 13h02
  3. Quel choix d'Editeur pour des Procédures Stockées ?
    Par Péchereau dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 28/02/2007, 09h57
  4. choix de table pour gestion des stocks
    Par Piloupilou999 dans le forum Access
    Réponses: 1
    Dernier message: 28/01/2007, 21h49
  5. Réponses: 2
    Dernier message: 30/06/2005, 15h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo