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

VBA Word Discussion :

Lancer une macro avant fusion en VB


Sujet :

VBA Word

  1. #1
    Candidat au Club
    Femme Profil pro
    Formateur en informatique
    Inscrit en
    Mars 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Mars 2011
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Lancer une macro avant fusion en VB
    Bonjour,

    Je souhaiterais lancer une macro dans un "document à fusionner" juste avant de lancer la fusion dans WORD

    La macro se trouve dans le modèle (.dot) de mon document à fusionner

    Pouvez vous svp m'expliquer comment coder cela ?

    PS.
    1-J'ai juste un enregistrement dans mon fichier DATA.
    2-Le lancement de la fusion se fait via un logiciel (que je ne maitrise pas !)

    Merci

    Céline

  2. #2
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    L'application word possède bien un évènement MailMergeBeforeMerge

    Il faut avant tout initier la gestion des évènements dans Word.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public WithEvents wApp As Word.Application
    Ensuite, il affecter à ce nouvel "wApp" objet l'application Word.
    On peut le faire quand on veut et comme on veut, en général sur l'évènement document Document_Open()

    Ensuite, on gère les évènement et dans ton cas, c'est avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub wApp_MailMergeBeforeMerge(ByVal Doc As Document, ByVal StartRecord As Long, ByVal EndRecord As Long, Cancel As Boolean)
     
    End Sub

  3. #3
    Candidat au Club
    Femme Profil pro
    Formateur en informatique
    Inscrit en
    Mars 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Mars 2011
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Bonjour

    Merci pour votre réponse.

    Voici ce que j'ai fais :

    1- Dans le modèle (.dot) de mon document à fusionner j'ai créé un module de classe, dans lequel j'ai mis le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
     
    Public WithEvents FApp As Word.Application
    Private Sub FApp_MailMergeBeforeMerge(ByVal Doc As Document, ByVal StartRecord As Long, ByVal EndRecord As Long, Cancel As Boolean)
        Dim Réponse As Integer
        Réponse = MsgBox("Vous allez commencer la fusion : " & Doc.Name & "Voulez-vous continuez ?", vbYesNo, "MailMergeBeforeMerge Event")
    If Réponse = vbNo Then
            Cancel = True
            MsgBox "Vous avez annuler la fusion  " & Doc.Name & "."
    End If
    If Réponse = vbYes Then
            Cancel = False
            MsgBox "YVous allez fusionner  " & Doc.Name & "."
    End If
    End Sub

    2- puis ensuite toujours dans le modèle (.dot) de mon document à fusionner j'ai mis dans la partie ThisDocument le code suivant.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Dim X As New Classe1
     
    Private Sub Document_open()
        Set X.FApp = Word.Application
    End Sub

    Sauf que lorsque j'appuie sur le bouton Fusionner vers un nouveau document mon événement ne se lance pas.
    J'ai l'impression que l'événement de s'exécute pas !

    Encore merci.

    Céline

  4. #4
    Membre expert

    Homme Profil pro
    Spécialiste progiciel
    Inscrit en
    Février 2010
    Messages
    1 747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Spécialiste progiciel
    Secteur : Service public

    Informations forums :
    Inscription : Février 2010
    Messages : 1 747
    Points : 3 016
    Points
    3 016
    Par défaut
    Bonjour,

    Tu as autorisé l'exécution des macros sur tes ordinateurs clients.
    Partie Sécurité des Macros de l'onglet Developpeur ou Bouton Office -> Options Word -> Centre de Gestion de la confidentialité -> Paramètres du centre de gestion de la confidentialité - > Paramètres des Macros.

    Penses notamment à approuver le modèle d'objet du projet VBA.

Discussions similaires

  1. [VBA-Word] Obligation de lancer une macro avant de quitter
    Par perophron dans le forum VBA Word
    Réponses: 5
    Dernier message: 22/05/2007, 15h07
  2. Excel : Demander une date puis lancer une macro
    Par repié dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 21/12/2005, 16h55
  3. Lancer une macro PPT à partir d'Excel
    Par Rabah dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 06/10/2005, 17h23
  4. lancer une macro Access
    Par xmarabout dans le forum ASP
    Réponses: 1
    Dernier message: 26/09/2005, 13h03
  5. [VBA-E] [Excel] Lancer une macro à une heure donnée
    Par Lysis dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/10/2002, 12h15

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