Microsoft 365 Besoin d'aide pour optimiser un code(boucle pour combobox et textbox)

lalimace

XLDnaute Nouveau
Bonjour à tous,
Avant toutes choses je tenais à remercier les personnes qui interviennent sur ce forum qui est une mine d'or pour un débutant comme moi.

Je travail depuis quelques jours sur un fichier de gestion de stock pour une association.
J'ai essayé de le simplifier (en vain) en utilisant des boucles pour mes combobox mais je n'y arrive pas car elles n'ont pas le même nom.
Dans les faits le fichier fonctionne mais le code est "très lourd" et vraiment pas optimisé dû à ma faible connaissance en VBA.
Sur mon ordinateur aucun problème mais ceux que possède l'association ne sont pas très récent j'ai donc peur d'un temps d'attente excessive lors des ajouts.

Je m'aide d'un userform pour ajouter chaque entrée et sortie de stock dans un tableau sur une feuille excel.
Il y'a une cinquantaine de combobox et une centaine de textbox, les textbox se remplissent automatiquement en fonction du choix dans les combobox.
Un onglet miroir est présent pour incrémenter la date, le type de mouvement et le fournisseur dans chaque ligne à chaque fois qu'une combobox est remplie.
Pour ajouter une ligne dans le tableau, la macro va chercher chaque contrôle non vide de 1 à 8 en fonction de leurs noms.

Mes questions sont les suivantes :
- Comment utiliser des boucles pour simplifier mon code qui est très répétitif ?
- Est-il possible d'alimenter les combobox références en fonction du combobox fournisseur via la feuille stock (exemple : si dans fournisseur je sélectionne "don", les combobox n'afficheront que les références du stock qui ont pour fournisseur "don") ?


Je ne sais pas si j'ai réussi à être clair dans mes explications mais normalement avec la PJ vous devriez être en mesure de saisir un peu mieux le problème.
Le fichier ci-joint est un fichier modèle commenté de mon userform en beaucoup plus léger.
Je vous remercie d'avance pour le temps que vous passerez sur ces problématique et continue de chercher de mon côté en espérant trouver une solution.
 

Pièces jointes

  • modele gestion.xlsm
    49.2 KB · Affichages: 36

ChTi160

XLDnaute Barbatruc
Bonsoir lalimace
Bonsoir jean-marcel
j'ai découvert que tu utilises
VB:
ActiveWorkbook.Names("Auteur")
ce qui m'a poussé a aller fouiller dans les propriétés avancées et autres Noms définis !
mais je n'ai pas trouvé d'où vient le "Réalisation" qui apparait dans le Label Lol
Peux tu me l'expliquer ?
Merci par avance
Cordialement
jean marie
 

JM27

XLDnaute Barbatruc
Bonsoir
Comme je crois qu'il va y avoir plusieurs utilisateurs de ce fichier , j'ai sécurisé certaines actions par mot de passe ( TOTO) a changer dans la macro FmMotDePasse et a mettre en majuscule.
Cela n'est qu'une petite sécurité qui peut être facilement violée par des utilisateurs avertis.
De plus j'ai amélioré l'ergonomie de la saisie en déroulant les combobox en automatique si celles ci ne sont pas documentées.
et la je crois que l'on arrive au bout

Il ne reste plus qu'à faire une saisie intuitive dans les déroulants client ou fournisseurs référence et désignation , si ceux ci sont en nombre conséquent. ( a toi de le dire) peut être utile si tu as plus de 100 fournisseurs ou clients ou références ou désignations
 

Pièces jointes

  • modele gestion de stocks 4.xlsm
    168.9 KB · Affichages: 4
Dernière édition:

lalimace

XLDnaute Nouveau
Bonjour @JM27,

J'ai pu essayer de fond en comble le fichier est il est vraiment excellent.
Concernant la saisie intuitive c'est l'un des points que je souhaitais aborder aujourd'hui.
Serait-il possible :
- d'avoir une saisie intuitive concernant les références(nous en avons plus d'une centaine) mais d'enlever la possibilité de rechercher un produit via sa désignation.
-Trier automatiquement les dates de la plus récente à la plus ancienne à chaque ajout de mouvement.
-possibilité de supprimer un mouvement et d'actualiser le stock en fonction de la suppression (je ne sais pas si c'est faisable dans l'état actuel des choses, j'ai essayé quelques pistes mais en vain)
-Mettre un mot de passe uniquement à l'ouverture de l'userform.

EDIT : -Rajouter une colonne dans la feuille mouvement qui indiquerait le stock après le mouvement pour avoir un historique des stocks.

Pour le reste c'est niquel, l'ajout de fournisseur qui se fait automatiquement, la possibilité de créer/supprimer des produits, le stock minimal et la visualisation des produits manquants/presque épuisés.. c'est vraiment incroyable.
Merci pour tout ton travail, nous serons en mesure de démarcher d'autres enseignes en leur expliquant que nous sommes désormais capable de montrer pour qui/quand (et combien) sont distribués les denrées alimentaires qu'on nous offre sans passer des heures à tout rédiger sur un cahier et le retranscrire sur un tableau.
Merci beaucoup
 
Dernière édition:

JM27

XLDnaute Barbatruc
Bonsoir
Avec saisie intuitive
J'ai gardé la recherche par désignation , car cela me parait plus facile que faire une recherche par la ref
De toute manière on peut faire les deux :qui peut le plus peut le moins.


A tester sans modération

Il y a surement des bug car cela se complique fortement

Pour le stock âpres mouvement , je crains que cela ne sois pas possible car si tu supprimes un mouvement , ton stock est réajusté (dans la feuille stock) c'est ok , mais si cette référence à été prélevée ou ajoutée ultérieurement à cette suppression, les valeurs de stocks après mouvement pour de ces lignes postérieures à la ligne supprimée ne seront pas correcte.( ce ne sont as des formule de calcul.)
je ne sais pas si je suis clair ;)

Autre cas
Stock d'un article à 0
Tu fais une rentrée de 10 articles le stock
Tu sors ensuite un article de cette référence.
il ne t'en reste plus que 9 .
ensuite pour terminer , tu essayes de supprimer le mouvement d'entrée de ces 10 articles.
comme le stock est à 9 et que tu essayes de supprimer l'entrée de ces 10 articles, cela fait 9 -10 =-1
donc je bloqué cette suppression.
je ne sais pas si je suis clair;)
 

Pièces jointes

  • modele gestion de stocks5.xlsm
    179.8 KB · Affichages: 2

lalimace

XLDnaute Nouveau
Bonsoir,

J'ai rajouté un petit edit sur le dernier post, je te le remet ici


EDIT :
-Rajouter une colonne dans la feuille mouvement qui indiquerait le stock après le mouvement pour avoir un historique du stock. (par exemple après la colonne quantité rajouté un colonne stock qui indiquerait le stock après le mouvement, valeur qui resterait fixe bien sur même en cas de suppression)

Pour la fonction supprimer un mouvement je comprend le cas que tu exposes mais ce n'est pas un problème, je voulais simplement cette fonction pour empêcher les personnes qui travailleront sur le fichier de modifier directement les feuilles de calcul en cas d'erreur de leur part (les bénévoles n'ont vraiment pas l'habitude de l'outil informatique, je crains de nombreuses erreur au début et veux éviter de les faire stresser en simplifiant la tâche au maximum)

Je test tout ça de fond en comble et te remercie une nouvelle fois (qui ne sera sûrement pas de trop) pour l'aide exceptionnelle que tu m'apportes !!
 

JM27

XLDnaute Barbatruc
bonsoir
J'ai répondu à ton édit en te disant que cela n'était pas possible.
Maintenant pour éviter des soucis , on peut protéger par programme les feuilles , de manière à éviter les erreurs.
j'ai par le passé réalisé des applis destinées à des personne qui n'y connaissait rien à l'outil informatique.( et en plus pour des action humanitaires : Croix rouge appli presque identique à la tienne , mais encore plus complexe)
Il faut "bétonner" afin d'éviter les erreurs.( protéger les feuilles , les masquer , etc.
A toi de voir si tu le souhaites .

Mais je vais faire ta modif d'ajout d'une colonne sachant que cela ne sera pas correcte parfois
 

lalimace

XLDnaute Nouveau
Bonsoir @JM27,

Ton petit guide d'utilisation est très bien détaillé, je n'ai pas constaté de bug à part entière si ce n'est un stock négatif (ou un historique de stock erroné) comme tu l'a énoncé lors de certains cas de suppression (qui n'est vraiment pas problématique en soi si on supprime tout les mouvements qui suivent la première suppression).

Pour le bétonnage des feuilles je ne pense pas que cela soit nécessaire, je vais simplement mettre en taille 40 le "on n'écrit pas directement dans les feuilles" 😂


Je te remercie encore et encore (ce ne sera jamais assez) pour tout le travail que tu as fourni, MERCI BEAUCOUP !
Il ne me reste plus qu'à faire l'inventaire de mes stock et mettre en place ce nouveau suivi.

Merci pour tout Jean-Marcel 👍👍👍👍👍👍👍👍
 

Discussions similaires

Réponses
28
Affichages
921

Statistiques des forums

Discussions
311 720
Messages
2 081 925
Membres
101 841
dernier inscrit
ferid87