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 :

Combobox, incompatibilité type [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 6
    Par défaut Combobox, incompatibilité type
    Bonjour,

    Comme vous vous en doutez, je suis bon débutant et je n'ai vu que les bases en VBA, c'est pourquoi je suis ici.

    Mon problème est le suivant:

    J'ai deux combobox(disons combo1 et combo2), qui contiennent toutes les deux des valeurs entières (de 1 à 3 pour faire simple).
    Lorsque je veux récupérer ces valeurs pour en faire une opération arithmétique (combo1.value + combo2.value), j'ai comme l'impression que celles-ci se concatènent pour me donner 1+1=11, ce qui me gène vu que je veux 2...
    J'ai évidemment tout de suite vérifier avec un IsANumber(combo1.value) et ils me disent bien que c'est un nombre.
    J'ai donc essayé de faire un cast à l'aide de CInt() comme ceci: CInt(combo1.value)+CInt(combo2.value) , mais le résultat cette fois c'est une erreur qui me signale une incompatibilité de type.
    Et même combat si j'essaye d'initialiser des variables déclarées en Integer avec, j'ai droit à la même erreur.

    Voilà, je pense avoir tout dit, je remercie d'avance ceux qui me trouveront une alternative à ce problème.

    Bien à vous,
    Verbruik

  2. #2
    Membre émérite Avatar de issoram
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2009
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 665
    Par défaut
    Bonjour,

    Qu'affiche ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Debug.Print combo1.value, combo2.value
    Debug.Print TypeName(combo1.value), TypeName(combo2.value)
    Tu auras un début de réponse déjà.

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 6
    Par défaut
    En effet, la boite d'exécution me dit que ce sont deux String, comme je m'en doutais.

    Mais dans ce cas j'ai bien une autre question dans ce cas... Pourquoi la méthode IsNumeric() me renvoie-t'elle une réponse positive ?
    Et surtout: En quoi est-ce que ça me donne un bout de réponse d'être certain que ce soit bien un String ? Je veux toujours un entier et je sais toujours pas quoi en faire

    Merci pour une réponse aussi rapide dans tous les cas

  4. #4
    Invité
    Invité(e)
    Par défaut
    Salut,

    C'est bizarre, puisque si tu test avec IsNumeric, puis que tu transtype avec CInt, tu devrai avoir la bonne réponse.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub Test()
        Dim b As Boolean, c
        ' Est-ce compatible ou exploitable en tant que nombre ou chiffre
        b = IsNumeric(5) 'Oui, c'est compatible
        b = IsNumeric(False) 'Oui, c'est compatible
        b = IsNumeric("1") 'Oui, c'est compatible
        c = CInt("1") + CInt("1") ' Renvoie bien 2
        b = IsNumeric(MsoShapeType.msoChart) 'Oui, c'est compatible
        b = IsNumeric("1A") 'Non, c'est pas compatible
    End Sub

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 6
    Par défaut
    D'accord, la pièce est tombée...
    En fait ce n'est pas du tout un problème de String ou quoi que ce soit, le casting fonctionne bel et bien.
    Mon problème était tout autre, c'était juste au moment de l'initialisation de mon userForm, comme je comparais les deux combobox avec la méthode combo1_change() (Je voulais un système qui mettait à jour l'interface automatiquement après l'encodage en quelque sorte), c'est dès l'initialisation de la première combobox qu'il faisait le calcul...
    Or, on peut cast un String sans soucis, mais comme mon second combobox n'était pas encore initialiser il contenait juste "null" ! Et tout le monde sait que 1 + null ça marche très moyennement ^^"

    Je sais pas si vous m'avez suivi, mais mon problème est réglé, et en grande partie grâce à votre aide précieuse

    Merci pour tout et une excellente continuation,
    Verbruik.

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

Discussions similaires

  1. Combobox complex type
    Par Lionhart dans le forum C#
    Réponses: 2
    Dernier message: 20/01/2015, 13h11
  2. [XL-2003] erreur "incompatibilité types"
    Par ninikosim dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 15/04/2011, 14h56
  3. [AC-2003] Erreur Incompatibilité Type
    Par Zeltron24 dans le forum IHM
    Réponses: 4
    Dernier message: 21/01/2011, 16h56
  4. Incompatibilité de types dans un formulaire
    Par ahage4x4 dans le forum ASP
    Réponses: 3
    Dernier message: 03/05/2005, 15h39
  5. [XSD] Incompatibilité des types xs:ID et xs:IDREF ?
    Par Cpt.FLAM dans le forum Valider
    Réponses: 6
    Dernier message: 08/04/2005, 14h54

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