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

Dranreb

XLDnaute Barbatruc
Ce n'est pas le classeur que j'ai joint, alors, si je comprends bien, puisque je l'y avais fait ce remplacement.
Sur quelle instruction ? À tout hasard avec vous décoché la référence à CLsCAs ?

Il est vrai que je n'ai pas pu réussir une compilation sans erreur avant de le joindre. Trop d'erreurs dans des codes à vous n'ayant rien à voir avec ça.
 
Dernière édition:

sabagof

XLDnaute Junior
Ce n'est pas le classeur que j'ai joint, alors, si je comprends bien, puisque je l'y avais fait ce remplacement.
Sur quelle instruction ? À tout hasard avec vous décoché la référence à CLsCAs ?

Il est vrai que je n'ai pas pu réussir une compilation sans erreur avant de le joindre. Trop d'erreurs dans des codes à vous n'ayant rien à voir avec ça.
Bonjour cher Dranreb et merci pour ta patience légendaire.....
Si je décoche la référence CLsCAs et que je coche la référence Microsoft Scripting Runtime, voilà ce que j'ai :
Bien sûr que ce n'est pas dans le fichier que tu as envoyé mais dans mon application. Merci.

1634197534169.png
 

Dranreb

XLDnaute Barbatruc
Ben dans l'explorateur de projets on met le curseur sur le nom de la pièce à copier (Module standard, de classe, UserForm mais pas d'objet implanté par l'application hôte), on enfonce le bouton gauche de la souris, on le traine vers n'importe quelle pièce du projet destinataire, on relâche le bouton, et hop! la copie y est.
 

sabagof

XLDnaute Junior
Ben dans l'explorateur de projets on met le curseur sur le nom de la pièce à copier (Module standard, de classe, UserForm mais pas d'objet implanté par l'application hôte), on enfonce le bouton gauche de la souris, on le traine vers n'importe quelle pièce du projet destinataire, on relâche le bouton, et hop! la copie y est.
Eh oui je continue de me démerder : voici mon blocage suivant :
après avoir copier tous les modules de classes.
1634216172668.png
 

Dranreb

XLDnaute Barbatruc
Dans la mesure où le ControlsAssociés n'est pas déclaré avec l'attribut WithEvents ça ne devrait pas géner. Ça m'arrive quelquefois, surtout en phase de développement qu'un CAsso spécifique ne soit pas reconnu en tant que CAsso implémenté. J'ignore pourquoi, et souvent ça fini par rentrer dans l'ordre tout seul après un Alt+DL
 

sabagof

XLDnaute Junior
Dans la mesure où le ControlsAssociés n'est pas déclaré avec l'attribut WithEvents ça ne devrait pas géner. Ça m'arrive quelquefois, surtout en phase de développement qu'un CAsso spécifique ne soit pas reconnu en tant que CAsso implémenté. J'ignore pourquoi, et souvent ça fini par rentrer dans l'ordre tout seul après un Alt+DL
Bonjour Dranreb et merci pour l'accompagnement.....
 

sabagof

XLDnaute Junior
Ma préoccupation de ce matin est la suivante :
Je n'arrive pas encore à faire une modification et/ou une suppression d'un enregistrement. C'est à dire comment faire revenir une ligne déjà validée pour d'éventuelles modifications. Merci et agréable matinée.
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Dans le schéma général habituel, tout commence toujours par taper quelque chose dans une des ComboBox prise en charge par un ComboBoxLiées. Dès qu'il existe quelque chose commençant par le début tapé, ça y est complété par ça, et le bouton flèche est affiché pour pouvoir choisir autre chose dans la liste commençant ainsi, et dès que l'ensemble de ces ComboBox forme une combinaison existante unique dans la base, la fiche correspondante est complètement garnie par une Prvate Sub CLs_BingoUn(ByVal Ligne As Long) si elle contient les 3 seules instructions appropriées.
Joignez un fichier où vous n'arriveriez pas à rendre opérationnel un tel principe.
Attention toujours à ce qu'une même ComboBox ne soit pas prise en charge par plusieurs ComboBoxLiées basées sur des tableux différents et actifs simultanément.
 
Dernière édition:

sabagof

XLDnaute Junior
Bonjour.
Dans le schéma général habituel, tout commence toujours par taper quelque chose dans une des ComboBox prise en charge par un ComboBoxLiées. Dès qu'il existe quelque chose commençant par le début tapé, ça y est complété par ça, et le bouton flèche est affiché pour pouvoir choisir autre chose dans la liste commençant ainsi, et dès que l'ensemble de ces ComboBox forme une combinaison existante unique dans la base, la fiche correspondante est complètement garnie par une Prvate Sub CLs_BingoUn(ByVal Ligne As Long) si elle contient les 3 seules instructions appropriées.
Joignez un fichier où vous n'arriveriez pas à rendre opérationnel un tel principe.
Attention toujours à ce qu'une même ComboBox ne soit pas prise en charge par plusieurs ComboBoxLiées basées sur des tableux différents et actifs simultanément.
Ok ça tourne
 

sabagof

XLDnaute Junior
Une autre préoccupation pratique indispensable :
A l'aide du userform "Ajout article" je fais des enregistrements dans le tableau de la feuille article. sans problème.
Ma difficulté est de vérifier avant enregistrement si le "numéro article" et la "réf./lot interne" existent déjà.

Pour vérifier si le numéro article existe déjà je fais ceci sans problème :

If Not IsError(Application.Match(Txt_nr_article, Sheets("article").Range("b:b"), 0)) Then
MsgBox ("Cette référence existe déjà").

Pour vérifier si la réf./lot interne existe déjà je fais ceci :

If Not IsError(Application.Match(Txt_lot_interne, Sheets("article").Range("b:b"), 0)) Then
MsgBox ("Cette référence existe déjà").

Le problème : comment combiner les deux pour avoir le message si simultanément les deux existent déjà. Merci.
 

Pièces jointes

  • GESTION STOCK_PHQ_ABT(prod1essai)bord.xlsm
    480.9 KB · Affichages: 1

Dranreb

XLDnaute Barbatruc
Vous n'avez encore rien compris au principe je vois.
Mettez des ComboBox pour le numéro d'article et pour la réf/lot interne dans un seul UserForm de consultation et mise à ajour. Comme ça vous ne risquerez pas de les créer en double car "Modifier" sera automatiquement proposé en CBnValider.Caption au lieu de "Ajouter"
Typiquement les procédures de mise à jour du tableu s'écrivent comme ça :
VB:
Private Sub CBnEntrée_Click()
   CAs.ValeursVers TVL
   If LCou = 0 Then
      CLs.ValeursVers TVL
      CLs.Lignes.Add.Range.Value = TVL
      CLs.Actualiser
   Else: CLs.Lignes(LCou).Range.Value = TVL: End If
   End Sub
Private Sub CBnSuppr_Click()
   If MsgBox("Êtes vous sûr de vouloir supprimer ça définitvement ?", vbYesNo + vbExclamation _
      + vbDefaultButton2, Me.Caption) = vbNo Then Exit Sub
   CLs.Lignes(LCou).Delete
   CLs.Actualiser
   End Sub
Private Sub CBnEchap_Click(): If CLs.ChangéÀLEchap Then Exit Sub
   Select Case CBnEchap.Caption
      Case "Effacer": CLs.Nettoyer: CBnEchap.Caption = "Quitter"
      Case Else: Unload Me: End Select
   End Sub
Plus besoin de s'occuper des détails c'est fait automatiquement parce que la correspondance entre les contrôles et les numéros de colonnes du tableau est établie une fois pour toutes au départ dans la Sub UserForm_Initialize.
 
Dernière édition:
Haut Bas