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 :

[VBA-E]Envoi de mail journalier


Sujet :

Macros et VBA Excel

  1. #1
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 344
    Par défaut [VBA-E]Envoi de mail journalier
    Bonjour,

    j'ai cette procédure avec moi :

    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
    Sub START2()
    Dim fLag, newHour, newMinute, newSecond, waitTime
    newHour = Hour(Now())
    newMinute = Minute(Now())
    newSecond = Second(Now()) + 1
    waitTime = TimeSerial(newHour, newMinute, newSecond)
    deb1:
    If Time <= "09:30:00" Then
        GoTo mail1
    ElseIf Time <= "14:30:00" Then
        GoTo mail2
    ElseIf Time <= "18:30:00" Then
        GoTo mail3
    Else
        GoTo nolaunch
    End If
     
    mail1:
    While Time < "09:30:00"
        DoEvents
    Wend
    'Application.Wait "09:30:01"
    Call SendMeEmail
    mail2:
    While Time < "14:30:00"
        DoEvents
    Wend
    'Application.Wait "14:30:01"
    Call SendMeEmail
    mail3:
    While Time < "18:30:00"
        DoEvents
    Wend
    'Application.Wait "18:30:01"
    Call SendMeEmail
    nolaunch:
    While Time > "18:30:00"
        DoEvents
    Wend
    GoTo deb1
    End Sub
    qui me permet d'envoyer un mail 3 fois par jour cette procédure marche très bien hein le seul problème est que cette procédure bouffe tout le process et que donc quand je la lance dans les processus ça prend énormément de place et vu que je travaille sur d'autres fichiers Excel ben ça devient plus long du coup...Comme vous le voyez j'ai essayé de mettre un Wait mais le problème du Wait c'est qu'il arrete carrément tous les process Excel, donc si je suis en train de travailler sous Excel, bah ya tout qui se coupe pendant l'envoi du mail
    Alors ma question c'est est-ce qu'il existe un moyen de façon à ce que cette macro fonctionne qu'à l'heure indiquée ? et non qu'elle tourne tout le temps jusqu'a à l'heure de l'envoi ?

    Pour information j'ai essayé ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub START2()
    deb1:
    If Time < "09:30:00" Or Time > "18:30:00" Then
        Application.OnTime TimeValue("09:30:00"), "SendMeEmail"
    End If
    If Time > "09:30:00" And Time < "14:30:00" Then
        Application.OnTime TimeValue("14:30:00"), "SendMeEmail"
    End If
    If Time > "14:30:00" And Time < "18:30:00" Then
        Application.OnTime TimeValue("18:30:00"), "SendMeEmail"
    End If
    GoTo deb1
    End Sub
    Mais à priori ya un bin's à cette procédure et ça marche pas tout le temps sachant qu'il faut que le mail soit donc envoyé 3 fois par jour aux heures indiquées, et tous les jours du lundi au vendredi

    Vala merci beaucoup pour votre aide si quelqu'un a une solution
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  2. #2
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 344
    Par défaut
    Personne n'a de solution adapté à mon soucis ?
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  3. #3
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    1. Qu'est-ce qu'il ne marche pas dans ta 2° méthode..? tu as bien rajouter un appel à Start2 à la fin de ta procédure SendMeMail..
    2. Que fait la procédure SendMeMail.. d'ou prends t'elle les données à envoyer..? est tu obligé de la laisser sous Excel..? tu pourrai peu-être utiliser les tâches planifiés de Windows pour lancer un ta macro..?

  4. #4
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 344
    Par défaut
    1) le problème de la deuxième procédure est qu'elle ne tourne qu'une fois : une fois qu'on la lance elle ne boucle pas du coup ça envoie un fichier et après vala c'est fini donc il faut la relancer...
    2) Bah la procédure SendMeMail envoie un mail avec un objet, à plusieurs destinataires avec un fichier Excel attaché

    EDIT : pour répobdre à ta question oui je suis obligé de la laisser sous Excel, car de une elle es utilisé grâce à un bouton dans une feuille Excel et de 2 en fait sur cette feuille il y a plusieurs bouton, un qui lance donc cette macro au dessus, un qui arrete la macro, et une autre qui envoie le mail dès que l'on clique sur le bouton
    J'espère m'etre fait comprendre
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  5. #5
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Citation Envoyé par bbil
    tu as bien rajouter un appel à Start2 à la fin de ta procédure SendMeMail.
    ou si tu ve pas toucher à ta procédure SendMeMail .. tu crée une nouvelle procédure

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     sub SenMeMailBoucle
        SendMeMAil
        Start2
    end sub
    et tu modifie Start2 pour qu'il fasse appell à cette procédure..

  6. #6
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 344
    Par défaut
    Arf pardon j'avais pas vu cet élément de réponse
    Mais je te confirme que oui à la finde la procédure SendMeMail il y a un Call Start2
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  7. #7
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    j'avais pas vu le goto dans ton start2 (le 2°) .., enléve le ! et remplace par exemple tes > par des >= ... pour éviter... le cas ou tu tombe à la seconde "00.."

  8. #8
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 344
    Par défaut
    Bah nan si j'enlève le supérieur et que je met des >= ou =< ça sera dans 2 intervalles en meme temps alors que la ça l'envoie à 00 justement
    Par contre c'est vrai que le Goto sert à rien puisqu'il est dans la procédure SendMeMail

    Merci beaucoup
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  9. #9
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Citation Envoyé par illight
    Bah nan si j'enlève le supérieur et que je met des >= ou =< ça sera dans 2 intervalles en meme temps alors que la ça l'envoie à 00 justement
    non tu ne t'est pas gratté assez la tête ..? que se passe-t'il par exemple si tu lance Start2 à
    09:30:00 ou 14:30:00 ou 18:30:00
    ce qui peu arriver (mais je te l'accorde est peu probable) si la procédure
    SendMeMAil dure moins d'1s...

  10. #10
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 344
    Par défaut
    Bah normalement je l'envoie pas à cette heure ci, elle est lancée directement et le pc est toujours allumé du coup la macro tourne tout le temps
    genre on l'envoie a 7h et après on s'occupe plus de ça

    Pour ce que ut me dis après, justement à 9h30:00 il éxécute la macro SendMeMail peu importe combien de temps elle dure non ?
    C'est à cette heure précise qu'il envoie le mail dans la macro, le temps d'éxécution de celle ci on s'en fout un peu
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  11. #11
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Citation Envoyé par illight
    Bah normalement je l'envoie pas à cette heure ci, elle est lancée directement et le pc est toujours allumé du coup la macro tourne tout le temps
    Pas la macro Start2 la 2° macro Start2, sans le goto.. !!

    elle est aussi exécuter aprés le SendMAil... , (le Call Start2 que tu as rajouté..) donc si SendMaiL... dure moins d'1s .....

  12. #12
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 344
    Par défaut
    oui celle la :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Sub START2()
    If Time < "09:30:00" Or Time > "18:30:00" Then
        Application.OnTime TimeValue("09:30:00"), "SendMeEmail"
    End If
    If Time > "09:30:00" And Time < "14:30:00" Then
        Application.OnTime TimeValue("14:30:00"), "SendMeEmail"
    End If
    If Time > "14:30:00" And Time < "18:30:00" Then
        Application.OnTime TimeValue("18:30:00"), "SendMeEmail"
    End If
    End Sub
    C'est ce que je dis, ça lance la macro à 09:30:00 donc à pile donc je vois pas pourquoi changer les > par des >=
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  13. #13
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Citation Envoyé par illight
    C'est ce que je dis, ça lance la macro à 09:30:00 donc à pile donc je vois pas pourquoi changer les > par des >=
    non ...a 09:30:00 aucune de lignes ....OnTime ... ne sera exécuté...!

  14. #14
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 344
    Par défaut
    Je suis désolé mais je comprend pas pourquoi

    Si on est avant 09h30:00 il lancera alors la macro sendmemail à 9h30:00 D'accord ?
    DOnc il lance la macro, et à la fin de SendMeMail il relance la macro START2 donc après 09h30:00 soit dans le deuxième intervalle de temps de ma procédure donc il lancera le Ontime a 14h30:00, etc...
    Nan ?

    Ou c'est moi qui comprend pas ?
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  15. #15
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Citation Envoyé par illight
    Je suis désolé mais je comprend pas pourquoi

    Si on est avant 09h30:00 il lancera alors la macro sendmemail à 9h30:00 D'accord ?
    DOnc il lance la macro, et à la fin de SendMeMail il relance la macro START2 donc après 09h30:00 soit dans le deuxième intervalle de temps de ma procédure donc il lancera le Ontime a 14h30:00, etc...
    Nan ?

    Ou c'est moi qui comprend pas ?
    donc après 09h30:00 , => ds Oui à 09h30:00 + Durée d'exécution de SendMeMail et si SendMeMail dure 0,2 sec... cela donne à 09h30:00 !

    PS : mais bon on va arrêter la pas la peine de remplir ce post pour une histoire de > ou >=

  16. #16
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 344
    Par défaut
    ah ouaisssssssssssssss enfin tu chipote mais bon je veux bien prendre en considération ton doute


    Merci beaucoup pour ton aide
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 22/05/2013, 16h33
  2. [XL-2007] VBA Excel - envoi de mail via Outlook
    Par Seg_B dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 25/10/2011, 12h08
  3. macros et vba excel envoi de mails multiples
    Par dembasba dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 13/09/2011, 21h41
  4. [XL-2003] Une question concernant mon module VBA pour envoi des mail en masse.
    Par dariyoosh dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 14/10/2010, 16h03
  5. [VBA-A] Envoi de mail sans passer par Outlook ou autre.
    Par genius99 dans le forum VBA Access
    Réponses: 4
    Dernier message: 21/02/2006, 07h50

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