IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Problème d'affichage d'userform [XL-2000]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Inscrit en
    Avril 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 5
    Par défaut Problème d'affichage d'userform
    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!

  2. #2
    Membre Expert Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Par défaut
    bonjour Nana-Didi

    à mon avis il faut traiter comme cela plus simple!!! si les nombres doivent être entiers supprime le point dans les KeyPress

    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
    Private Sub Bouton_Ok_Click()
      If PoidsBox > 200 Or PoidsBox < 20 Then
       MsgBox "poids compris entre 20 & 200 kg"
       PoidsBox = "": PoidsBox.SetFocus: Exit Sub
    Else
       Sheets("Feuille IMC").Range("poids") = PoidsBox
    End If
      If TailleBox > 2 Or TailleBox < 1 Then
        MsgBox "taille entre 1 & 2  métres"
        TailleBox = "": TailleBox.SetFocus: Exit Sub
    Else
       Sheets("Feuille IMC").Range("Taille") = TailleBox
    End If
        Unload Me: BB_Résultat.Show
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub PoidsBox_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
        If InStr("0123456789.", Chr(KeyAscii)) = 0 Then KeyAscii = 0
    End Sub
    Private Sub TailleBox_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
       If InStr("0123456789.", Chr(KeyAscii)) = 0 Then KeyAscii = 0
    End Sub
    les 2 codes ci dessus obligent la saisie de chiffres

  3. #3
    Membre du Club
    Inscrit en
    Avril 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 5
    Par défaut
    Merci infiniment, ça nous sort d'une belle pagaille ! J'avais pas pensé à tourner les choses comme ça!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2003] Problème d'affichage sur un UserForm
    Par Eltinquen dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 26/04/2013, 08h45
  2. [XL-2003] Problème d'affichage avec un UserForm d'attente pendant une macro ?
    Par [ZiP] dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/02/2010, 11h28
  3. [XL-2000] Problème d'affichage d'un UserForm d'un PC à l'autre
    Par Victor1 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 06/08/2009, 14h18
  4. Réponses: 1
    Dernier message: 06/03/2003, 11h57
  5. probléme d'affichage d'une fiche
    Par sb dans le forum Composants VCL
    Réponses: 7
    Dernier message: 29/08/2002, 09h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo