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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    271
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 271
    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 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    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 :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

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

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    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 éclairé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    271
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 271
    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 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    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 :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

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

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    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 éclairé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    271
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 271
    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 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    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 :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

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

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    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 éclairé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    271
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 271
    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

  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 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    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 :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

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

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    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 éclairé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    271
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 271
    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