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 :

2012 n'est pas égal a 2012, problème de type: integer vs variant [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 661
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 661
    Points : 5 785
    Points
    5 785
    Par défaut 2012 n'est pas égal a 2012, problème de type: integer vs variant
    Je ne sais pas si ce sujet a sa place ici mais comme j'ai rencontré ce cas en faisant du VBA, je pose ma question ici.

    Ayant oublié de déclarer une variable de boucle (qui est utilisée dans un calcul) je me retrouvé avec le problème énoncé dans le titre: 2012 n'est pas égal a 2012, après déclaration de ma variable le problème est résolu mais n'étant pas informaticien de formation j'ai du mal a saisir pourquoi.

    Le premier 2012 vientd'un TCD (.PivotItems(i).Value) et l'autre est un calcul (y - j) avec y un integer j un variant.
    A partir du moment où j est déclarée int, long, double pas de problème mais si j est non déclaré ou déclaré variant alors j'obtient l'erreur. En fait ce que je ne comprends pas c'est en quoi 2012 integer est différent de 2012 variant? De plus si j'ai du controle sur la déclaration de mes variable, je n'en ai aucun (a ma connaissance) sur le type de .PivotItems(i).Value, est-il possible de voir quel type vba donne à cette valeur? et est-il possible de forcer un certain type? (sans passer par une variable intermédiaire)

    Merci d'avance.
    J'aimerais bien aller vivre en Théorie, car en Théorie tout se passe bien.

  2. #2
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    c'est probablement car la valeur de ton TCD n'est pas un "nombre" mais un "texte" ?

    pour vérifier, il te suffit d'interroger le Type de ta variable :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox TypeName(MaVariable)
    tu verras si c'est un String implicite ou pas ... ce qui explique l'erreur si tu veux le soustraire d'un Integer (Incompatibilité de type)

    Forcer un type, oui c'est possible, il te suffit d'utiliser les Fonctions de Conversion (regarde dans l'aide toutes les fonctions de conversions disponibles)

    par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    'Forcer un Integer
    CInt(MaVariable)
     
    'Forcer un Booleen
    CBool(MaVariable)
     
    'Forcer un Long
    Clng(MaVariable)
     
    'Forcer une date
    CDate(MaVariable)

  3. #3
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 661
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 661
    Points : 5 785
    Points
    5 785
    Par défaut
    Grand merci a toi Joe.

    Effectivement la valeur de mon TCD était considérée comme du texte.
    J'aimerais bien aller vivre en Théorie, car en Théorie tout se passe bien.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 02/06/2014, 16h52
  2. Réponses: 21
    Dernier message: 11/04/2008, 16h16
  3. syntaxe de n'est pas égal en code
    Par froutloops62 dans le forum Access
    Réponses: 3
    Dernier message: 12/07/2007, 23h02
  4. Réponses: 18
    Dernier message: 12/06/2006, 09h39
  5. Réponses: 18
    Dernier message: 30/06/2005, 13h30

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