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 :

Macro Outlook qui lance une Macro Excel qui veut envoyer un mail = Bug


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Inscrit en
    Janvier 2005
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 129
    Points : 72
    Points
    72
    Par défaut Macro Outlook qui lance une Macro Excel qui veut envoyer un mail = Bug
    Hello, hello;

    Tout est dans le titre...

    J'explique mon process:

    Tous les matins, en partant de chez moi, je m'envoie un mail avec mon Blackberry (Outlook est ouvert sur mon poste) dont l'objet est, disons, "Lance ma macro Now!"

    Une regle de messagerie dit que je lance un script quand le sujet est "Lance ma macro Now!" (je suis pas sur que l'IT soit super content que potentiellement tout le monde peut avoir acces a mon poste par e-mail, mais c'est un autre probleme):

    Le script outlook:

    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
    Sub LaunM(myMtgReq As Outlook.MailItem)
     
    Dim StrID, olNS
    StrID = myMtgReq.EntryID
    Set olNS = Application.GetNamespace("MAPI")
    Dim MyMail As Outlook.MailItem
    Set MyMail = olNS.GetItemFromID(StrID)
     
            Dim appExcel As Excel.Application
            Dim wbExcel As Excel.Workbook
            Dim wsExcel As Excel.Worksheet
            Dim MavarXL
     
            Set appExcel = CreateObject("Excel.Application")
            appExcel.Visible = True
            Set wbExcel = appExcel.Workbooks.Open("C:\Fichier.xls")
            wbExcel.Application.AddIns("Analysis ToolPak").Installed = False
            wbExcel.Application.AddIns("Analysis ToolPak").Installed = True
     
            wbExcel.Worksheets(3).Range("E14").Value = MyMail.Subject
     
            Set wsExcel = wbExcel.Worksheets(1)
            MavarXL = appExcel.Run("Fichier.xls" & "!MACRO")
    End Sub
    J'ouvre donc Fichier.xls et lance la Macro MACRO. Jusque la tout va bien.

    Cette MACRO va ouvrir tout un tas de fichiers pour a son tour lancer des macros.

    Dans nombreux de ces fichiers, le resultat de la macro est envoye par e-mail (je me contente d'afficher l'email pour faire un check et ils sont lancer manuellement, de toute facon l'alerte outlook empeche le lancement automatique sauf en passant par le petit soft Redemption ou CDO qui a jamais marche chez moi, bref).


    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
    Sub SNDMail()
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
     
        Dim source As Range
        Dim OutApp As Outlook.Application
        Dim OutMail As Outlook.MailItem
     
        Range(Mail).Select
        Set source = Selection
     
        Set OutApp = CreateObject("Outlook.Application")
        Set OutMail = OutApp.CreateItem(olMailItem)
        With OutMail
            .To = "Moi"
            .CC = ""
            .BCC = ""
            .Subject = "Mail" & Range("C4").Text
            .HTMLBody = RangetoHTML
            Application.Wait (Now() + 0.0001)
             .Display
        End With
     
        Set OutMail = Nothing
        Set OutApp = Nothing
     
    End Sub
    Parfois ca lance le mail, parfois pas (ca bugue)...

    Au niveau de ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(olMailItem)
    Toujours sur les memes fichiers... Strange... Il va de soi que lance avec outlook qui a la main, ca marche a chaque fois (c'est a dire si je lance directement manuellement la macro excel qui va ouvrir mes fichiers, lancer les macros et afficher les mails, quand c'est outlook qui la lance - et donc qui ne rend la main que quand tout le process est termine - sur 4 fichiers ca bogue, les macros sont construites exactement de la meme maniere...)

    Une idee?

    Lameth

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Ajoute déjà un DoEvents après cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            Set wbExcel = appExcel.Workbooks.Open("C:\Fichier.xls")
            DoEvents
    et après celles-ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
             .Display
        End With
        DoEvents
    A quoi te servent ces deux lignes ?
    Dim source As Range
    Set source = Selection
    Enfin, comme tes Set créent l'objet, je testerais en mettant à la place de
    Dim OutApp As Outlook.Application
    Dim OutMail As Outlook.MailItem
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        Dim OutApp As Variant
        Dim OutMail As Variant
    (sous réserve... mais pour créer une instance de word depuis Excel, ça fonctionne très bien alors que j'ai parfois des bugs avec la première syntaxe - bugs que je n'ai pas cherché à identifier puisque ça fonctionne avec Variant)

  3. #3
    Membre régulier
    Inscrit en
    Janvier 2005
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 129
    Points : 72
    Points
    72
    Par défaut
    Les "source" ca doit etre des reliquats de vielle macro...

    La pluspart ce sont des macros qui etaient deja en place lors de mon arrivee et que je n'ai pas encore cherche a epurer.

    Pour les DoEvents, je vais le faire, j'ai trop tendance a ne pas les utiliser alors que ca ne mange pas de pain.

    Je te reviens sur le reste, le temps de mettre ca en place et de tester. Merci.

    Tiens une remarque, quand j'ouvre Excel par ma macro Outlook, ca ouvre une version vraiment pourrie graphiquement, j'ai l'impression de me retrouver sous Win 3.1...

  4. #4
    Membre régulier
    Inscrit en
    Janvier 2005
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 129
    Points : 72
    Points
    72
    Par défaut
    Bon ca a l'air de fonctionner, je verrais demain matin...
    Je commence a me demander si c'est pas un probleme de memoire.
    Outlook reste bloque tant que sa macro n'est pas terminee, des nouveaux mails arrivent sans cesse et tout et tout...
    Je verrais bien demain, en tous cas merci.

  5. #5
    Membre régulier
    Inscrit en
    Janvier 2005
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 129
    Points : 72
    Points
    72
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set OutApp = CreateObject("Outlook.Application")
    Je plante la...

    Runtime Error '-2147417856(80010100)'
    Automation error
    System call failed
    Quand je lance moi meme la macro (donc que c'est pas outlook, jamais ca merde). Quand c'est outlook qui la lance, une fois ca passe une fois ca passe pas...

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    avec quelle déclaration de OutApp ? Variant ?
    Si oui alors rétablis OutApp As Outlook.Application, mon conseil n'était pas le bon.
    Tu as fait une recherche dans la FAQ ?

  7. #7
    Membre régulier
    Inscrit en
    Janvier 2005
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 129
    Points : 72
    Points
    72
    Par défaut
    Manifestement c'est un probleme de memoire... C'est pas d'aujourd'hui que je fais des macros qui envoient des mails...

    Je lance deja une macro qui va lancer des macros qui en lancent d'autres alors si je lance la premiere macro par une autre application, ca cree des pb se memoire.

    Mes macro d'envoie de mail marchent parfaitement si je ne lance pas la macro par un script outlook.

    Je vais donc rendre la main a Outlook. Ca va m'obliger a faire plusieurs regles de messageries (puisque dans mon script, le sujet du mail servait de reference pour une cellule Excel), qui tout simplement ouvrent un fichier excel avec une macro on_open...

    Outlook aura la main comme ca...

    Par contre - c'est un probleme plus Outlook qu'Excel - la regle de messagerie peut "lancer une application" il faut que ce soit un .exe. Si je le force avec un .xls ca prend 30 secondes pour m'ouvir le fichier... Mais bon, je pense que aller construire un .exe pour ouvrir un .xls ensuite ca complique encore la chose.

Discussions similaires

  1. Réponses: 1
    Dernier message: 31/01/2012, 10h01
  2. Créer un bouton et qui lance une macro
    Par malabarbe dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 10/09/2007, 15h13

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