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 :

utilisation d'une macro Excel dans une macro Word


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2011
    Messages : 9
    Points : 7
    Points
    7
    Par défaut utilisation d'une macro Excel dans une macro Word
    Bonjour,

    Je cherche à exécuter une macro sous Excel (à laquelle j'envoie un argument) avec une macro Word.

    Je suis arrivé au code suivant dans VBA 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
    Sub Test()
     
    Xls_From_Word Name:="Nom"
     
    End Sub
     
    Function Xls_From_Word(Optional Name As String)
     
    If IsMissing(Name) Then
        Name = "blablabla"
    End If
     
    Dim Xls As Excel.Application
    Dim Wkb As Excel.Workbook
     
    Set Xls = New Excel.Application
    Xls.Visible = True
     
    Set Wkb = Xls.Workbooks.Open("C:\Documents and Settings\MyWkb.xlsm")
    Wkb.Application.Run "Macro_Xls", Name
    Wkb.Activate
     
    End Function
    Et j'ai le code suivant sous VBA Excel (dans MyWkb.xlsm) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub Macro_Xls(Name As String)
     
    Set objClasseur = Workbooks.Add
    (...)
    ChDir "C:\Documents and Settings"
    ActiveWorkbook.SaveAs Filename:=Nom & ".xls", FileFormat:=xlExcel8
     
    End Sub
    Mais lorsque j'exécute ma macro Test(), ça plante à la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Wkb.Application.Run "Macro_Xls", Name
    de la fonction Word.
    Cela me renvoie l'erreur suivante :
    Run-time error '450':
    Wrong number of arguments or invalid property assignment
    Je ne comprends pas...
    J'ai biensûr activé la référence Excel dans Word (et vice-versa dans le doute).

    Pouvez-vous m'aider ?
    Merci d'avance.

  2. #2
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut,tu as http://vb.developpez.com/faqvba/?page=3.7 http://excel.developpez.com/faq/?page=Word

    VBA a des instructions spécifiques concernant Excel et/ou Word
    du style For, Next etc communes à la suite Office
    Word ne reconnait pas Workbooks, ActiveWorkbook
    par exemple l'équivalent de ActiveWorkbook est ActiveDocument

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2011
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    En fait, j'ai déjà réussi à lancer une macro Excel n'ayant pas d'argument à partir d'une macro Word en utilisant à peu près ces lignes de code (le fait de déclarer une application Excel permet d'utiliser les "Workbooks" entre autre).

    Mon vrai problème je pense est que dès que je mets un (ou plusieurs) argument(s) à une macro (Word ou Excel), elle disparaît de la liste des macros que je peux appeler (dans "Macros" de l'onglet "Développeur"). Et du coup quand je l'appelle avec la commande Run elle n'est pas trouvée...

  4. #4
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonjour.

    C'est pas évident, mais je commencerais par remplacer le nom de variable Name par sName ou autre chose. Si tu fais tu as aussi une erreur?

    Une autre remarque, mais de détail,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Set Xls = New Excel.Application
    Xls.Visible = True
     
    Set Wkb = Xls.Workbooks.Open("C:\Documents and Settings\MyWkb.xlsm")
    Wkb.Application.Run "Macro_Xls", Name
    Donc Xls est Wkb.Application, et donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Xls.Run "Macro_Xls", Name
    devrait suffire

    Plus fondamental : pourquoi appeler une procédure dans un classeur alors que tu peux faire la même chose dans Word? Mais c'est vrai que tu n'as peut-être pas tout montré.

    Cordialement,

    PGZ
    pluritas non est ponenda sine necessitate - Le rasoir d'Okham
    Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2011
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    Tout d'abord merci pour vos réponses.
    Après avoir gratté pendant pas mal de temps j'ai par réussir à lancer une macro excel avec argument depuis ma macro word, mais je n'arrivais pas à en lancer une seconde alors que j'utiliser exactement les mêmes lignes de code...
    Je me suis après rendu compte que je ne gérais pas bien les fenêtres excel actives, et que mon problème venait de là...
    Maintenant ça marche !

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

Discussions similaires

  1. Est il possible de lancer une macro Access dans une feuille excel
    Par nanoo79 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 07/04/2014, 13h48
  2. Réponses: 6
    Dernier message: 13/11/2009, 16h06
  3. Utiliser une fonction excel dans une macro et proprièté range
    Par bebel9313 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 11/08/2007, 14h25
  4. Réponses: 9
    Dernier message: 30/05/2006, 17h55
  5. Comment insérer une macro excel dans une macro word?
    Par max2245 dans le forum VBA Word
    Réponses: 15
    Dernier message: 07/01/2006, 17h44

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