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

Excel Discussion :

Macro VBA - envoi email via Outlook en fonction d'une date / échéance


Sujet :

Excel

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2014
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Macro VBA - envoi email via Outlook en fonction d'une date / échéance
    Bonjour,

    Je suis nouvelle sur le forum...
    J'aurais souhaité un peu d'aide concernant VBA (je suis débutante... Je n'ai presque jamais codé...)

    Pour mon travail, j'ai un fichier de suivi excel. J'ai des dates que je renseigne. j'aimerais que dès qu'une date est atteinte, un mail d'alerte soit envoyé (j'ai une colonne avec la date et une colonne avec l'adresse mail).

    J'avais cherché un peu sur internet et j'avais trouvé un code pour faire ce que je souhaite... Je l'avais un peu réadapté malheureusement, lorsque j'exécute la macro : une erreur s'affiche : Erreur de compilation

    J'ai essayé de chercher l'erreur ... J'ai pourtant activé l'application Outlook dans VBA etc...




    Ci-dessous : mon code

    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
    Sub Alerte_PVR()
    Dim outobj As Outlook.Application
    Dim sSujet, sBody, sAdresseMail, sAdresseRetour As String
    Dim duree As Integer 'nbre de jours entre aujourd'hui et la date à testerDim Lig_Deb, Lig_Fin As Integer 'ligne de début, de fin
    Dim sDates_Col, sMails_Col As String 'colonnes qui contiennent les dates à tester et les adresses mailDim i As Integer
     
    Set ObjOutlook = New Outlook.Application
     
    'initialisation des constantes de la macro :Lig_Deb = 5 'dans ma feuille Excel, les dates à tester commencent en ligne 5
    sDates_Col = "T" ' et elles sont en colonne T ( 3 ième colonne)et les adresses mail sont en colonne U à côté'initialisation des données du mail envoyé :
    sSujet = "Récupérer PV de réception pour mainlevée caution"
    sBody = "Bonjour," + vbNewLine + "Veuillez-vous référer au fichier SUIVI DES CAUTIONS, afin de récupérer le PV de réception des chantiers terminés, de le scanner et de l'enregistre sur Ameris. Et enfin, si nécessaire, veuillez modifier la date de Mainlevée dans le tableau." + vbNewLine + "Si les travaux n'ont pas encore été réceptionnés, merci de modifier la cellule Date fin de chantier" + vbNewLine + "Cordialement" + vbNewLine
    sAdresseRetour = "xxxxxxxx@xxxxxx.com"
    sAdresseMail_Col = "U"
     
    'Ligne de fin =1ère cellule vide dans la colonne des dates
    Lig_Fin = Val(Range(sDates_Col & CStr(Lig_Deb)).End(xlDown).Row)
     
    ' boucle de test dans la plage des dates (=> )For i = Lig_Deb To Lig_Fin
    Range(sDates_Col & CStr(i)).Select 'activer la cellule testéeduree = Now - ActiveCell.Value ' la date est dans la cellule activeIf duree > 0 Then 'la date est dépasséesAdresseMail ActiveCell.Offset(0, 1).Value 'l'adresse mail est dans la colonne suivante offset (0,1)
    'MsgBox ("Envoi de courrier à " & sAdresseMail)
    ' envoyer le mail :Outlook.Application sSujet, sBody, sAdresseMail, sAdresseRetour
    Else
    'MsgBox ("La date n'est pas atteinte")
    End If
    Je vous remercie par avance de votre aide et de vos explication...

    J'espère avoir été claire n'hésitez pas à me demander des précisions.

    Bonne journée !

  2. #2
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Déjà, ton code n'a pas de End Sub qui le cloture. Ajoute-le.

    Ensuite tu as un Else (et un End If) sans If.
    Il est d'autant plus inutile qu'il ne contient rien. Donc supprime les trois lignes finales.

    Enfin (même si ça ne génère pas d'erreur), je ne vois pas l'intérêt de faire un Select s'il n'y a rien derrière pour utiliser la sélection. Tu peux donc supprimer aussi les 4 lignes qui précèdent.

    Perso, je n'y connais rien dans le pilotage de Outlook par VBA mais il y a quand même un truc que je trouve étonnant (je peux me tromper) : je vois dans ton code des transmissions de paramètre mais je ne vois rien qui puisse déclencher l'action d'envoi de mail.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  3. #3
    Membre éclairé Avatar de Nako_lito
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2008
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Mai 2008
    Messages : 793
    Points : 827
    Points
    827
    Par défaut
    pour faire simple,

    dans ta procédure :

    tu t'assure d'avoir outlook d'ouvert (essentiel, sinon ca restera bloqué dans ton dossier d'envoi)
    tu créé un objet outlook depuis Excel

    dans ta boucle

    tu set ton objet outlook avec les valeurs obligatoire (destinataire... c'est la seule a vrais dire) et les valeurs que tu souhaite, sujet, corps du message. Depuis une cellule excel ou en brut depuis ton code, comme tu veux
    tu envois ton message depuis excel
    tu ferme ton objet outlook (set objOutlook = nothing)

    next boucle

    Il se peut que tu ai a gérer les message d'avertissement pour te dire "pas de sujet" etc. Regarde sur google pour les inhiber. ça se fait, c'est certain ^^

    Si a la fin de ta procédure tu n'as plus besoin d'outlook et que tu ne l'as pas ouvert h24 sur ton poste de travail, n'oublie pas de le fermer.

    Si tes problèmes persiste, énumère les, j'y répondrai avec plaisir

    tu peux aussi joindre une ébauche de ton fichier pour qu'on puisse voir la structure et t'aider avec plus de précision.
    - La dernière fois que j'ai testé ca fonctionnait !
    - Vous n'avez rien modifié ?
    - Non ! Je suis pas idiot non plus.
    - ....
    - Enfin si, juste le fichier .dll, mais a 4Ko, ca devait pas être important.

Discussions similaires

  1. Workflows : Envoi emails via Outlook
    Par SD_X3 dans le forum SAGE
    Réponses: 0
    Dernier message: 04/11/2013, 13h44
  2. [XL-2007] envoyer des email via outlook a partir d'une liste excel
    Par kaayna dans le forum Excel
    Réponses: 1
    Dernier message: 10/02/2010, 16h53
  3. Envoi Email via Outlook
    Par chim33 dans le forum VBA Access
    Réponses: 2
    Dernier message: 28/04/2008, 14h32
  4. [ACCESS 2000] Format envoi email via outlook
    Par yepAccess dans le forum VBA Access
    Réponses: 2
    Dernier message: 15/08/2007, 01h01

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