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 :

Savoir le type de la variable


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    apt
    apt est déconnecté
    Membre éclairé
    Inscrit en
    Mai 2002
    Messages
    867
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 867
    Par défaut Savoir le type de la variable
    Bonsoir à tous,

    Dans un WorkSheet_Change, je déclare une variable x :

    Et je la renseigne ainsi :

    Mais le compilateur me sort une erreur :

    Incompatibilité de type
    Et si je déclare x comme ça :

    L'erreur n'est pas rencontrée.

    Comment peut-on savoir le type de la variable pour la déclarer proprement ?

    Merci.

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    ça dépends des valeurs entrées par l'utilisateur.
    Exemple de double
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim x As Double
     
    If Target.Count = 1 Then
        'x = Val(Target.Value) 'Au cas où le séparateur décimal est le point
        x = Val(Replace(Target.Value, ",", "."))
        MsgBox x
    End If
    End Sub

  3. #3
    Membre Expert
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 186
    Par défaut
    Bonjour,

    L'exemple de Mercatog prend en compte le fait que le séparateur décimal d'une valeur numérique soit ','
    (ce qui est un cas d'erreur tout à fait possible)

    Mais juste pour expliquer pourquoi ceci fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Worksheet_Change(ByVal Target As Range)
      Dim x
      x = Target
    End Sub
    et pas cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Worksheet_Change(ByVal Target As Range)
      Dim x as Integer
      x = Target
    End Sub
    C'est que dans le premier cas, x est du type Variant (en gros il accepte différent type). Il acceptera donc de recevoir un Range (le type de Target)

    Dans le second cas, x est un entier. Et dans ce cas, on ne peut pas affecteur un Range à un entier.
    Pour utiliser la valeur du Range, il faut utiliser Target.Value comme dans l'exemple de Mercatog.

  4. #4
    apt
    apt est déconnecté
    Membre éclairé
    Inscrit en
    Mai 2002
    Messages
    867
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 867
    Par défaut
    Bonsoir mercatog, BlueMonkey,

    Même avec :

    Ça donne la même erreur

    La valeur du Target est issue de la valeur d'une liste déroulante insérée dans la feuille.

    La liste déroulante est remplie à partir d’une plage nommée "Liste" qui contient des entiers.

  5. #5
    Membre Expert
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 186
    Par défaut
    Dans ce cas, le mieux est de vérifier la valeur de de Target.value avec le debugger, en mettant un point d'arrêt dans la fonction.

  6. #6
    apt
    apt est déconnecté
    Membre éclairé
    Inscrit en
    Mai 2002
    Messages
    867
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 867
    Par défaut
    Re,

    Un petit exemple en PJ.
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Savoir le type d'une variable.
    Par rootdaoud dans le forum Langage
    Réponses: 3
    Dernier message: 22/12/2006, 15h51
  2. Connaitre le type d'une variable
    Par mic79 dans le forum Langage
    Réponses: 2
    Dernier message: 04/01/2006, 15h42
  3. Comment savoir la taille d'une variable
    Par killerjeff dans le forum C++
    Réponses: 30
    Dernier message: 09/12/2005, 16h07
  4. Changer el type d'une variable sql sous postgre8/admin
    Par smag dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 24/08/2005, 12h31
  5. Réponses: 9
    Dernier message: 22/07/2005, 16h10

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