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 :

Bannir Option explicit


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 8
    Par défaut Bannir Option explicit
    Bonjour,

    J'ai créé sur mon pc une macro pour laquelle je n'ai pas déclaré les variables, mais pas non plus indiqué le "Option explicit" qui m'obligerait à le faire.

    J'exécute la macro sur mon pc: pas de soucis.

    Je l'exécute sur un de mes pc au boulot: pas de soucis

    Je l'exécute sur un autre pc du boulot et là soucis: je dois déclarer toutes la variable!
    Je pensais qu'en déclarant toutes les variables le problème n'aurait plus lieu. Que nenni, le code chr() n'est plus connu!

    Qu'un a-t-il une idée, svp?

    Merci

  2. #2
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 68
    Par défaut
    la fonction chr retroune une chaine en fonction d'un int, peut etre qu'il y a une erreur dans le type au niveau de la déclaration de tes variables

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 8
    Par défaut
    J'aurais aimé n'avoir pas à déclarer les variables (ce qui fonctionne très bien sur les 2 premiers pc).
    Je suppose que le problème vient d'avantage d'un paramètre d'excel sur le troisième pc que d'un problème de la macro mais je ne trouve pas de solution.

    Au pire, comment faire pour qu'un chr(13) dans une msgbox corresponde à un retour à la ligne plutôt que de me renvoyer un msg d'erreur (mais vraiment au pire )?

  4. #4
    Membre Expert
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 875
    Par défaut
    pour éviter les problèmes de fonction non reconnues j'utilise le nom des bibliothèques avant:
    sinon tu as la constante correspondante: vbcrlf

    dans ton cas j'ai l'impression que la bilbiothèque vba n'est pas cochée dans outils références (et c'est bizarre).

    Pour la déclaration des variables c'est toujours préférable de les déclarer pour permettre une meilleure portabilité de la macro. Je ne crois pas qu'il existe d'option inverse à option explicit en vba contrairement à Vb.Net

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 8
    Par défaut
    Dommage pour l'inverse de "Option explicit". C'est pourtant ce que je cherchais.


    Pour le VBA.chr(), ca fonctionne.

    Où pourrai-je trouver l'option vba à cocher dans les outils de référence???

  6. #6
    Membre Expert
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 875
    Par défaut
    si VBA.chr() fonctionne pas besoin d'aller vérifier les références.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 8
    Par défaut
    J'aurais quand même aimé comprendre ce qui fait que ma macro tourne sur 2 pc et plante sur le troisième. D'autant que j'ai déclaré toutes les variables et rajouté le "VBA." devant les "chr(13)" et que j'ai désormais d'autres soucis!

  8. #8
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Bonjour,

    D'un autre côté, ne pas utiliser Option Explicit est contraire à tous les conseils des professionnels du forum

    cordialement,

    Didier

  9. #9
    Membre Expert
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 875
    Par défaut
    Citation Envoyé par matat31 Voir le message
    J'aurais quand même aimé comprendre ce qui fait que ma macro tourne sur 2 pc et plante sur le troisième. D'autant que j'ai déclaré toutes les variables et rajouté le "VBA." devant les "chr(13)" et que j'ai désormais d'autres soucis!
    ça arrive très souvent. le compilateur VBA est loin d'être stable. Il a des comportements très curieux lors d'utilisations intensives, d'où le conseil d'Ormonth.

    A l'usage pour produire du code stable et portable il y a des pratiques à appliquer.
    Pour ma part (et c'est discutable):

    • ajouter systématiquement option explicit
    • utiliser très peu les objets contextuels (activesheet, etc.)
    • bannir l'utilisation de select ou activate tant que ce n'est pas absolument nécessaire
    • utiliser des variables objets
    • bloquer les entrées utilisateurs pendant certaines phases de la procédure
    • préciser toujours en point d'entrée d'une instruction le nom de la bibliothèque concernée (Excel, VBA, Scripting.Runtime). Cette dernière pratique [
      rend le code aisément portable vers d'autres appli supportant le vba.
    • peu de code dans les userforms
    • etc.

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 8
    Par défaut
    J'assume n'être pas un pro

    En revanche, je persiste dans l'idée qu'il n'est pas normal que ma macro fonctionne sur certains postes et pas sur d'autres. Et puis s'il faut modifier les commandes (VBA.chr(13) au lieu de simplement chr(13)) en fonction du pc utilisé c'est pas gagné!

  11. #11
    Membre Expert
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 875
    Par défaut
    si tu essaies tu verras que ce n'est pas le cas. Ecrire comme ceci donne un autre avantage, cela déclenche plus facilement l'intellisense de vba lors de la rédaction du code (la complétion automatique)

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 8
    Par défaut
    J'ai aucune prétention sur le sujet; je vais donc suivre les conseils d'experts.
    Du coup, j'ai pas finit de vous casser les pieds je pense.

    Merci bien...

  13. #13
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Lorsque les fonctions natives de VBA ne fonctionnent plus, c'est, dans la majorité des cas, qu'au moins une des Références est marquée "Manquant".

    Vérifie sur le PC à problème si c'est le cas.

    Si oui, décoche cette référence et regarde si l'application fonctionne correctement.

    Si tout fonctionne, c'est que cette référence n'était pas utile.
    Dans le cas contraire, c'est le fichier correspondant à cette référence qui est manquant sur le PC en question.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

Discussions similaires

  1. Option Explicit et erreur variable non déclarée
    Par petitours dans le forum VBA Access
    Réponses: 2
    Dernier message: 23/04/2008, 15h38
  2. À quoi sert le code "Option Explicit"
    Par egg3774 dans le forum VBA Access
    Réponses: 3
    Dernier message: 15/06/2007, 05h57
  3. Problème avec "option explicit"
    Par tribaleur dans le forum ASP
    Réponses: 3
    Dernier message: 01/06/2006, 10h46
  4. option explicite????!!!
    Par shinrei dans le forum ASP
    Réponses: 1
    Dernier message: 14/04/2006, 18h09
  5. Utilisation de Option explicit
    Par Perihan dans le forum ASP
    Réponses: 5
    Dernier message: 29/10/2003, 11h43

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