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 :

Passage d'une variable objet d'un module à un autre (VBA Excel)


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    465
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 465
    Par défaut Passage d'une variable objet d'un module à un autre (VBA Excel)
    Bonjour à tous,

    J'essai de piloter Word à partir d'Excel.
    Aussi j' ai un module où je déclare la création d'une instance objet "Word" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Public Sub CBWord_Click()
     
    Dim ApplicationWord As Object
    Dim SelectionObjet As Object
     
    Set ApplicationWord = CreateObject("Word.Application")
    Set SelectionObjet = ApplicationWord.Selection
    TransfertWord (SelectionObjet)
     
    end sub

    Et dans un autre module, je souhaite utiliser l'instance Word crée afin d' effectuer un formatage de texte, mise en gras de texte, etc.. :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    Public Sub TransfertWord(SelectionObjet)
     
     
     
    SelectionObjet.Font.Bold = wdToggle
    SelectionObjet.TypeParagraph

    Or, j'ai le message d'erreur ["Erreur d'exécution '424' - Objet requis"]...
    J'ai bien la déclaration de l'instance Word dans le premier module, mais j'ai l'impression que cet instance objet n'est pas transféré d'un module à l'autre.
    Cela fait quelques jours que je butte sur ce problème.
    Si quelqu'un pouvait m'éclairer ?
    En vous remerciant par avance.

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Vous ne précisez pas où a lieu l'erreur, à quelle ligne et dans quelle procédure publiée
    Par contre, je peux déjà vous signaler que comme vous utilisez le "Late Binding" pour l'objet word, le VBA ne peut reconnaitre les constantes préfixées wd comme dans cette ligne wd SelectionObjet.Font.Bold = wdToggle

    A lire éventuellement mon billet VBA Excel - La compilation conditionnelle ou comment développer en EarlyBinding et distribuer en late binding

    [EDIT]
    j'ai l'impression que cet instance objet n'est pas transféré d'un module à l'autre.
    Une variable n'est connue que dans la procédure où elle est déclarée.
    Pour quelle soit connue dans toutes les procédures de tous les modules du projet, elle doit être déclarée comme publique

    Vous pouvez aussi prévoir un argument de type objet à votre procédure
    A lire sur le sujet Utiliser les variables en VBA Excel et tout particulièrement le chapitre V. Les niveaux de variables
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    465
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 465
    Par défaut
    Bonjour Philippe,
    L'erreur se produit a l instructions :wd SelectionObjet.Font.Bold = wdToggle.

    Si je déclare "SelectionObjet", etc..dans la même instruction, j'ai bien " wd SelectionObjet.Font.Bold = wdToggle", qui met la ligne en gras sous Word..
    Or pour des raisons pratiques je préfère déclarer l'objet word dans un autre module.
    J' ai pourtant déclaré mes modules en public, je ne comprend pas pourquoi la/les variables conservent leurs valeurs d' un module à l'autre...
    Je vais lire les liens que vous m' avez indiqué, j avoue que cela fait pas mal de temps que je n' ai plus programmé. J' en conviens qu'en principe on en garde toujours un peu, mais j' ai du mal a me remémorer certaines choses.
    Merci pour l'aide

Discussions similaires

  1. Passage d'une variable
    Par agencep dans le forum Langage
    Réponses: 6
    Dernier message: 23/02/2006, 15h57
  2. passage d'une variable javascript dans du html
    Par the_ugly dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 01/02/2006, 16h08
  3. passage d'une variable dans une frame
    Par Atchoum_002 dans le forum Langage
    Réponses: 2
    Dernier message: 17/10/2005, 17h06
  4. passage d'une variable en parametre
    Par duga dans le forum Langage
    Réponses: 4
    Dernier message: 11/09/2005, 12h19
  5. [C#] Passage d'une variable pour un controluser
    Par julio84 dans le forum ASP.NET
    Réponses: 10
    Dernier message: 07/04/2005, 13h50

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