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 :

quel code pour dire "x n'est pas un Integer" ?


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
    Juillet 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 16
    Par défaut quel code pour dire "x n'est pas un Integer" ?
    Bonjour,

    j'ai défini une variable x en tant que Integer

    Pour qu'il n'y ait pas de bugg, je chercher le code pour dire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if x n'est pas Integer then
    .....
    end if
    Malheureusement je n'arrive pas à trouver

    Quelqu'un peut-il m'aider ?

    Merci d'avance
    Nat

  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
    Le mieux ne serait-il pas que tu connaisses les caractéristiques des différents types de données ? Regarde à "Résumé des types de données" dans l'aide en ligne de VBA -> F1

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 44
    Par défaut
    La fonction que tu cherches est VarType :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    If Not VarType(x) = vbInteger Then
     ...
    End If
    Sachant qu'en déclarant x comme Integer ce test sera toujours faux et tu n'entreras jamais dans la condition.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 16
    Par défaut
    Merci de tenter de m'aider, mais je ne comprends pas...

    J'ai bien sûr tenté l'aide office F1, dont résumé des types de données, mais le plupart du temps c'est du chinois pour moi.

    Il faut savoir que x prend la valeur donnée dans une Textbox.
    Je souhaite que cette valeur soit un nombre entier et je cherche à éviter l'erreur pour "incompatibilité de Type" si la valeur tapée est autre que numérique.

    au départ mon code était

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if x <> vbInteger then
    msgbox("veuillez entrer une donnée valide")
    end if
    Mais dans ce cas, il n'y a que 2 qui est accepté comme donnée valide (le code correspondant à VbInteger).

    Peut être que je ne déclare pas le bon type de variable...

    Merci d'éclairer ma lanterne
    Nat

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 16
    Par défaut
    Suis je bête !

    Je viens de trouver la réponse à ma question en vous la reformulant

    voilà une partie de mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    dim x as integer
    
    ...
    
    If IsNumeric(TextBox1.Value) Then
    x = TextBox1.Value
    Else
    MsgBox ("veuillez entrer un nombre valide")
    End
    End If
    c'était aussi simple que cela et cela fait 2 heures que je me casse la tête dessus !

    En tout cas merci de m'avoir aidé à réfléchir
    Nat

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 44
    Par défaut
    D'une part ce n'est pas le test que j'ai écris, d'autre part, je le répète, en déclarant x comme Integer ce sera forcément un Integer...

    La valeur d'un textbox est une chaîne. Ce n'est pas x qu'il faut tester, mais le textbox avant de l'affecter à une variable qui sera forcément entière (soit ça provoque une erreur de type soit il y a conversion implicite si la chaîne ne peut pas être convertie en nombre.)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim maSaisie as Variant
    maSaisie = txtNombre
    If VarType(maSaisie) <> vbInteger Then
     MsgBox "Veuillez saisir un nombre entier"
     Exit Sub
    Endif
    ' traitement...
    Par exemple.

    EDIT pour au dessus : IsNumeric() teste sur un nombre, pas forcément un entier (décimal, long...)

  7. #7
    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,

    1) à laestic :
    tu es bien trop sûr de toi ...
    essaye donc ceci :

    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
    Private Sub Command1_Click()
      Dim x As Integer
      If Not VarType(x) = vbInteger Then MsgBox x & " = pas entier" Else MsgBox x & " = entier" & vbCrLf & _
      "et regarde ce qu'est devenu ton x"
      x = 12.61
      If Not VarType(x) = vbInteger Then MsgBox x & " = pas entier" Else MsgBox x & " = entier" & vbCrLf & _
      "et regarde ce qu'est devenu ton x"
      'ici, on va ajouter un on error resume next, sinon on se ferait jeter, pardi
      On Error Resume Next
      x = "a"
      If Not VarType(x) = vbInteger Then MsgBox x & " = pas entier" Else MsgBox x & " = entier" & vbCrLf & _
      "et regarde ce qu'est devenu ton x"
      x = a
      If Not VarType(x) = vbInteger Then MsgBox x & " = pas entier" Else MsgBox x & " = entier" & vbCrLf & _
      "et regarde ce qu'est devenu ton x"
    End Sub
    2) à nat44 :
    tu es toi également trop sûr de toi !
    frappe donc 12,61 (avec une virgule) dans ta textbox et vois (et vois aussi ce qu'est devenu ton x, hein...)

    Si tu nous expliquais maintenant ce que tu cherches à faire exactement ?

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 16
    Par défaut
    Je vois ce que tu veux dire, mon bout de code "fonctionne", mais n'est pas propre. j'ai la msgbox quand la donnée n'est pas numérique, mais si c'est un décimal la valeur est arrondie automatiquement ce qui va me générer des erreurs de calcul ensuite si elle l'est à l'entier supérieur.

    Par contre je ne comprends pas :
    C'est quoi txtNombre ?

    J'ai fait un copier/coller de ton bout de code, et j'ai une erreur de compilation : variable non définie.

    j'ai modifié comme suit,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim maSaisie As Variant
    maSaisie = Textbox1.Value
    If VarType(maSaisie) <> vbInteger Then
     MsgBox "Veuillez saisir un nombre entier"
     Exit Sub
    End If
    Mais là, quoique j'entre dans ma textbox, la msgbox s'affiche.
    ????

    Nat

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

Discussions similaires

  1. Quel code pour trouver l'OS ?
    Par ddorange dans le forum Débuter
    Réponses: 2
    Dernier message: 12/02/2010, 13h28
  2. quel code pour enregistrer une image dans la base de donnée
    Par bambi98 dans le forum Bases de données
    Réponses: 1
    Dernier message: 15/05/2009, 15h55
  3. Réponses: 2
    Dernier message: 08/02/2009, 18h55
  4. quel script pour dire de charger une autre version du site si IE6
    Par Anonyme1 dans le forum Webdesign & Ergonomie
    Réponses: 8
    Dernier message: 12/12/2007, 17h25
  5. Quel code pour suppression enregistrement ?
    Par Nessie37 dans le forum VBA Access
    Réponses: 30
    Dernier message: 19/10/2007, 15h51

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