Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Calcul TEXTBOX dans Userform

  • Initiateur de la discussion Initiateur de la discussion eric72
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

eric72

XLDnaute Accro
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
 

Pièces jointes

vire moi ces cochonnerie de locked sur tout les textboxs qui le sont
je te l'ai deja dis me semble til
une fois débloqué
dans le case de la plante
VB:
Private Sub txtB_Change()
'la variable "tous" contient les object textbox de leur frame respective
    Dim critere As Boolean, V
    With mamanFram
        Select Case .Name
        Case "FrCdt":
            MsgBox mamanFram.Name & vbCrLf & Join(Tout_les_Noms) & vbCrLf & "le textbox N°1 de cette frame est le " & tous(1).Name

        Case "FrPlante":
            V = Array(.PrixAchatPlante.Value, .CoeffPlante.Value, .PrixAchatPlante.Value, .TransPlante.Value)
            critere = V(0) <> "" And V(1) <> "" And V(2) <> "" And V(3) <> ""
            If critere Then .PRPlante.Value = (CDbl(V(0)) * CDbl(V(1))) + (CDbl(V(2)) * CDbl(V(3)))

        Case "FrPot":
            MsgBox mamanFram.Name & vbCrLf & Join(Tout_les_Noms) & vbCrLf & "le textbox N°1 de cette frame est le " & tous(1).Name
            'c'est ici que tu dois faire tes calcul non de dieu !!

        Case "FrPlaque":
            MsgBox mamanFram.Name & vbCrLf & Join(Tout_les_Noms) & vbCrLf & "le textbox N°1 de cette frame est le " & tous(1).Name
            'c'est ici que tu dois faire tes calcul non de dieu !!


        Case "FrChromo":
            MsgBox mamanFram.Name & vbCrLf & Join(Tout_les_Noms) & vbCrLf & "le textbox N°1 de cette frame est le " & tous(1).Name
            'c'est ici que tu dois faire tes calcul non de dieu !!

        Case "FrEtiquette":
            MsgBox mamanFram.Name & vbCrLf & Join(Tout_les_Noms) & vbCrLf & "le textbox N°1 de cette frame est le " & tous(1).Name
            'c'est ici que tu dois faire tes calcul non de dieu !!

        Case "FrEntourage":
            MsgBox mamanFram.Name & vbCrLf & Join(Tout_les_Noms) & vbCrLf & "le textbox N°1 de cette frame est le " & tous(1).Name
            'c'est ici que tu dois faire tes calcul non de dieu !!


        Case "FrEmballage":
            MsgBox mamanFram.Name & vbCrLf & Join(Tout_les_Noms) & vbCrLf & "le textbox N°1 de cette frame est le " & tous(1).Name
            'c'est ici que tu dois faire tes calcul non de dieu !!

        Case "FrTransport":
            MsgBox mamanFram.Name & vbCrLf & Join(Tout_les_Noms) & vbCrLf & "le textbox N°1 de cette frame est le " & tous(1).Name
            'c'est ici que tu dois faire tes calcul non de dieu !!

        Case "FrAccess":
            MsgBox mamanFram.Name & vbCrLf & Join(Tout_les_Noms) & vbCrLf & "le textbox N°1 de cette frame est le " & tous(1).Name
            'c'est ici que tu dois faire tes calcul non de dieu !!

        Case "FrMO":
            MsgBox mamanFram.Name & vbCrLf & Join(Tout_les_Noms) & vbCrLf & "le textbox N°1 de cette frame est le " & tous(1).Name
            'c'est ici que tu dois faire tes calcul non de dieu !!

        End Select
    End With
End Sub

regarde


elle est ou la difficulté là
 
Merci Patrick mais tu ne dois pas te rappeler que toutes les textbox ne sont pas forcément remplies, donc ça ne va pas.
Ne te prends pas trop la tête, j'ai adapté la méthode de Robert qui me parait , pour moi, plus adaptée.
Je sais que tu ne laches rien mais là !!!
Je ne voudrais pas être responsable d'un pêtage de plomb lol!!!
Tu es extra.
Merci beaucoup
 
Merci Patrick mais tu ne dois pas te rappeler que toutes les textbox ne sont pas forcément remplies, donc ça ne va pas.

et ben on fait un replace par 1 si il faut
regarde teste ça dans le mien en délockant bien sur
si ça c'est pas plus simple alors
je les ai testé toute ses frames
les codes c'est toujours la meme chose regarde bien


VB:
Private Sub txtB_Change()
'la variable "tous" contient les object textbox de leur frame respective
    Dim critere As Boolean, V
    With mamanFram
        Select Case .Name
        Case "FrCdt":
             V = Array(.PrixCdt.Value, .TxtSoie.Value, .TxtCordelette.Value, .TxtEtiquetteCarton.Value, CoeffCdt.Value)
            critere = V(0) <> "" And V(1) <> "" And V(2) <> "" And V(3) <> "" And V(4)
            If critere Then .PRCdt = (CDbl(0)) + CDbl(V(1)) + CDbl(V(2)) + CDbl(V(3)) * CDbl(V(4))
        
        Case "FrPlante":
            V = Array(.PrixAchatPlante.Value, .CoeffPlante.Value, .PrixAchatPlante.Value, .TransPlante.Value)
            critere = V(0) <> "" And V(1) <> "" And V(2) <> "" And V(3) <> ""
            If critere Then .PRPlante.Value = (CDbl(V(0)) * CDbl(V(1))) + (CDbl(V(2)) * CDbl(V(3)))

        Case "FrPot":
            V = Array(.PrixPot.Value, .CoeffPot.Value)
            critere = V(0) <> "" And V(1) <> ""
            If critere Then .PRPot.Value = (CDbl(V(0)) * CDbl(V(1)))

        Case "FrPlaque":
            V = Array(.PrixPlaque.Value, .CoeffPlaque.Value, .NbPlantePlaque.Value)
            critere = V(0) <> "" And V(1) <> "" And V(2) <> ""
            If critere Then .PRPlaque = (CDbl(V(0)) * CDbl(V(1))) / CDbl(V(2))

        Case "FrChromo":
            MsgBox mamanFram.Name & vbCrLf & Join(Tout_les_Noms) & vbCrLf & "le textbox N°1 de cette frame est le " & tous(1).Name
            'c'est ici que tu dois faire tes calcul non de dieu !!

        Case "FrEtiquette":
            MsgBox mamanFram.Name & vbCrLf & Join(Tout_les_Noms) & vbCrLf & "le textbox N°1 de cette frame est le " & tous(1).Name
            'c'est ici que tu dois faire tes calcul non de dieu !!

        Case "FrEntourage":
            MsgBox mamanFram.Name & vbCrLf & Join(Tout_les_Noms) & vbCrLf & "le textbox N°1 de cette frame est le " & tous(1).Name
            'c'est ici que tu dois faire tes calcul non de dieu !!


        Case "FrEmballage":
            MsgBox mamanFram.Name & vbCrLf & Join(Tout_les_Noms) & vbCrLf & "le textbox N°1 de cette frame est le " & tous(1).Name
            'c'est ici que tu dois faire tes calcul non de dieu !!

        Case "FrTransport":
            MsgBox mamanFram.Name & vbCrLf & Join(Tout_les_Noms) & vbCrLf & "le textbox N°1 de cette frame est le " & tous(1).Name
            'c'est ici que tu dois faire tes calcul non de dieu !!

        Case "FrAccess":
            MsgBox mamanFram.Name & vbCrLf & Join(Tout_les_Noms) & vbCrLf & "le textbox N°1 de cette frame est le " & tous(1).Name
            'c'est ici que tu dois faire tes calcul non de dieu !!

        Case "FrMO":
            MsgBox mamanFram.Name & vbCrLf & Join(Tout_les_Noms) & vbCrLf & "le textbox N°1 de cette frame est le " & tous(1).Name
            'c'est ici que tu dois faire tes calcul non de dieu !!

        End Select
    End With
End Sub
mais bon j’arrête je vois que tu persiste avec des classes qu'i ne servent a rien
j'ai un peu honte que l'userform UsfModifGeneral que j'ai tout refait se trouve dans la même application de cet userform a 56 classes 😂😂😂
bref je jette tout ton projet puisque tu prend une autre voie je vais m'occuper d'un autre
bonne continuation et bonne chance 😉
 
Patrick,
Ne le prends surtout pas mal, il y a juste que c'est le premier qui a résolu mon problème, ce qui ne va pas m'empêcher d'adapter ton code quand même.
En effet vu le boulot que tu as déjà fait il est hors de question de ne pas suivre ta méthode.
Je te tiens au courant et respecte trop ton travail pour tout jeter.
Merci tu es top
Eric
 
Re,

Je suis sans conteste bien moins balèze que Patrick.
Comme j'ai été absent une bonne partie de l'après-midi. Je suis un peu perdu et je n'ai pas envie de continuer si finalement tu dois employer une autre méthode. Sinon, renvoie moi le dernier fichier et le problème qu'il contient...
 

Robert,
J'avais un souci lorsque je chargeais une fiche produit avec la combobox CbRecherche dans lequel il n'y avait pas de plaque, j'ai donc mis dans l'initialize de l' Usf NbplantePlaque=1
Vous pouvez me dire ce que vous en pensez.
Voilà la version après modif mais je n'ai pas fini!!!
Merci Robert
 

Pièces jointes

re
je pense que tu a fait une erreur dans ta formulation sur ta feuille formule a adapter
frame "FrEmballage" PrEmballage= (mousseline+kraft+dssmith)

il me semble qu'il y a des quantités ne doit t on pas les multiplier ???
 
voilà j'ai corrigé acces

en l'etat quand je tape a la main tout fonctionne

tu me diras les optionals (ceux qui peuvent rester vides)
VB:
Private Sub txtB_Change()
'la variable "tous" contient les object textbox de leur frame respective
    Dim critere As Boolean, V
    With mamanFram
        Select Case .Name
        Case "FrCdt":
            V = Array(.PrixCdt.Value, .TxtSoie.Value, .TxtCordelette.Value, .TxtEtiquetteCarton.Value, .CoeffCdt.Value)
            critere = V(0) <> "" And V(1) <> "" And V(2) <> "" And V(3) <> "" And V(4)
            If critere Then .PRCdt = (CDbl(0)) + CDbl(V(1)) + CDbl(V(2)) + CDbl(V(3)) * CDbl(V(4))

        Case "FrPlante":
            V = Array(.PrixAchatPlante.Value, .CoeffPlante.Value, .PrixAchatPlante.Value, .TransPlante.Value)
            critere = V(0) <> "" And V(1) <> "" And V(2) <> "" And V(3) <> ""
            If critere Then .PRPlante.Value = (CDbl(V(0)) * CDbl(V(1))) + (CDbl(V(2)) * CDbl(V(3)))

        Case "FrPot":
            V = Array(.PrixPot.Value, .CoeffPot.Value)
            critere = V(0) <> "" And V(1) <> ""
            If critere Then .PRPot.Value = (CDbl(V(0)) * CDbl(V(1)))

        Case "FrPlaque":
            V = Array(.PrixPlaque.Value, .CoeffPlaque.Value, .NbPlantePlaque.Value)
            critere = V(0) <> "" And V(1) <> "" And V(2) <> ""
            If critere Then .PRPlaque = (CDbl(V(0)) * CDbl(V(1))) / CDbl(V(2))

        Case "FrChromo":
            If .PrixChromo.Value <> "" Then .PRChromo.Value = .PrixChromo.Value

        Case "FrEtiquette":
            If .PrixEtiquette.Value <> "" Then .PREtiquette.Value = .PrixEtiquette.Value

        Case "FrEntourage":
            If .PrixEntourage.Value <> "" Then .PREntourage.Value = .PrixEntourage.Value

        Case "FrEmballage":
            V = Array(.Mousseline.Value, .Kraft.Value, .DsSmith.Value)
            critere = V(0) <> "" And V(1) <> "" And V(2) <> ""
            If critere Then .PREmballage.Value = CDbl(V(0)) + CDbl(V(1)) + CDbl(V(2))

        Case "FrTransport":
            V = Array(.PoidsPlante.Value, .PrixKgPlante.Value)
            critere = V(0) <> "" And V(1) <> ""
            If critere Then .PRTransport.Value = (CDbl(V(0)) * CDbl(V(1)))

        Case "FrAccess":
            V = Array(.TxtPrixAccessoire.Value, .TxtCoeffAccess.Value)
            critere = V(0) <> "" And V(1) <> ""
            If critere Then .PRAccess.Value = (CDbl(V(0)) * CDbl(V(1)))

        Case "FrMO":
            V = Array(.TxtCoutHrMO.Value, .TxtTempsMO.Value)
            critere = V(0) <> "" And V(1) <> ""
            If critere Then .TxtPrMO.Value = (CDbl(V(0)) * CDbl(V1))
        End Select
    End With
End Sub
voila une classe et tout mes testbox sont géré et même le numeric forcé en même temps
 
re
je pense que tu a fait une erreur dans ta formulation sur ta feuille formule a adapter
frame "FrEmballage" PrEmballage= (mousseline+kraft+dssmith)

il me semble qu'il y a des quantités ne doit t on pas les multiplier ???
Si si bien sur mais quand on selectionne dans combobox il fait un vlookup pour le prix unitaire et quand on met une quantité il recalcule le total dans mousseline, kraft et dssmith , regarde le fichier
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
38
Affichages
900
Réponses
1
Affichages
432
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…