Recupération de valeur: Condition combobox et CommandButton

bonjour au forum

bonjour à tous...Il y a de cela un moment que j'essaie de trouver une solution mais helas.

après avoir créer un userform2 dans le lequel se trouve une combobox, un CommandButton et un texte box, je cherche maintenant à les accorder tous les trois pour calcul.

je m'explique; la combobox contient des éléments (exemple:machine, procédé) que l'utilisateur doit choisir(1choix). et j'aimerai maintenant créer un code sous CommandButton qui lors de sa sélection me permettra en fonction du choix que l'utilisateur aura fait de calculer leur capabilité et d'afficher le résulat dans le textbox. Pour chaque choix fait, calculer et afficher le résultat.

et le sécond soucis est que les données dont j'ai besoin pour le calcul (Capabilité) se trouve dans un autre userform1 comment les appélés dans ce second userform.

merci de bien vouloir m'aider svp! et merci d'avance.

Bonjour Bandon,

Merci de relire le point 6 de

https://forum.excel-pratique.com/viewtopic.php?f=2&t=13

6. Pensez à joindre un fichier pour faciliter la compréhension du problème et augmenter les chances de vous faire aider (taille maximale autorisée : 1mo). N'oubliez pas de retirer toutes les informations confidentielles avant de joindre votre fichier !

A+

Ok pas de soucis,

j'ai vraiment pas fait grande chose et je vous serai vraiment reconnaissant de jeter un coups d'oeil.

23essai1.xlsm (36.77 Ko)

Bonjour,

Code à mettre dans le module de l'UserForm "UserForm1" après avoir supprimé l'existant :

Private Sub MoyenneCible_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

    Controle MoyenneCible, KeyAscii

End Sub

Private Sub DispersionCible_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

    Controle DispersionCible, KeyAscii

End Sub

Private Sub CommandButton3_Click()

    Resultat.Show

End Sub

Private Sub CommandButton1_Click()

    Frame2.Visible = True

End Sub

Private Sub Enregistrer_Click()

    Frame2.Visible = True

End Sub

Private Sub Frame1_Click()

End Sub

Private Sub UserForm_Click()

    Frame2.Visible = True

End Sub

Sub Controle(Txt As MSForms.TextBox, ByVal KeyAscii As MSForms.ReturnInteger)

    Select Case KeyAscii

        Case 44, 46 'point ou virgule

            KeyAscii = Asc(Format(0, "."))

            If InStr(Txt.Text, Format(0, ".")) <> 0 Then KeyAscii = 0 'séparateur unique

        Case 48 To 57 'chiffres

        Case Else: KeyAscii = 0 'tous les autres caractères interdits

    End Select

End Sub

Code à mettre dans le module de l'UserForm "Resultat" :

Private Sub SUIVANT_Click()
    'Recuperer les valeurs entrer dans le userform 1: moyenne  et dispersion cible

    Select Case ComboBoxCa.Text

        Case "MACHINE"
            'Calcul des capabilités
            TextBox1.Value = (Val(Userform1.MoyenneCible.Text) + 2 * Val(Userform1.DispersionCible.Text)) - (Val(Userform1.MoyenneCible.Text) - 2 * Val(Userform1.DispersionCible.Text))

        Case "PROCEDE"
            TextBox1.Value = 10 * Val(Userform1.MoyenneCible.Value)

    End Select

End Sub

Private Sub UserForm_Initialize()

    Dim I As Long

    For I = 0 To 1: ComboBoxCa.AddItem Worksheets("données").Range("W6").Offset(I, 0).Value: Next I

End Sub

Bonjour @Theze, une fois encore merci pour ton aide.

le programme passe implacablement. mais je suis posé cette question au cas ou. Et si je devrais entrer uniquement que des nombres entiers positif compris entre 2 et 25 par exemple. merci encore pour tout

Code a rajouter au code que je t'ai précédemment donné :

Private Sub DispersionCible_Exit(ByVal Cancel As MSForms.ReturnBoolean)

    ValMinMax DispersionCible, Cancel

End Sub

Private Sub MoyenneCible_Exit(ByVal Cancel As MSForms.ReturnBoolean)

    ValMinMax MoyenneCible, Cancel

End Sub

Sub ValMinMax(Txt As MSForms.TextBox, ByVal Cancel As MSForms.ReturnBoolean)

    If Txt.Text <> "" Then

        If CInt(Txt.Text) < 2 Or CInt(Txt.Text) > 25 Then

            Txt.SelStart = 0
            Txt.SelLength = Len(Txt.Text)
            Cancel = True
            MsgBox "La valeur doit être située entre 2 et 25 !"

        End If

    End If

End Sub

J'ai oublié concernant les entiers, remplaces la Sub "Controle" précédente par celle-ci qui interdit les décimales :

Sub Controle(Txt As MSForms.TextBox, ByVal KeyAscii As MSForms.ReturnInteger)

    Select Case KeyAscii

        Case 48 To 57 'chiffres

        Case Else: KeyAscii = 0 'tous les autres caractères interdits

    End Select

End Sub

bonsoir @Theze

Stp, je ne comprends pas. Qu'es ce que tu entends par "rajouter au code précédent" et pour les entiers, je veux dire si je veux entrer par exemple la moyenne cible en décimal et la dispersion en entier uniquement mais entre 2 et 25

Bonjour,

je ne comprends pas. Qu'es ce que tu entends par "rajouter au code précédent"

Alors, remplaces tout le code de l'UserForm1 par celui-ci :

Private Sub MoyenneCible_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

    Select Case KeyAscii

        Case 44, 46 'point ou virgule

            KeyAscii = Asc(Format(0, "."))

            If InStr(MoyenneCible.Text, Format(0, ".")) <> 0 Then KeyAscii = 0 'séparateur unique

        Case 48 To 57 'chiffres

        Case Else: KeyAscii = 0 'tous les autres caractères interdits

    End Select

End Sub

Private Sub DispersionCible_Exit(ByVal Cancel As MSForms.ReturnBoolean)

    With DispersionCible

        If .Text <> "" Then

            If CInt(.Text) < 2 Or CInt(.Text) > 25 Then

                .SelStart = 0
                .SelLength = Len(.Text)
                Cancel = True
                MsgBox "La valeur doit être située entre 2 et 25 !"

            End If

        End If

    End With

End Sub

Private Sub DispersionCible_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

    Select Case KeyAscii

        Case 48 To 57 'chiffres

        Case Else: KeyAscii = 0 'tous les autres caractères interdits

    End Select

End Sub

Private Sub CommandButton3_Click()

    Resultat.Show

End Sub

Private Sub CommandButton1_Click()

    Frame2.Visible = True

End Sub

Private Sub Enregistrer_Click()

    Frame2.Visible = True

End Sub

Private Sub Frame1_Click()

End Sub

Private Sub UserForm_Click()

    Frame2.Visible = True

End Sub

merci énormément @Theze, tu m'as été d'une grande aide.

Bonjour,

Content de t'avoir aidé

Rechercher des sujets similaires à "recuperation valeur condition combobox commandbutton"