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

VB.NET Discussion :

InputBox et conversion de type de données


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut InputBox et conversion de type de données
    Bonjour à toutes et tous,

    Dans l'étude de VB.NET je me heurte à un problème de type de données et de conversion.

    Prenez cette petite routine pour exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim chiffre As String
    Do
        chiffre = InputBox("Entrez un chiffre de 1 à 10", "Saisie d'un chiffre")
        If chiffre = "" Then Exit Sub
    Loop Until IsNumeric(chiffre)
    MsgBox(CType(chiffre, Integer))
    1. Comment est-il possible de sortir de cette boucle alors que le retour d'une InputBox est toujours de type string (source MSDN) ?
    2. Si j'entre "1,3" dans ma InputBox, la MsgBox me sort 1. Jusque là tout est normal. Si j'entre "1.3", elle me retourne 13. Une explication ? Estimons que 1.3 soit bien de type numérique (on le suppose puisqu'on sort de la boucle), l'arrondi ne devrait-il pas se faire à 1 ?

    Merci d'avance pour vos éclaircissements.

    webrider

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    505
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2006
    Messages : 505
    Par défaut
    c'est ton messagebox qui est incorrect car integer ne prend que les entiers

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      Dim chiffre As String
            Do
                chiffre = InputBox("Entrez un chiffre de 1 à 10", "Saisie d'un chiffre")
                If chiffre = "" Then Exit Sub
            Loop Until IsNumeric(chiffre)
            MsgBox(CType(chiffre, Double))

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour Mario et merci pour ta réponse !

    En fait, je fais volontairement une conversion vers un entier pour vérifier par la pratique la perte d'information involontaire lors d'un changement de type.

    Ce qui est plus intriguant c'est la réponse différente si j'utilise une virgule (1,3) au lieu d'un point (1.3).

    J'ai l'impression que l'utilisation du point fait une conversion d'un type string vers un type integer. Mais si VB .NET considère que 1.3 est de type string, comment peut-il mettre fin à la boucle puisque je fais un test explicite pour savoir si la valeur saisie est bien numérique ?

    Mystère...

    webrider

  4. #4
    Invité
    Invité(e)
    Par défaut
    J'ai enfin trouvé mon erreur, elle se situe au niveau de la fonction IsNumeric qui selon MSDN retourne true si la valeur passée peut être convertie en nombre.

    Du coup, la valeur 1.3 arrête la boucle mais reste de type string et est convertie en integer comme il se doit (13).

    Il retourne également True si Expression est un Char ou String qui peut être correctement converti en nombre.
    webrider

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

Discussions similaires

  1. Erreur 3421, Erreur de conversion de type de données
    Par khorn dans le forum VBA Access
    Réponses: 13
    Dernier message: 01/06/2007, 10h52
  2. conversion entre types de données.
    Par jro-daemon dans le forum C
    Réponses: 2
    Dernier message: 07/05/2007, 21h41
  3. Conversion de type de données d'un champ dans un recordset DAO.
    Par heavenvibes dans le forum VBA Access
    Réponses: 9
    Dernier message: 01/03/2007, 12h21
  4. Pb de conversion de type de données
    Par keiserjo dans le forum Excel
    Réponses: 4
    Dernier message: 25/07/2006, 14h39
  5. [Excel] Problème de conversion de type de données
    Par keiserjo dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/07/2006, 12h26

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