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 :

Qeulles est la différence entre InputBox et Application.InputBox [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Août 2009
    Messages
    817
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 817
    Par défaut Qeulles est la différence entre InputBox et Application.InputBox
    Bonjour,

    J'ai régulièrement un souci quand je crée des InputBox ou des MsgBox, j'ai une erreur d'exécution, dans ce cas je passe en Application.InputBox et ça marche.

    Quelqu'un peut-il m'expliquer pourquoi ou me renvoyer sur une aide.

    Ce que j'ai vu dans les aides, c'est que application.InputBox offrait la possibilité de qualifier la valeur saisie, mais ma quesqtion est pourquoi des fois input box est rejeté par la macro.

    merci
    Denis

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    InputBox et MsgBox sont hérité de Excel.Application!


    en d'autre termes InputBox et MsgBox c'est la même chose que Application.InputBox et Application.MsgBox!


    la différence vient du fait que suivant les verrions (32 ou 64 bites) il peut y avoir conflit entre InputBox x32 et InputBox 64Bits!


    en préfixant par Application on utilise la version effectivement chargé sur la machine!

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Bonjour,

    Quelqu'un peut-il m'expliquer pourquoi ou me renvoyer sur une aide.
    Prend l'habitude d'aller dans l'aide de vba, elle est très complète et bien faite.
    Si tu recherche inputbox tu verras qu'il y en a 2 :
    Application.InputBox, méthode
    et
    InputBox, fonction
    Tu verras les différences et possibilités.
    eric

    PS : dysorthographie, je comprend (à moitié, l'héritage ne m'est pas familié :-)) ce que tu exprimes. Mais dans quels cas pourrait-il y avoir une ambiguïté puisque sur une machine l'OS est soit 32 bits, soit 64 bits, et idem pour excel ?

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    La version Application a un petit avantage : elle permet de définir le type de valeur retournée alors que la version Fonction VBA ne peut retourner que du texte.
    https://msdn.microsoft.com/fr-fr/lib.../ff839468.aspx
    https://msdn.microsoft.com/fr-fr/lib.../gg251539.aspx

  5. #5
    Invité
    Invité(e)
    Par défaut
    les librairie sont en fonction de la version Windows et/ou excel registré dans ' C:\Program Files (x86)' ou 'C:\Program Files'.


    les librairies référencées dans le projet VB. si ton application tourne sur différentes machines, le projet Vb enregistre et conserve le chemin de ces librairie!


    le conflit vient du fait que VBA ne sait pas si la libraire de InputBox hérité de 'C:\Program Files (x86)' ou 'C:\Program Files ' alors qu'il est évidant qu'une seule des deux existe, alors que Application est forcément chargé par défaut!

    Nom : Sans titre.png
Affichages : 1426
Taille : 2,4 Ko

    Citation Envoyé par Microsoft
    Présentation de l'héritage

    Une des fonctionnalités clé des langages de programmation orientés objet (OOP, Object Oriented Programming) est l'héritage. L'héritage désigne la possibilité d'utiliser toutes les fonctionnalités d'une classe existante....

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    ok, merci :-)
    Je sentais bien que tu étais dans le bon car il ne parlait pas de changement de la syntaxe mais je ne voyais pas pourquoi.
    J'avais zappé le projet Vb enregistre et conserve le chemin de ces librairie!

  7. #7
    Membre éclairé
    Inscrit en
    Août 2009
    Messages
    817
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 817
    Par défaut
    Merci pour votre intéret sur le sujet, mais """" je ne suis pas satisfait """"" des réponses (si je puis me permettre.

    J'avais lu les aides et fait des tests, j'ai même soupçonné qu'il faille redémarrer le PC suite à l'histoire des versions.

    Cependant je ne suis pas d'accord avec le fait de dire que MsgBox et InputBox sont équivalents car dans la séquence suivante, le MsgBox passe mais le InputBox bloque
    De plus il s'agit 'une macro personnelle, certes créé il y a des années en office 2003 et maintenant je suis en 2013.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Sub Macros_compare_deux_chaines()
     
    '
    ' Macro1 Macro
    ' Macro enregistrée le 26/01/2007 par Denis
    '
    'Prenom = Mid(Range("A1"), InStr(Range("A1"), " "))
    MsgBox ("Macro COMPARE DEUX CHAINES de caractères dans 2 colonnes")
     
    Msg = "Colonne pilote"
    Title = "Position du pilote (pour la boucle)"
    colpil = InputBox(Msg, Title)
    Bon c'est de la curiosité intellectuelle, car il suffit de mettre application devant mon inputbox et ça roule !
    Denis

  8. #8
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    je ne suis pas d'accord avec le fait de dire que MsgBox et InputBox sont équivalents
    Personne n'a dit ça, c'est toi qui fait une mauvaise lecture.

  9. #9
    Invité
    Invité(e)
    Par défaut
    Vas dans le menu outils ->référence de vba décocher les libraires manquante et tu verras plus besoins de de préfixer avec application!


    Si ta voiture a des roues voler tu ne peux pas savoir quand et où ce produira l'accident!

  10. #10
    Membre éclairé
    Inscrit en
    Août 2009
    Messages
    817
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 817
    Par défaut
    Cool les gars,

    Il est bien
    en d'autre termes InputBox et MsgBox c'est la même chose que Application.InputBox et Application.MsgBox!
    que je comprenais comme avec ou sans appli c'est pareil (pour chauqe objet respectif bien sûr) sauf que les propriétés décrites dans application offrent des gestion supplméentaires.

    Bon je clos le sujet.

    Merci à tous pour votre temps à essayer d'expliquer à un ignorant.
    Bon WE.

    Denis

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

Discussions similaires

  1. Réponses: 12
    Dernier message: 01/06/2010, 16h57
  2. Réponses: 2
    Dernier message: 25/05/2005, 21h34
  3. Réponses: 5
    Dernier message: 03/05/2005, 18h22
  4. Réponses: 11
    Dernier message: 31/01/2005, 17h48
  5. Quelle est la différence entre le float et le real ?
    Par Manson dans le forum Débuter
    Réponses: 3
    Dernier message: 10/08/2004, 17h26

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