Re : Enregistrement des données d'un listbox vers plusieurs feuilles
Bonjour Ledom,
Je te conseillerait plusieurs choses qui permettent d'y voir plus clair, d'avoir un code plus lisible et un débogage plus facile:
1 - prendre un papier et un crayon, te mettre à la place d'un utilisateur lambda et en même temps comme programmeur, ecrire étape par étape le déroulement d'une commande et les actions que chaque étape entraine(initialisation des contrôles, des variables etc.).
2 - nommer tous tes contrôles avec des noms explicites avec une racine indiquant leur type.
ex: cbFournisseurs au lieu de combobox2
tbTotal au lieu de TextBox2
3 - utiliser les certaines variables au niveau du module:
ex: en tête de module tu trouveras une variable idxProduit qui contient le ListIndex de la liste des produits. Le fait de la déclarer en tête de module (au niveau module) te permets de l'utiliser dans toutes les procédures de ce module. De plus cela te permets en faisant un débogage pas à pas ou en mettant des points d'arrêts dans le programme de suivre son évolution en affichant la fenêtre espion de VBE ou la fenêtre des variables locales.
Plus tard, tu pourras te priver de certaines variables mais pour le moment je te conseille de le faire.
4 - Utiliser les structures With .... End With
Dans le classeur joint je n'ai fait qu'une partie:
1 à l'initialisation du userform, le bouton valider et le textbox 'tbNombre' sont iniber
2 click sur un fournisseur -> listBox5 se charge
3 click sur un produit -> initialisation d'une variable de niveau module 'idxProduit'
si idxProduit >-1 -> initialisation d'une variable module 'StockRestant' qui reprend à ce moment la valeur contenu dans la listbox produits
si stockRestant >0 autoriser la saisie dans tbNombre
sinon prévenir que le produit n'est plus en stock.
4 saisie dans le textbox tbNombre
si le nombre saisit > 0 et <= StockRestant, autoriser le bouton 'Valider'
sinon afficher une alerte et mettre le textbox sur fond rouge.
5 bouton valider click:
petite vérification qu'on a bien un produit (idxProduit > -1) et un Nombre (>0)
dans la listbox 5 mettre à jour la quantité disponible en stock: StockRestant - Nombre
récupération des différentes valeur pour le produit
Ajout du produit dans la listbox4
Mise à jour de tbTotal 'total commande
déselection du produit dans la listeBox5 (Listindex=-1)
mise à jour du textbox tbNombre
réinitialisation des variables:
Nombre = 0
idxProduit = -1
6 Et c'est parti pour choisir un autre produit
Pour le reste, on va y aller petit à petit. Commence par réorganiser tes codes et controles et à bien penser sur papier ce que tu as à faire, quand comment.
Juste une question. Pourquoi mettre les produits sur des feuilles séparées par fournisseur? Ce serait plus simple de mettre tous tes produits dans la même feuille avec une colonne fournisseur. Et au besoin faire des extractions.
A+