Autres formules textbox

sabagof

XLDnaute Junior
Bonjour/Bonsoir à tous,
En tant qu'un bon débutant qui cherche à avancer, je vous remercie à l'avance de votre aide précieuse qui m'a toujours sorti d'affaire.....
Ma préoccupation de l'heure : J'ai une application de gestion de stock (ci-joint fichier). J'essai de me servir de ma base de données "basearticle" pour calculer la quantité de matière première entrant dans la composition d'un produit fini.
Sur mon userform "FABRICATION" j'ai réussi à ma manière à afficher à chaque changement de produit à fabriquer : les quantités en stock pour chaque constituant, la quantité nécessaire pour 1000.000 de comprimés. Maintenant je veux calculer automatiquement à chaque changement de la quantité à fabriquer, les quantités nécessaires. Mon problème c'est d'abord de formater tous les textbox en nombre, de mettre la formule de calcul dans chaque textbox et pour finir indiquer si le stock est suffisant ou non.

C'est tant mieux si je me suis fait comprendre..... Je demande votre indulgence .... Mes codes d'essais sont dans le fichier joint...
 

Pièces jointes

  • GESTION STOCK_aide.xlsm
    857.2 KB · Affichages: 20

sabagof

XLDnaute Junior
Re
la n'était pas la Question Lol
on parle de Formule dans TextBox
voir mon post #6
jean marie
Merci à tous, très heureux de constater l'intérêt que vous portez à mon sujet malgré que je sois le seul à me comprendre ...
Voilà un essai de ce que je pense faire :

Private Sub txt_qtefab_AfterUpdate()
'remplir les besoins

Dim Price1 As Double
Dim Price2 As Double
Dim Price3 As Double
Dim Price4 As Double

Price1 = CDbl(Txt_qtest_pa.Value)
Price2 = CDbl(Txt_qte_bes1_pa.Value)
Price3 = CDbl(Txt_qte_bes2_pa.Value)
Price4 = CDbl(txt_qtefab.Value)

Price3 = Price2 * Price4 / 1000000

If Price1 < Price3 Then

Me.Txt_obs_pa = "Stock insufisant"
Else
Me.Txt_obs_pa = "Stock disponible"
End If

End Sub

A répéter pour tous les principes actifs.
Merci.
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Chez moi tout est OK coté CLsCAs, par contre il n'y a pas de Cbx_desi_pf, dessiné dans l'UserForm Ajout_article.
Par ailleurs je déconseille plutôt de rendre non visible une ComboBox prise en charge par un ComboBoxLiées (je parle de la Cbx_désignation), surtout quand c'est la seule !
Par ailleurs je vois plus bas du code inutile concernant la collection Sheets("article").ListObjects(1).ListRows
Cette collection est connue du CLsA: c'est sa propriété Lignes. Il suffit donc de faire CLsA.Lignes.Add
Les mouvement dans la ligne ajoutée peuvent être sécurisés en appliquant automatiquement les numéros de colonnes déduits des CLsA.Add et CAsA.Add par leur méthode ValeurVers, mais pour envoyer les valeurs de contrôles dans TVLA, dûment converties en valeurs de cellules correctes quand c'est numérique, Date, etc.
Attention: il faut CLsA.Actualiser derrière
En résumé la programmation correcte pour l'ajout d'une ligne c'est :
VB:
CLsA.ValeursVers TVLA
CAsA.ValeursVers TVLA
CLsA.Lignes.Add.Range.Value = TVLA
CLSA.Lignes.Parent.Sort.Appli ' si vous y tenez
CLsA.Actualiser
Et en plus c'est autant de fois plus rapide qu'il y a de cellules dans la ligne.
 
Dernière édition:

sabagof

XLDnaute Junior
Bonjour.
Chez moi tout est OK coté CLsCAs, par contre il n'y a pas de Cbx_desi_pf, dessiné dans l'UserForm Ajout_article.
Par ailleurs je déconseille plutôt de rendre non visible une ComboBox prise en charge par un ComboBoxLiées (je parle de la Cbx_désignation), surtout quand c'est la seule !
Par ailleurs je vois plus bas du code inutile concernant la collection Sheets("article").ListObjects(1).ListRows
Cette collection est connue du CLsA: c'est sa propriété Lignes. Il suffit donc de faire CLsA.Lignes.Add
Les mouvement dans la ligne ajoutée peuvent être sécurisés en appliquant automatiquement les numéros de colonnes déduits des CLsA.Add et CAsA.Add par leur méthode ValeurVers, mais pour envoyer les valeurs de contrôles dans TVLA, dûment converties en valeurs de cellules correctes quand c'est numérique, Date, etc.
Attention: il faut CLsA.Actualiser derrière
En résumé la programmation correcte pour l'ajout d'une ligne c'est :
VB:
CLsA.ValeursVers TVLA
CAsA.ValeursVers TVLA
CLsA.Lignes.Add.Range.Value = TVLA
CLSA.Lignes.Parent.Sort.Appli ' si vous y tenez
CLsA.Actualiser
Et en plus c'est autant de fois plus rapide qu'il y a de cellules dans la ligne.

Y a t'il un format à donner a ces différents textBox ?
si oui lesquels ?
jean marie
Format nombre simplement. Au fait c'est des nombre souvent en kilogramme
 

Dranreb

XLDnaute Barbatruc
Pour les contrôle pris en charge par un CLs ou CAs un format d'affichage de valeur numérique peut être spécifié derrière la spécification de colonne à la méthode Add. La reconversion en nombre à destination de cellule par la méthode ValeursVers est automatique.
 

sabagof

XLDnaute Junior
Bonjour.
Chez moi tout est OK coté CLsCAs, par contre il n'y a pas de Cbx_desi_pf, dessiné dans l'UserForm Ajout_article.
Par ailleurs je déconseille plutôt de rendre non visible une ComboBox prise en charge par un ComboBoxLiées (je parle de la Cbx_désignation), surtout quand c'est la seule !
Par ailleurs je vois plus bas du code inutile concernant la collection Sheets("article").ListObjects(1).ListRows
Cette collection est connue du CLsA: c'est sa propriété Lignes. Il suffit donc de faire CLsA.Lignes.Add
Les mouvement dans la ligne ajoutée peuvent être sécurisés en appliquant automatiquement les numéros de colonnes déduits des CLsA.Add et CAsA.Add par leur méthode ValeurVers, mais pour envoyer les valeurs de contrôles dans TVLA, dûment converties en valeurs de cellules correctes quand c'est numérique, Date, etc.
Attention: il faut CLsA.Actualiser derrière
En résumé la programmation correcte pour l'ajout d'une ligne c'est :
VB:
CLsA.ValeursVers TVLA
CAsA.ValeursVers TVLA
CLsA.Lignes.Add.Range.Value = TVLA
CLSA.Lignes.Parent.Sort.Appli ' si vous y tenez
CLsA.Actualiser
Et en plus c'est autant de fois plus rapide qu'il y a de cellules dans la ligne.
C'est un plaisir ton intervention Dranreb, j'avoue que je ne suis pas encore très dévoué dans la manipulation des Cls et CAs mais tout est parti de toi. Ce que je trouve très avantageux.
Pour le Cbx_désignation il est caché jusqu'à ce que l'opérateur choisisse une option.
Ma sollicitation aujourd'hui c'est concernant l'userform fabrication. Merci.
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Je pense qu'il faudrait deux choses
1 — Une nouvelle feuille avec une table de correpondance entre certaines colonnes de la base articles et une référence article figurant dans sa colonne "Réf. Article".
2 — Une listBox plutôt que cette énorme quantité de TextBox, et un seul petit groupe pour la saisie après sélection d'une ligne de celle-ci
Édition: Ben non, il n'y a peut être rien à saisir … c'est juste un contrôle apparemment …
 
Dernière édition:

sabagof

XLDnaute Junior
Bonjour sabagof
le fichier demandé !
Bonne continuation
jean marie
Merci bcp Jean Marie pour m'avoir compris malgré mes difficultés à me faire comprendre. J'ai aimé l'astuce qui est intervenu sur les manières de renommer les textbox afin de pouvoir écrire un code adéquat.
Cependant 2 problèmes simples (pour les personnes averties) se posent à moi :
1- les messages "stock disponible" et "stock insuffisant" ne sont pas toujours fidèles à la réalité. c'est à dire que des fois malgré que (Txt_qtest_" & i) soit > Txt_qte_bes1_" & i il met stock insuffisant.

2- les valeurs qui sont affichés dans Txt_qte_bes2_" & i sont arrondies donc n'affichent pas les virgules comme dans Txt_qte_bes1_" & i.

Après ça je crois que tout sera parfait.
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Je le renvoie avec quelques changements.
Ne vous étonnez pas que certaines procédures ont été mise en commentaires un peu partout, c'est parce qu'elles empêchaient que la compilation du projet montre les erreurs concernant l'UFmFABRICATION.
J'ai d'ailleurs fini par renoncer à terminer par une compilation sans erreur.
Je ne peux pas le tester plus avant, car pour aucun article vous n'avez mis dans la colonnes 'composant' d'intitulé de colonne de quantité requise pour 1000000

● Nouvelle pièce jointe plus loin ⟹ Supprimée d'ici
 
Dernière édition:
Haut Bas