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 :

Executer macro word depuis Excel


Sujet :

Macros et VBA Excel

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 8
    Points : 7
    Points
    7
    Par défaut Executer macro word depuis Excel
    Bonjour,

    Je souhaite executer une macro qui se trouve dans un document word à partir d'Excel lorsque je clique sur une cellule de ma feuille.

    J'arrive bien a ouvrir mon document word, mais l'execution de la macro se passe mal.
    J'ai le message suivant (dans word):
    Erreur d'execution '438'
    Propriété ou méthode non gérée par cet objet.

    Le débug me renvoie sur la deuxième ligne de ma macro dans word:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Private Sub TmpDDE()
    WordBasic.Call "OutilsMacro.Nom" = "Macro1", "Executer"End Sub

    Merci pour vos réponses.

    Voici le code vb 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
    Private Sub ouvreWord()
    'MsgBox (appel ouvreWord)
    Dim Canal As Double
    'Crée la liaison DDE
    MsgBox ("ouverture du canal")
    Canal = DDEInitiate("WinWord", "D:\PUBLIC\PE.doc")
    MsgBox ("canal ouvert")
    MsgBox ("Lancement de la macro")
    DDEExecute Canal, "[OutilsMacro .Nom = ""Macro1"", .Executer]"
    MsgBox ("macro lancee")
    End Sub
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    MsgBox ("appel ouvreWord")
    ouvreWord
    End Sub

  2. #2
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Peut être en appelant ta macro de cette facon

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    Private Sub TmpDDE()
    Application.Run ("nommacro")
    End Sub

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 8
    Points : 7
    Points
    7
    Par défaut J'ai la solution
    J'ai trouvé la solution :

    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    Dim i As Integer
    Dim wdApp As Word.Application
    Dim wdDoc As Word.Document
     
     
     
    Sub RecupereValeurCellule(ByVal Sh As Object, ByVal Target As Range)
    'MsgBox ("Appel a RecupereValeurCellule2")
    If Target.Column = 3 Then
     
    ' recupere la valeur de la cellule cliquée
    valeurDeLaCelluleCourante = Range(ActiveCell.Address)
     
    'recupere la valeur de la cellule en colonne B de la ligne courante
    adr = "$B$" & Target.Row
     
     
    valeurB = Range(adr)
     
    'recupere la valeur de la cellule en colonne A de la ligne courante
    adr = "$A$" & Target.Row
    valeurA = Range(adr)
     
    'Récupération de la feuille active
    'MsgBox (Application.ActiveWorkbook.ActiveSheet.Name)
    nomFeuilleActive = Application.ActiveWorkbook.ActiveSheet.Name
    'Nom du documlent word a ouvrir en fonction de la cellule active
    'MsgBox (nomFeuilleActive)
    If nomFeuilleActive = "Test COCPIT" Then
    'MsgBox ("cas Test COCPIT")
    planEssai = "D:\PUBLIC\Pleiades-HR\LienExcelWord\PRS-PE-CPIT-230-CG_02_04_1.doc"
    End If
    If nomFeuilleActive = "Test PHR" Then
    'MsgBox ("cas Test PHR")
    planEssai = "D:\PUBLIC\Pleiades-HR\LienExcelWord\PHR-PE-642-2307-CG_01_03.doc"
    End If
     
     
    nomDuTest = valeurA & "-" & valeurB & "-" & valeurDeLaCelluleCourante & " £N"
     
    'ouverture du document word et appel de la macro de recherche du test
    'Dim wdApp As Word.Application
    'Dim wdDoc As Word.Document
    'MsgBox (i)
    If i = 0 Then
    Set wdApp = New Word.Application
    Set wdDoc = wdApp.Documents.Open(planEssai)
    i = 1
    End If
     
    wdApp.Visible = True
    wdApp.Run "Macro2", nomDuTest
     
    End If
    End Sub
     
    Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    RecupereValeurCellule Sh, Target
    End Sub

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 10/09/2014, 17h54
  2. Macro Word depuis Excel avec tableau comme argument
    Par emorejbleu dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/07/2013, 14h45
  3. Réponses: 0
    Dernier message: 23/07/2013, 13h30
  4. Appel macro word depuis excel
    Par Pepette59 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 13/01/2010, 16h31
  5. Executer une macro Word depuis VB 6.0
    Par benos59 dans le forum VBA Word
    Réponses: 1
    Dernier message: 10/08/2006, 17h37

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