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 :

Activer automatiquement une référence si elle n'est pas activée?


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 217
    Points : 66
    Points
    66
    Par défaut Activer automatiquement une référence si elle n'est pas activée?
    Bonjour à tous,
    j'ai créé une macro faisant référence à la "Microsoft Word 8.0 Library", que j'ai activée en cochant la case correspondante dans le menu "références" de l'éditeur VBA.

    Mon fichier Excel se trouve sur un réseau partagé,et il arrive parfois que ma macro ne fonctionne plus car la référence est désactivée (même sans que personne ni touche).

    Est-il possible de faire référence à cette bibliothèque et de l'activer automatiquement dans mon entête de code?
    J'ai vraiment besoin de ça car les utilisateurs du fichier n'ont pas de connaissance à ce niveau et ne pourront pas facilement s'en charger eux-même.
    Un peu comme du #include en C quoi.

    Merci d'avance pour vos réponses,
    M

  2. #2
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 124
    Points : 55 905
    Points
    55 905
    Billets dans le blog
    131
    Par défaut
    Bonjour

    Je suppose que tu as déclaré des objets comme faisant partie de la librairie WORD. Une solution serait de te passer de cette librairie.

    Pour cela:
    Sur ton pc, tu coches la librairie et tu codes... Ainsi, tu bénéficies de la saisie "intelligente"...

    Lorsque ton code est testé, tu remplaces les objets appertenant à WORD comme suit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        dim wApp as word.application
        dim wDocument as word.document
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        dim wApp as object
        dim wDocument as object
    et tu décoches la référence à la librairie...

    Cela t'évitera également de devoir gérer les éventuelles différences de version.

    En fait, cocher la référence dans les références du projet, c'est l'équivalent de include en C...
    Ok?

  3. #3
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 217
    Points : 66
    Points
    66
    Par défaut
    Merci des infos.
    J'avais bien compris ce qui se passe quand je coche ma référence,mais j'ai un souci avec ta méthode, j'ai un message d'erreur à ce niveau de mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(DerniereLigne, 12) = WordDoc.Sections(1).Headers(wdHeaderFooterPrimary).Range.Fields(3).Result.Text
    car ici je fais référence à un champ de l'entête de mon document Word et il n'est pas reconnu sans la bibliothèque Word.

    Comme je l'ai dit par commodité j'aimerais soit supprimer cette cacase de mes références (comme tu me le proposes) soit l'activer automatiquement par mon code (comme je l'ai dit parfois la librairie se décoche sans que je ne sache pourquoi et j'obtiens un message d'erreur lors de l'utilisation de ma macro,et je n'ai pas envie de gêner les utilisateurs avec ça).
    Merci d'avance,
    M

  4. #4
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 124
    Points : 55 905
    Points
    55 905
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par drthodt Voir le message
    ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(DerniereLigne, 12) = WordDoc.Sections(1).Headers(wdHeaderFooterPrimary).Range.Fields(3).Result.Text
    J'avais omis une précision importante. Tu dois remplacer les constantes Word par leur valeur...

    Ainsi, dans ton code, tu dois remplacer wdHeaderFooterPrimary par sa valeur, à savoir 1

    Tu peux retrouver les valeurs numériques des constantes via l'explorateur d'objets lorsque ta reférence est cochée.

    Ok?

  5. #5
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 217
    Points : 66
    Points
    66
    Par défaut
    Citation Envoyé par Pierre Fauconnier Voir le message
    J'avais omis une précision importante. Tu dois remplacer les constantes Word par leur valeur...

    Ainsi, dans ton code, tu dois remplacer wdHeaderFooterPrimary par sa valeur, à savoir 1

    Tu peux retrouver les valeurs numériques des constantes via l'explorateur d'objets lorsque ta reférence est cochée.

    Ok?

    Merci ça marche parfaitement!
    Bonne soirée,
    M

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

Discussions similaires

  1. Vérifier l'activation d'une référence
    Par Pikasacha dans le forum Général VBA
    Réponses: 8
    Dernier message: 03/09/2015, 11h13
  2. Réponses: 13
    Dernier message: 05/05/2008, 13h45
  3. Réponses: 24
    Dernier message: 01/06/2007, 09h26
  4. Réponses: 6
    Dernier message: 23/12/2006, 17h36
  5. Réponses: 8
    Dernier message: 11/07/2006, 17h27

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