Bonjour! Il y a quelques temps, on avait demandé de l'aide pour un projet informatique que nous avions à faire. N'arrivant malgré tout pas à faire ce que nous voulions, nous avons changé nos objectifs mais un obstacle nous barre à nouveau la route.

Dans un Userform (nommé BB_IMC), nous avons programmé le bouton "Ok" de la sorte :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
Private Sub Bouton_Ok_Click()
    Do
        Do
            If Not IsNumeric(PoidsBox) Then
                rép = MsgBox("Le poids que vous avez saisi n'est pas numérique; réessayez.", vbOKOnly + vbExclamation, "Oups!")
                Range("poids").Clear
                flag1 = "red"
            ElseIf PoidsBox > 200 Or PoidsBox < 20 Then
                rép = MsgBox("Le poids que vous devez saisir doit être compris entre 20 et 200 kilos; réessayez.", vbOKOnly + vbExclamation, "Oups!")
                Range("poids").Clear
                flag1 = "red"
            ElseIf PoidsBox <= 200 Or PoidsBox >= 20 Then
                Sheets("Feuille IMC").Range("poids") = PoidsBox.Text
                flag1 = "green"
                Exit Do
            End If
        Loop While flag1 = "green"
 
        Do
            If Not IsNumeric(TailleBox) Then
                rép = MsgBox("La taille que vous avez saisie n'est pas numérique; réessayez.", vbOKOnly + vbExclamation, "Oups!")
                Range("taille").Clear
                flag2 = "red"
            ElseIf TailleBox > 2 Or TailleBox < 1 Then
                rép = MsgBox("La taille que vous devez saisir doit être comprise entre 1 mètre et 2 mètres; réessayez.", vbOKOnly + vbExclamation, "Oups!")
                Range("taille").Clear
                flag2 = "red"
            ElseIf TailleBox <= 2 Or TailleBox >= 1 Then
                Sheets("Feuille IMC").Range("Taille") = TailleBox.Text
                flag2 = "green"
                Exit Do
            End If
        Loop While flag2 = "green"
    Loop While flag1 = "green" And flag2 = "green"
End Sub
Jusque là, tout fonctionne. Cependant, on souhaiterait qu'une fois que flag1 & flag2 soient égal à "green", l'userform se ferme (BB_IMC.hide) et qu'un autre s'ouvre (BB_Résultat.show), mais on a beau tourner dans tous les sens, ça plante à chaque fois... Au secours!