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 :

Bouton personnalisé, execution de macro


Sujet :

VBA Word

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

    Informations forums :
    Inscription : Juin 2006
    Messages : 77
    Points : 54
    Points
    54
    Par défaut Bouton personnalisé, execution de macro
    Bonjour à tous,

    J'ai un petit problème, et je ne comprends pas pourquoi cela ne fonctionne pas.

    Ce que je désire faire c'est installer une barre d'outil sur word, avec un bouton qui appelle une macro. J'aimerais installer cette barre d'outil sur toutes les applications du pack office.

    J'ai déjà réussit sur Excel.

    Mais sur Word cela ne fonctionne pas ...

    Voici le code que j'utilise dans Excel :

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    Public Sub Lauch_Gen_Ref()
     
    Shell ThisWorkbook.Path & "\ref_Gen.exe """ & ActiveWorkbook.Name & """", vbNormalFocus
     
    End Sub
     
    Sub SupprimeMenu()
        On Error Resume Next
        CommandBars("Outils_Referencement").Delete
     
    End Sub
     
     
    Sub CréationMenu()
        Dim NomMenu As String
     
        NomMenu = "Outils_Referencement"
     
     
        NomCompletFichierMacros = ThisWorkbook.FullName
     
        On Error GoTo Sortie
        Set cbar1 = CommandBars.Add(Name:=NomMenu, Position:=msoBarTop)
        cbar1.Visible = True
     
     
        With CommandBars(NomMenu).Controls.Add(msoControlPopup)
            .Caption = NomMenu
            ' Menu 1
            With .Controls.Add(msoControlButton)
                .Caption = "Générer une référence"
                .OnAction = NomCompletFichierMacros & "!Lauch_Gen_Ref"
            End With
     
     
        End With
     
    Sortie:
    End Sub

    Sous Word :


    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    Public Sub Lauch_Gen_Ref()
     
    Shell ThisDocument.Path & "\ref_Gen.exe """ & ActiveDocument.Name & """", vbNormalFocus
     
    End Sub
     
    Sub SupprimeMenu()
        On Error Resume Next
        CommandBars("Outils_Referencement").Delete
    End Sub
     
     
    Sub CréationMenu()
        Dim NomMenu As String
     
        NomMenu = "Outils_Referencement"
     
     
        NomCompletFichierMacros = ThisDocument.FullName
     
        On Error GoTo Sortie
        Set cbar1 = CommandBars.Add(Name:=NomMenu, Position:=msoBarTop)
        cbar1.Visible = True
     
     
        With CommandBars(NomMenu).Controls.Add(msoControlPopup)
            .Caption = NomMenu
            ' Menu 1
            With .Controls.Add(msoControlButton)
                .Caption = "Générer une référence"
                .OnAction = "Lauch_Gen_Ref"
            End With
     
     
        End With
    Sortie:
    End Sub
    Plusieurs problèmes :

    Le premier est que la barre d'outil n'est installée que sur le document Word qui contient la macro. Et ce n'est pas du tout ce que je veux. J'aimerais que cette barre d'outil soit présente sur tout les documents Word que l'on créé/ouvre.

    Deuxième problème, l'appel à la macro ne fonctionne pas si on garde la même syntaxe que sous Excel. Si à la propriété OnAction on ne fait référence directement qu'à la macro, là cela fonctionne mais dès que l'on essaye de le lancer depuis un autre document il ne trouve plus la macro.
    Sous Excel Tout fonctionne bien ....


    Au pire si il est possible d'exécuter une application externe en cliquant sur le bouton de mon menu personnalisé je suis aussi preneur.


    Merci d'avance !

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 77
    Points : 54
    Points
    54
    Par défaut
    Bon j'ai trouvé une solution qui me convient.

    J'ai mit ma macro dans le fichier Normal.dot, l'ajout de la barre d'outil est fait à chaque ouverture ou création de nouveau document ( seulement si la barre n'existe pas déjà ).

    Néanmoins un problème subsiste.

    Lorsque l'on créé un nouveau document via le menu démarrer, visiblement normal.dot n'est pas appelé ou alors la méthode Document_New n'est pas appelée.

    C'est comme si le raccourcis Word du menu démarrer exécutait la commande "Winword /a"

    ET ce n'est pas du tout ce que je veux :/

  3. #3
    Rédacteur/Modérateur

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

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

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

    Mettre la macro dans le normal.dot est une mauvaise idée.

    en fonction de la version de Word, le Normal.dot est plus qu'un simple modèle et il arrive parfois que l'on soit obligé de supprimer ce fichier pour que Word en fabrique un tout nouveau.

    Il y a deux pistes intéressantes, la première est de gérer un modèle de document en tant que complément.
    La seconde, simplement déposer le modèle dans un des répertoires de démarrage de Word.

    Le code devient alors disponible pour tous les documents et modèles.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 77
    Points : 54
    Points
    54
    Par défaut
    Citation Envoyé par Heureux-oli Voir le message
    Salut,

    Mettre la macro dans le normal.dot est une mauvaise idée.

    en fonction de la version de Word, le Normal.dot est plus qu'un simple modèle et il arrive parfois que l'on soit obligé de supprimer ce fichier pour que Word en fabrique un tout nouveau.

    Il y a deux pistes intéressantes, la première est de gérer un modèle de document en tant que complément.
    Si je l'ajoute comme complément, la création d'un nouveau document va t-il être basé sur ce modèle ?

    Citation Envoyé par Heureux-oli Voir le message
    La seconde, simplement déposer le modèle dans un des répertoires de démarrage de Word.

    Le code devient alors disponible pour tous les documents et modèles.
    Donc dans le répertoire C:\Documents and Settings\%UserName%\Application Data\Microsoft\Word\DÉMARRAGE

    il doit toujours porter le nom normal.doc ?

  5. #5
    Rédacteur/Modérateur

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

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

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

    Pour le complément, il reste valable en toute circonsatnce.

    Le répertoire que tu mentionnes correspond au répertoire de démarrage pour l'utilisateur courant.
    Dans le répertoire Program Files - Microsoft Office, il y a aussi un répertoire de démarrage qui fonctionne pour tous les utilisateurs de la machine.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 77
    Points : 54
    Points
    54
    Par défaut
    Citation Envoyé par Heureux-oli Voir le message
    Salut,

    Pour le complément, il reste valable en toute circonsatnce.

    Le répertoire que tu mentionnes correspond au répertoire de démarrage pour l'utilisateur courant.
    Dans le répertoire Program Files - Microsoft Office, il y a aussi un répertoire de démarrage qui fonctionne pour tous les utilisateurs de la machine.
    Merci pour les infos, je vais essayer les compléments !

Discussions similaires

  1. Réponses: 8
    Dernier message: 27/01/2015, 19h42
  2. Réponses: 6
    Dernier message: 09/09/2014, 14h36
  3. VBA Macro utilisable dans un dossier ciblé / Bouton personnalisé
    Par pythagore3_14 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 31/07/2008, 09h35
  4. Réponses: 16
    Dernier message: 01/04/2008, 18h04
  5. [VBA-E] ouvrir un fichier .xls sans executer les macro
    Par lae_t2 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/01/2003, 18h07

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