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 :

[E-03] Test sur un entier


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Décembre 2008
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 28
    Par défaut [E-03] Test sur un entier
    Bonjour,

    Je souhaite tester si une variable rentrée à l'aide d'un MsgBox est un entier.
    Je l'ai codé comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Dim nbActifs As Variant
    nbActifsBest = InputBox("Combien d'actifs souhaitez vous utilisez ?", "nombre d'actifs")
    Do While Not ok
            nbActifsBest = InputBox("Combien d'actifs souhaitez vous utilisez ?", "Vous devez saisir un entier")
            ok = IsNumeric(nbActifsBest)
            ok = ok And nbActifsBest = Int(Val(nbActifsBest))
            ok = ok Or nbActifsBest = ""
    Loop
    Et le problème c'est que même si on rentre un entier pour la première fois il redemande la saisie d'un entier puis si c'est un entier passe à la suite.

    Quelqu'un aurait-il une idée pour éviter cette boucle inutile ?

    Merci d'avance,
    Arnaud.

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    L'erreur ne vient pas de ta boucle dont tu sors normalement si ok... Donc ça vient "d'ailleurs"
    Pour le vérifier, ajoute la ligne suivante après la sortie de la boucle (après Loop)
    Où places-tu ton code ? Dans quel événement ? Tu dois coller une donnée quelque part qui provoque un événement dans lequel ton code se trouve... C'est Sherlock Holmes qui me l'a dit

    Edit
    En cas d'erreur de saisie, et afin que l'utilisateur puisse voir ce qu'il a saisi, j'ajouterais ça à ton inputbox
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            nbActifsBest = InputBox("Combien d'actifs souhaitez vous utilisez ?", _
                           "Vous devez saisir un entier", nbActifsBest)
    Juste une idée

  3. #3
    Membre averti
    Inscrit en
    Décembre 2008
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 28
    Par défaut
    Quand je rajoute Le message s'affiche que lors de la deuxième saisie de l'entier.
    Il me semble que l'erreur provient de la boucle et de la place du test.

    Arnaud.

  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 sincenono et le forum
    Si on fait ta macro à la main, on a
    - une première InputBox
    - un test si ok, qui est à false, puisque la macro vient de la créer
    - une deuxième InputBox
    - des tests pour mettre à True la variable OK
    Et si tu supprimais la première ligne, hein ?

    Quand tu as des problèmes de ce style, exécute ta maco en pas-à-pas avec F8, en vérifiant tes variables
    A+

  5. #5
    Membre averti
    Inscrit en
    Décembre 2008
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 28
    Par défaut
    Si je supprime la première ligne effectivement je n'ai plus le problème.

    Mais dans ce cas comment je peux faire pour avoir deux MsgBox différentes : la première qui demande le nombres d'actifs et la deuxième expliquant qu'il y a une erreur lors de la saisie précédente ?

  6. #6
    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 sincenono et le forum
    Tu mets une variable "compteur" que tu incrémentes et tu la testes soit pour choisir la inputbox, soit pour choisir le texte.
    Mais pourquoi ne pas préciser d'entrée que c'est un entier que tu veux ? Où récupérer la partie entière ?
    A+

  7. #7
    Membre averti
    Inscrit en
    Décembre 2008
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 28
    Par défaut
    Bon en fait, j'ai trouvé une solution, mais pas très belle.

    C'est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    nbActifsBest = InputBox("Combien d'actifs souhaitez vous utilisez ?", "nombre d'actifs")
    ok = IsNumeric(nbActifsBest)
    ok = ok And nbActifsBest = Int(Val(nbActifsBest))
    ok = ok Or nbActifsBest = ""
    Do While Not ok
            nbActifsBest = InputBox("Combien d'actifs souhaitez vous utilisez ?", "Vous devez saisir un entier")
            ok = IsNumeric(nbActifsBest)
            ok = ok And nbActifsBest = Int(Val(nbActifsBest))
            ok = ok Or nbActifsBest = ""
    Loop
    J'ai fait quelque test ca a l'air de marcher.

    Arnaud.

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

Discussions similaires

  1. Test sur un nombre entier ou pas
    Par coco38 dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 16/04/2007, 11h14
  2. test sur un recordset
    Par georgeabitbol dans le forum ASP
    Réponses: 2
    Dernier message: 15/07/2004, 14h39
  3. [langage] Test sur un caractère
    Par GLDavid dans le forum Langage
    Réponses: 8
    Dernier message: 07/07/2004, 18h03
  4. test sur fichiers[forms9i]
    Par Challenger dans le forum Forms
    Réponses: 6
    Dernier message: 14/06/2004, 17h25
  5. Test sur un champs vide
    Par PrinceMaster77 dans le forum ASP
    Réponses: 2
    Dernier message: 27/04/2004, 12h54

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