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 :

Lancer une macro Excel 2007 depuis un fichier batch [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 253
    Points : 90
    Points
    90
    Par défaut Lancer une macro Excel 2007 depuis un fichier batch
    Bonjour,

    J'ai lu dans ce tutoriel http://jpcheck.developpez.com/tutori...ge-parametres/ comment manipuler Excel 203 via un fichier batch,

    Je suis sur Excel 2007 et je souhaité lancer une macro depuis un fichier batch quelqu'un peut-il m'aider?
    dans Excel 2003 la commande à taper dans le batch est la suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "C:\Program Files\Microsoft Office\Office11\EXCEL.EXE" /cmd/MaFonction "C:\temp\classeur1.xls"

    Merci d'avance de votre aide.

    Kedmard

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 629
    Points : 34 335
    Points
    34 335
    Par défaut
    salut,

    la partie de code vba en lien avec le lancement de macro est dans le chapitre suivant:
    http://jpcheck.developpez.com/tutori...etres/#LXI-C-2

    Si tu parles de la partie batch, il faut juste regarder dans quel répertoire se trouve ton Excel.exe
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 253
    Points : 90
    Points
    90
    Par défaut
    Salut , jpcheck,

    merci pour ta réponse,

    j'arrive à ouvrir mon fichier mais la macro ne s'exécute pas, j'ai crée cette macro dans "Thisworkbook" et dans un module à part ce code vba :

    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 Workbook_Open()
    Dim macmdline As Variant
    Dim monparam As Variant 'déclare une variable
     
        macmdline = GetCmd 'affecte la valeur de la ligne de commande
        If Not IsNull(macmdline) Then 'si la variable est nulle
            If Len(macmdline) > 0 Then 'on s'assure qu'il y a eu une ligne de commande passée
                If InStr(macmdline, "/cmd") > 0 Then
                    macmdline = Replace(macmdline, ThisWorkbook.FullName, "", , , vbTextCompare)
                    monparam = Split(macmdline, "/cmd")
                    Application.Run Mid(monparam(1), 2, Len(monparam(1)) - 3)
                End If
            End If
        End If
    End Sub
    Dans mon batch j'ai ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "C:\Program Files\Microsoft Office\Office12\EXCEL.exe" /cmd/EnvoiEmail "D:\C_Technique\CT_loi\Code\Report\New4.xlsm"
    Mon fixhier excel est de type xlsm ma macro s'appellle EnvoiEmail, elle doit envoyer un mail dès qu'on l'éxécute.

    Mon batch ouvre excel mais ne déclenche pas l'envoi de l'email.

    y at-il des détails choses que j'ai omis?

    Merci .

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 629
    Points : 34 335
    Points
    34 335
    Par défaut
    a tout hasard:
    A noter qu'il est nécessaire que la fonction soit dans un module et pas dans une page de code liée à une feuille ou au classeur.
    sinon, tu peux simuler le lancement en passant la chaîne de caractères
    "toi-même" avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     macmdline = "mafausselignebatch"
    au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     macmdline = GetCmd 'affecte la valeur de la ligne de commande
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 253
    Points : 90
    Points
    90
    Par défaut
    J'ai saisi ceci


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    macmdline = "C:\Program Files\Microsoft Office\Office12\EXCEL.exe" / cmd / EnvoiEmail "D:\C_Technique\CT_loi\Code\Report\New4.xlsm"
    et c'est cette la ligne même qui génère l'erreur ("Fin d'instrcution attendu" )
    à partir de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "D:\C_Technique\CT_loi\Code\Report\New4.xlsm"

  6. #6
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 629
    Points : 34 335
    Points
    34 335
    Par défaut
    va au plus direct, vu que le code après supprime le contenu "inutile"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    macmdline = "/cmd/EnvoiEmail"
    et va en mode pas à pas pour voir où ca bloquerait
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 253
    Points : 90
    Points
    90
    Par défaut
    ça bloque à ce niveau:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Application.Run Mid(monparam(1), 2, Len(monparam(1)) - 3)

  8. #8
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 629
    Points : 34 335
    Points
    34 335
    Par défaut
    essaie avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Run Mid(monparam(1), 2, Len(monparam(1)) - 1)
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 253
    Points : 90
    Points
    90
    Par défaut
    erreur sur la même ligne, et le message d'erreur est:


    Impossible d'éxécuter la macro EnvoiEmail il est possible qu'elle ne soit pas disponible dans ce classeur ou que toutes les macros soient désactivées
    La macro est bien dans un module du classeur et le tout se trouve dans un espace approuvé ce qui active immédiatement toute macro, je ne vois donc pas où se trouve l'erreur... pourtant ça marche pas

  10. #10
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 629
    Points : 34 335
    Points
    34 335
    Par défaut
    Procédure ou fonction ?
    Public ou Private ?

    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 253
    Points : 90
    Points
    90
    Par défaut
    La macro contient une procédure publique (public Sub EnvoiEmail).

  12. #12
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 629
    Points : 34 335
    Points
    34 335
    Par défaut
    hum, peux-tu mettre en PJ ton fichier, je n'arrive pas à reproduire l'erreur
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 253
    Points : 90
    Points
    90
    Par défaut
    Voici mon (qui se trouve dans "Thisworkbook") :


    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
    Option Explicit
      Sub EnvoiEmail()
    'Author       : Ken Puls (www.excelguru.ca)
    'Macro Purpose: To send an email through Outlook without worrying about
    '               security prompts
     
        Dim objOL As Object
        Dim objMail As Object
        Dim objwShell As Object
        Dim strEmail As String
     
        'Set your email address here
        strEmail = "papaye@gmail.com;toto@yahoo.fr"
     
        'Turn on error handling
        On Error GoTo Cleanup
     
        'Activate ClickYes
        Set objwShell = CreateObject("wscript.shell")
        objwShell.Run ("""C:\Program Files\Express ClickYes\ClickYes.exe"" -activate")
     
        'Bind to Outlook
        Set objOL = CreateObject("Outlook.Application")
     
        'Create a new email and send it
        Set objMail = objOL.CreateItem(0)    '0=olmailitem
        With objMail
            .To = strEmail
            .Subject = "Volumétrie Appels et dossiers ARS mois dernier"
            .Body = "Bonjour M , " & _
    vbCrLf & vbCrLf & _
    "Ci-joint le fichier contenant  d'incidents sur le  mois dernier " & _
    vbCrLf & vbCrLf & _
    "Je reste bien entendu à votre disposition pour tout renseignement complémentaire." & _
    vbCrLf & vbCrLf & _
    "Cordialement." & _
    vbCrLf & vbCrLf & _
    "Thiery ." & _
    vbCrLf & vbCrLf
     
     
            .Attachments.Add ActiveWorkbook.FullName
            .Send
        End With
     
        'Stop Clickyes
        objwShell.Run ("""C:\Program Files\Express ClickYes\ClickYes.exe"" -stop")
     
    Cleanup:
        'Release all objects
        Set objMail = Nothing
        Set objOL = Nothing
        Set objwShell = Nothing
        On Error GoTo 0
    End Sub
    Ci-joint le ZIP.
    Fichiers attachés Fichiers attachés

  14. #14
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 629
    Points : 34 335
    Points
    34 335
    Par défaut
    Tu as interverti les 2 en fait :

    - Workbook_Open doit etre dans l'objet ThisWorkbook.
    - EnvoiMail doit etre dans le module Module1.

    A noter qu'il est nécessaire que la fonction soit dans un module et pas dans une page de code liée à une feuille ou au classeur.
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 253
    Points : 90
    Points
    90
    Par défaut
    ça marrrrrrrrrrrche , merci Jpcheck.

    Bon weekend.

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

Discussions similaires

  1. [AC-2007] Lancer une macro Excel TCD depuis Access
    Par Benoit973 dans le forum Access
    Réponses: 1
    Dernier message: 07/08/2013, 23h05
  2. Lancer une macro excel depuis une macro powerpoint
    Par toma65 dans le forum VBA PowerPoint
    Réponses: 7
    Dernier message: 12/06/2007, 09h41
  3. lancer une macro excel depuis une appli access
    Par LostIN dans le forum Access
    Réponses: 1
    Dernier message: 22/08/2006, 11h10
  4. Lancer une macro Excel depuis Access
    Par pascal913 dans le forum Access
    Réponses: 12
    Dernier message: 31/07/2006, 15h31
  5. Lancer une macro Excel depuis Access
    Par marcobosio dans le forum Access
    Réponses: 6
    Dernier message: 05/06/2006, 20h51

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