Formulaire en VBA pour gestion de stocks et calcul du prix de la commande.

Gabiche

XLDnaute Nouveau
Bonjour tous le monde !
Cela fait quelques semaines que je parcours ce forum très intéressant à la recherche d'informations.
En tous cas bravo à tous !

Bref, je suis en train de réaliser un petit projet en VBA (ci-joint).
Ce fichier contient deux feuilles :
- "juin 2012" qui contient des numéros de commande ainsi que le prix total de la commande
- "produits" qui contient un numéro de produit, un prix ainsi que la quantité en stock

Le but, c'est que quand je suis dans la feuille "juin 2012", et quand je fais un double-clic sur les cellules C3:C65536, un formulaire apparait.
Ce formulaire contient différents champs :
- "numéro de pièce" : ce combobox va chercher une liste de produit dans la feuille "produits".
- "quantité" qui est le nombre de pièces souhaité dans la commande.
- "prix unitaire" qui est le prix d'une pièce (il faut se référer au "numéro de pièce").
- "prix total" qui est un calcul "quantité" x "prix unitaire".
- "total" qui sera le total du prix de la commande.

Pour le moment, j'ai réussi à faire l'userform, le double clic pour l'ouvrir dans les cellules, ainsi que le "Numéro de pièce" qui va se référer dans la feuille "produits".

Cependant, j'ai de la peine à faire en sorte qu'il aille chercher automatique le "prix unitaire", de même pour le reste des calculs.

Quelqu'un pourrait me donner un coup de main ?
(je ne sais pas si ce que j'ai écris est suffisamment clair)

Merci d'avance !
Gabriel
 

Pièces jointes

  • statistiques.xls
    171.5 KB · Affichages: 243
  • statistiques.xls
    171.5 KB · Affichages: 257
  • statistiques.xls
    171.5 KB · Affichages: 278

Dull

XLDnaute Barbatruc
Re : Formulaire en VBA pour gestion de stocks et calcul du prix de la commande.

Salut Gabiche, et Bienvenue sur XLD, le Forum

Essaye ce code à mettre dans le Module de L'USF
Code valable seulement pour le Numéro de Pièce 1

Code:
Private Sub quantite1_AfterUpdate()
Set C = Sheets("Produits").Columns("A").Find(What:=numerodepiece1)
If Not C Is Nothing Then
Cancel = True
If quantite1 > Val(C.Offset(, 2)) Then
quantite1 = ""
prixunitaire1 = ""
prixtotal1 = ""
MsgBox "Quantités demandées supérieures à Quantités restantes"
Exit Sub
Else
C.Offset(, 2) = C.Offset(, 2) - Val(quantite1)
prixunitaire1 = C.Offset(, 1)
prixtotal1 = C.Offset(, 1) * Val(quantite1)
End If
End If
End Sub

Ce code vérifie s'il y a assez de stock
Si pas assez de Stock Message
Sinon enlève la quantité (quantite1) du Stock

à adapter pour les autres Numéros de Pièce Remplace quantite1 par quantite2 prixunitaire1 par prixunitaire2 etc...

Bonne Journée
 

Pièces jointes

  • Gabiche.xls
    157.5 KB · Affichages: 263

Gabiche

XLDnaute Nouveau
Re : Formulaire en VBA pour gestion de stocks et calcul du prix de la commande.

Salut,

Encore merci pour le code, il est nickel.
Je l'ai un peu adapté et amélioré comme tu vas pouvoir le voir sur le fichier (ci-joint).

J'ai encore deux questions à ce propos :

- le total du formulaire fonctionne. Cependant, si la valeur totale d'une ligne est modifié, il va l'incrémenté en plus.
Exemple : je prend 3 "produits 1", cela va me couter 3 x 2 = 6 CHF.
Si maintenant je modifie la quantité et que j'en prend seulement 2, au lieu que le total de la commande fasse 2 x 2 CHF, il fera 2 x 2 CHF + 3 x 2 CHF.
Comment faire pour que le calcul fonctionne correctement ?

- pour certains textbox, je souhaiterais mettre une mise en forme spécifique : [$CHF] * #'##0.00
Comment le faire sur VBA ?

Merci d'avance et bonne journée !

Gabiche
 

Pièces jointes

  • Gabiche.xlsm
    44.2 KB · Affichages: 334

Gabiche

XLDnaute Nouveau
Re : Formulaire en VBA pour gestion de stocks et calcul du prix de la commande.

J'ai corrigé le problème pour le total en remplaçant pour chaque ligne :

totalformulaire = val(totalformulaire) + val(quantite[nombre de 1 à 7])

par

totalformulaire = ""
totalformulaire = Val(prixtotal1) + Val(prixtotal2) + Val(prixtotal3) _
+ Val(prixtotal4) + Val(prixtotal5) + Val(prixtotal6) + Val(prixtotal7)

Et cela fonctionne niquel !
 

Discussions similaires