Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
Bonjour,
Je cherche à faire des calculs de Textbox dans un Userform en sachant qu'elles ne sont pas toujours toutes renseignées à chaque fois, malgré cela j'aimerais que le calcul se fasse quand même en tenant compte de celles renseignées, donc j'ai adapté ce code mais ça ne va pas.
Ou est la boulette?
Merci à tous
et oui depuis toute a l'heure la classe est prete
mais ton fichier post1 bug dans le calcul je galere depuis toute a l'heure
en tout cas la methode critere n'est pas bonne ou mal employée
bon je prend le nouveau et je transfere la classe
Tu as très bien compris le principe ! Patrick aura certainement une solution plus efficace... Toutefois. en pièce jointe la version 3 de ton fichier.
J'ai supprimé les Select Case (Name) dans les modules de classes. d'Une part parce qu'ils étaient inutiles puisque les tableaux TTB ne permettaient pas un autre contrôle que ceux concernés et d'autre part parce que maintenant tout fonctionne. J'ai modifié les code des cases d'option Changer Coeff...
Re Bonjour Robert,
J'ai adapté pour toutes les frames et ça marche!!!
Par contre j'ai voulu en faire une TB9ClassCoutRevient qui ne se calcule pas, c'est peut-être parce qu'elle fait référence à CoutRevient qui n'est pas dans une frame?
Merci
Eric
re
a ben sur celui là la combobox ne se remplie meme plus
bref
ce que j'essaie de t'expliquer depuis des plombes
c'est par exemple
dans la classe emballage je vois ceci
VB:
Option Explicit
Public WithEvents TB6 As MSForms.TextBox 'définit l'instance de classe (les Textboxes de la classe)
Private Sub TB6_Change()
Dim V1 As Double, V2 As Double, V3 As Double 'déclare les variables V1 à V5
If UsfProduit.Mousseline = "" Then V1 = 0 Else V1 = CDbl(UsfProduit.Mousseline) 'si le contrôle est vide, définit la variable V1
If UsfProduit.Kraft = "" Then V2 = 0 Else V2 = CDbl(UsfProduit.Kraft) 'si le contrôle est vide, définit la variable V2
If UsfProduit.DsSmith = "" Then V3 = 0 Else V3 = CDbl(UsfProduit.DsSmith) 'si le contrôle est vide, définit la variable V3
UsfProduit.PREmballage = (V1 + V2 + V3) 'renvoie le calcul dans le contrôle PRPlante
End Sub
tu peux m'expliquer a quoi ça sert de coder l'event change d'un textbox dans une classe si c'est pour qu'un seul textbox ???
moi je peux te le dire; autant le faire dans l'event d'origine dans le userform
et c'est comme ça pour pratiquement toute les classes sauf les operation qui différent
Absolument inutile
je sais pas qui t'a pondu ça mais c'est brouette pour transporter trotinette
bref si ça te convient tant mieux pour toi ,je pas perdre mon temps c'est trop brouillon pour moi désolé
je te fait un truc vide avec ma classe comme ca il n'y aura aucun autre code que ma classe
pour que tu comprenne le principe d'une classe (le vrai)
Tu as très bien compris le principe ! Patrick aura certainement une solution plus efficace... Toutefois. en pièce jointe la version 3 de ton fichier.
J'ai supprimé les Select Case (Name) dans les modules de classes. d'Une part parce qu'ils étaient inutiles puisque les tableaux TTB ne permettaient pas un autre contrôle que ceux concernés et d'autre part parce que maintenant tout fonctionne. J'ai modifié les code des cases d'option Changer Coeff...
re
a ben sur celui là la combobox ne se remplie meme plus
bref
ce que j'essaie de t'expliquer depuis des plombes
c'est par exemple
dans la classe emballage je vois ceci
VB:
Option Explicit
Public WithEvents TB6 As MSForms.TextBox 'définit l'instance de classe (les Textboxes de la classe)
Private Sub TB6_Change()
Dim V1 As Double, V2 As Double, V3 As Double 'déclare les variables V1 à V5
If UsfProduit.Mousseline = "" Then V1 = 0 Else V1 = CDbl(UsfProduit.Mousseline) 'si le contrôle est vide, définit la variable V1
If UsfProduit.Kraft = "" Then V2 = 0 Else V2 = CDbl(UsfProduit.Kraft) 'si le contrôle est vide, définit la variable V2
If UsfProduit.DsSmith = "" Then V3 = 0 Else V3 = CDbl(UsfProduit.DsSmith) 'si le contrôle est vide, définit la variable V3
UsfProduit.PREmballage = (V1 + V2 + V3) 'renvoie le calcul dans le contrôle PRPlante
End Sub
tu peux m'expliquer a quoi ça sert de coder l'event change d'un textbox dans une classe si c'est pour qu'un seul textbox ???
moi je peux te le dire; autant le faire dans l'event d'origine dans le userform
et c'est comme ça pour pratiquement toute les classes sauf les operation qui différent
Absolument inutile
je sais pas qui t'a pondu ça mais c'est brouette pour transporter trotinette
bref si ça te convient tant mieux pour toi ,je pas perdre mon temps c'est trop brouillon pour moi désolé
je te fait un truc vide avec ma classe comme ca il n'y aura aucun autre code que ma classe
pour que tu comprenne le principe d'une classe (le vrai)
Ah oui bien sur il n'y a pas d'intérêt, j'ai juste mis tous les résultats des textbox "PRIX REVIENT" mais importe la méthode dès l'instant ou c'est efficace.
Je suis juste un peu perdu c'est tout, lol!!!
Tu as très bien compris le principe ! Patrick aura certainement une solution plus efficace... Toutefois. en pièce jointe la version 3 de ton fichier.
J'ai supprimé les Select Case (Name) dans les modules de classes. d'Une part parce qu'ils étaient inutiles puisque les tableaux TTB ne permettaient pas un autre contrôle que ceux concernés et d'autre part parce que maintenant tout fonctionne. J'ai modifié les code des cases d'option Changer Coeff...
re
a ben sur celui là la combobox ne se remplie meme plus
bref
ce que j'essaie de t'expliquer depuis des plombes
c'est par exemple
dans la classe emballage je vois ceci
VB:
Option Explicit
Public WithEvents TB6 As MSForms.TextBox 'définit l'instance de classe (les Textboxes de la classe)
Private Sub TB6_Change()
Dim V1 As Double, V2 As Double, V3 As Double 'déclare les variables V1 à V5
If UsfProduit.Mousseline = "" Then V1 = 0 Else V1 = CDbl(UsfProduit.Mousseline) 'si le contrôle est vide, définit la variable V1
If UsfProduit.Kraft = "" Then V2 = 0 Else V2 = CDbl(UsfProduit.Kraft) 'si le contrôle est vide, définit la variable V2
If UsfProduit.DsSmith = "" Then V3 = 0 Else V3 = CDbl(UsfProduit.DsSmith) 'si le contrôle est vide, définit la variable V3
UsfProduit.PREmballage = (V1 + V2 + V3) 'renvoie le calcul dans le contrôle PRPlante
End Sub
tu peux m'expliquer a quoi ça sert de coder l'event change d'un textbox dans une classe si c'est pour qu'un seul textbox ???
moi je peux te le dire; autant le faire dans l'event d'origine dans le userform
et c'est comme ça pour pratiquement toute les classes sauf les operation qui différent
Absolument inutile
je sais pas qui t'a pondu ça mais c'est brouette pour transporter trotinette
bref si ça te convient tant mieux pour toi ,je pas perdre mon temps c'est trop brouillon pour moi désolé
je te fait un truc vide avec ma classe comme ca il n'y aura aucun autre code que ma classe
pour que tu comprenne le principe d'une classe (le vrai)
Patrick,
Je comprends tout à fait ton point de vue mais compte tenu de ton niveau, un débutant comme moi n'arrive pas toujours à assimiler toutes ces astuces.
J'ai adapté la méthode de Robert, peut être plus lourde que la tienne mais plus facile à assimiler pour moi, même si dans la frame PLAQUE le calcul ne se fait que pour certaines Références de plaque, bizarre!!!
Je vais attendre qu'il veuille bien me dépatouiller...
Dans tous les cas, merci beaucoup pour le temps consacré et ta gentillesse, vous êtes tous d'une aide inégalable.
(Je mets quand même la méthode Robert au cas ou!!!)
Merci merci et encore Merci.
Eric
Bon pour la demo j'ai viré tout les codes et classes et tout et tout
dans la classe au change juste pour la demo j'ai mis un msgbox tu l'enlevera
et tu codera ton operation dans chaque case en fonction de la frame
tu a a dispo la variable "tous" qui est un array d'object textbox
je t'explique un exemple de codage a la fin du module classe
et voilà une classe qui gere tout les textbox numerique de toute les frames
certains ne fonctionne pas par ce qu'ils ont le "locked" a true
je t'ai mâché tout le boulot tu n'a plus qu'a remettre tes operation dans les case et basta
et non de dieu code moi ca en dur si "tous" n'a pas les textbox dans le bon ordre il on été placé dans l'ordre du tabindex tel que tu les a construit
dis moi encore que je fait compliqué
Pièces jointes
demo une seule classe pour eric patrick toulon V 1 .xlsm
enlève moi ces locked déjà on verra après
mais il te faut faire une ligne critère avant quand même pour tester si il sont numeriques
bon en tout cas j'ai la formule nommée explicitement je vais regarder
- Le résultat dans textbox "PrPlante"
- le
Private Sub TxtB_KeyPress(ByVal keyascii As MSForms.ReturnInteger)
ne marche pas
- Pour le pot j'ai mis ça,
PRPot = (.PrixPot.Value) * (.CoeffPot.Value)
Tu as très bien compris le principe ! Patrick aura certainement une solution plus efficace... Toutefois. en pièce jointe la version 3 de ton fichier.
J'ai supprimé les Select Case (Name) dans les modules de classes. d'Une part parce qu'ils étaient inutiles puisque les tableaux TTB ne permettaient pas un autre contrôle que ceux concernés et d'autre part parce que maintenant tout fonctionne. J'ai modifié les code des cases d'option Changer Coeff...
Re Robert,
J'ai trouvé, il suffisait de mettre à NbPlanteplaque à 1 si il était =""
Par contre quand je recherche un produit qui n'avait pas de plaque pour le modifier avec la combobox , ça bug, oups!!!!
Pour le reste c'est top.
Eric
Ce site utilise des cookies pour personnaliser le contenu, adapter votre expérience et vous garder connecté si vous vous enregistrez.
En continuant à utiliser ce site, vous consentez à notre utilisation de cookies.