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 :

Tester une donnée entrée dans un inputBox


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 52
    Par défaut Tester une donnée entrée dans un inputBox
    J'ai un inputBox pour lequel la donnée à entrer doit être un integer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim Quantite As Integer
    Quantite = InputBox("entrez la quantité en grammes ","Quantité ingrédient")

    Si je tape un entier pas d'erreur mais en cas de fausse manœuvre, pour tester la donnée j'ai tapé le code suivant (que je trouve dans mes bouquins)


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    On error goto ErreurDonnee
    ……………….
    ErreurDonnee: 
     If Err = 13 then 
    Msgbox "vous devez taper uniquement un nombre à l'exception de tout autre type. Recommencez"
    End If 
    ……..
    pour tester j'ai tapé dans l'input Box, le bouton OK puis le bouton Cancel puis la touche Entrée
    Excel ne semble pas comprendre le Goto car j'ai toujours le message: Erreur de compilation Erreur 13 Type incompatible

    J'ai copié textuellement ce qui est écrit dans les bouquins et je ne vois vraiment pas ce qui se passe.
    Si quelqu'un pouvait m'éclairer je l'en remercie d'avance
    Avnaim

  2. #2
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonjour,

    ouvre cette discussion :

    http://www.developpez.net/forums/sho...d.php?t=572881

    lis tout, puis adapte à ton cas, au besoin

  3. #3
    Membre expérimenté Avatar de ilcocodrillo
    Profil pro
    Inscrit en
    Février 2007
    Messages
    260
    Détails du profil
    Informations personnelles :
    Âge : 19
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 260
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    On error goto ErreurDonnee
    se situe au début de la procédure ?

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut AVNAIM et le forum
    sans plus d'explication, une proposition :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub test()
    Dim Rep As Variant
    Saisie_1:
    Rep = Application.InputBox("nombre entier", "Saisie", 1000, , , , , 1)
    If Rep = 0 Then Exit Sub 'correspond à annuler
    If Rep - Fix(Rep) <> 0 Then
        MsgBox "on t'a dit un ENTIER, ce qui veut dire :" & Chr(13) & _
           "un nombre sans décimale, Clown", vbQuestion + vbOKOnly, _
           "Problème de compréhension de lecture"
        GoTo Saisie_1
    End If
    'traitement après --------------------------
    End Sub
    Si on déclare Rep en Long ou en Integer, il ne tiendra pas compte des décimales.
    Une autre variante
    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
    Sub test()
    Dim Rep As Variant
    Saisie_1:
    Rep = InputBox("nombre entier", "Saisie", 1000)
    If IsNumeric(Rep) Then
        If Rep - Fix(Rep) <> 0 Then
             MsgBox "on t'a dit un ENTIER, ce qui veut dire :" & Chr(13) & _
               "un nombre sans décimale, Clown", vbQuestion + vbOKOnly, _
               "Problème de compréhension de lecture"
            GoTo Saisie_1
        End If
    Else
        If Rep = "" Then Exit Sub
        MgsBox "vous devez taper uniquement un nombre à l'exception de tout autre type" _
                & Chr(13) & "Recommencez!!!!", vbQuestion + vbOKOnly, _
                "Problème de saisie"
    End If
    'traitement après --------------------------
    End Sub
    EDIT*****************
    et comme ça ne me plaisait pas, j'ai oublié de mettre la plus proche de la demande :
    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
    Sub test()
    On Error GoTo Err_Test
    Dim Quantite As Integer
    'traitement avant ---------
    Saisie_1:
    Quantite = InputBox("entrez la quantité en grammes ", "Quantité ingrédient")
    'traitement après ---------
    Exit Sub
    Err_Test:
    If Err.Number = 13 Then
        MsgBox "vous devez taper uniquement un nombre à l'exception de tout autre type. Recommencez"
        Resume Saisie_1
    End If
    MsgBox Err.Description, vbOKOnly, "ERREUR n°" & Err.Number
    End Sub
    Tu ne distingue pas annuler et le fait que tu ais rentré du texte . Donc, tu peux annuler indéfiniment
    A+

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 52
    Par défaut
    Bonjour et merci à tous mes sauveteurs du Forum et en particulier à Gorfael pour toutes ses suggestions codifiées. Je les ai toutes essayées. Elles fonctionnent parfaitement et j'ai fait ma petite adaptation sur mon application. Eureka ça colle pilepoil mon utilisateur pourra faire toutes les bêtises qu'il veut, ces petites lignes de code le remettra sur le bon chemin
    Merci encore
    Bonne journée et à +
    Avnaim

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

Discussions similaires

  1. Faire copier coller d'une valeur entrée dans une inputbox
    Par nico17137 dans le forum VBScript
    Réponses: 4
    Dernier message: 21/06/2013, 09h33
  2. [Toutes versions] Recuperer des données entrées dans une bibliothèque
    Par angelo k dans le forum SharePoint
    Réponses: 0
    Dernier message: 22/03/2011, 15h07
  3. [MySQL] tester les données entrées dans la formulaire
    Par marwen86 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 23/02/2010, 15h47
  4. Réponses: 11
    Dernier message: 18/01/2010, 11h29
  5. [XL-2003] Lecture de données entrées dans une feuille par une macro
    Par martinmacfly dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 16/12/2009, 16h29

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