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 :

Mail alerte en fonction d'une date


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 21
    Points : 11
    Points
    11
    Par défaut Mail alerte en fonction d'une date
    Bonsoir,

    Je suis à la recherche d'une macro pouvant répondre à mon besoin. J'ai fais le tour du forum, mes je n'ai pas encore trouvé ma solution.

    J'ai une liste de tache dans une colonne (Pierre, Thomas, Jacques...)
    A chaque tache j'ai une date limite.
    Je cherche à envoyer un mail (à une liste donnée dans une autre page) indiquant que tel ou tel tâche arrive à la date limite (genre 2 ou 3 jours avant)

    J'arrive à créer un mail via excel, mais les paramètre (adresse objet et corps) ne sont pas paramétrable comme je le souhaite.

    Je début en VBA, mais je veux apprendre...

    Merci d'avance pour votre aide.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 207
    Points : 14 362
    Points
    14 362
    Par défaut
    Bonjour,

    Quel est ton client de messagerie ? OutLook ? Notes ?

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 21
    Points : 11
    Points
    11
    Par défaut
    Très bonne question, j'y avais pas pensé.

    Sur Outlook 2010, avec tout le pack office également en 2010

  4. #4
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 207
    Points : 14 362
    Points
    14 362
    Par défaut
    En supposant les tâches en colonne A, les dates en colonne B, les adresses mail en colonne C, les sujets en colonne D et les corps de message en colonne E (à toi t'adapter) :

    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
    Sub Alertes()
        Dim C As Range, OL As Object, M As Object, Plage As Range
        Set olApp = CreateObject("Outlook.application")
        With Sheets("Feuil1")
            Set Plage = .Range(.[A2], .Cells(.Rows.Count, 1).End(xlUp))
        End With
        For Each C In Plage
            If C.Offset(, 1) - Date = 3 Then
                Set M = olApp.CreateItem(olMailItem)
                With M
                    .Subject = C.Offset(, 3)
                    .Body = C.Offset(, 4)
                    .Recipients.Add C.Offset(, 2)
                    '.display
                    .Send
                End With
            End If
        Next C
    End Sub
    Le mail est envoyé à J-3.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 21
    Points : 11
    Points
    11
    Par défaut
    Super c'est exactement ce que je cherché, j'ai pu un petit peu l'adapter.
    Cependant je n'arrive pas ajouter d'autre adresse, et à faire en sorte d'utilisé une autre feuille du tableur pour tel ou tel paramètre.

    Dans cette parti, si j'ai bien compris,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
                    .Subject = C.Offset(, 3)
                    .Body = C.Offset(, 4)
                    .Recipients.Add C.Offset(, 2)
    le numéro correspond au décalage de la colonne de base. mais pour lui dire que c'est sur une autre feuille, je bloque...

  6. #6
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 207
    Points : 14 362
    Points
    14 362
    Par défaut
    Voici un exemple avec deux destinataires dont un et le sujet sont sur une autre feuille. Sinon, ça dépend de la disposition de test données. Décris-les ou mets un classeur en pièce jointe.

    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
    Sub Alertes()
        Dim C As Range, OL As Object, M As Object, Plage As Range
        Set olApp = CreateObject("Outlook.application")
        With Sheets("Feuil1")
            Set Plage = .Range(.[A2], .Cells(.Rows.Count, 1).End(xlUp))
        End With
        For Each C In Plage
            If C.Offset(, 1) - Date = 3 Then
                Set M = olApp.CreateItem(olMailItem)
                With M
                    .Subject = [Feuil2!A3]
                    .Body = C.Offset(, 4)
                    .Recipients.Add C.Offset(, 2)
                    .Recipients.Add [Feuil3!A10]
                    '.display
                    .Send
                End With
            End If
        Next C
    End Sub

  7. #7
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 21
    Points : 11
    Points
    11
    Par défaut
    ha oui ça devient un petit peu compliqué là. J'ai essayé mais j'y arrive pas trop. Je te met en forme mon classeur pour pouvoir le mettre en libre sur le net lundi.

    En faite une solution apporte un nouveau besoin

    Jusque là, le mail envoyé (objet + corps) était toujours le même si j'ai bien compris?
    Est-ce possible de modifier le corps et l'objet en fonction de la tâche en question?

  8. #8
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 207
    Points : 14 362
    Points
    14 362
    Par défaut
    Est-ce possible de modifier le corps et l'objet en fonction de la tâche en question?
    Oui.

  9. #9
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 21
    Points : 11
    Points
    11
    Par défaut
    Alors voila, j'ai mi du temps car j'étais pris par le taf dsl.

    Dans le fichier joint, tu as sur la première feuille une liste de doc, avec une date limite d'envoi déterminé par la fin d'une intervention.

    Mon but c'est d'avoir un mail alertant l'approche de la dead line d'envoi, puis un mail alertant le dépassement (avec l'objet et le corps correspondant au document).

    Je suppose qu'il y a plusieurs façon de déclencher une macro. le faire automatiquement 3 jours avant me semble bien. Mais avoir la possibilité en plus de le faire également, en fonction du besoin avec un bouton par exemple, pour les doc dépassé me semble bien utile.

    Une macro peut elle être appelé automatiquement en fonction d'une date et avec un bouton?
    Fichiers attachés Fichiers attachés

  10. #10
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Bjr,
    Oui tu peux déclencher une macro selon une date de plusieurs manières.

    Soit quand tu ouvres le Fichier excel

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sub Workbook_Open() dans ThisWorkbook
    Soit à un moment donné
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      Application.OnTime Now + TimeValue("00:00:01"), "Module_comparaison.Comparaison_go"
    mais il faut que ton classeur soit ouvert.

    S'il n'est pas ouvert mais qu'il faut vérifier à un instant donné il faut utiliser les "taches planifiées" du panneau de configuration de Windows +
    Workbook_Open (ou auto_open)

  11. #11
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 207
    Points : 14 362
    Points
    14 362
    Par défaut
    Mets cette macro dans un module standard :

    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 Alertes()
        Dim C As Range, OL As Object, M As Object, Plage As Range
        Set olApp = CreateObject("Outlook.application")
        With Sheets("Tranche Ferme - MCO Contractuel")
            Set Plage = .Range(.[A7], .Cells(.Rows.Count, 1).End(xlUp))
        End With
        For Each C In Plage
            If C.Offset(, 4) - Date = 3 Or C.Offset(, 4) > Date Then
                Set M = olApp.CreateItem(olMailItem)
                With M
                    .Subject = C.Offset(, 7).Value
                    .Body = C.Offset(, 8).Value
                    If C.Offset(, 4) - Date = 3 Then
                        .Recipients.Add [reporting!A2].Value
                    Else
                        .Recipients.Add [reporting!A3].Value
                    End If
                    '.display
                    .Send
                End With
                Set M = Nothing
            End If
        Next C
    End Sub
    Dans ThisWorkbook, mets :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_Open()
        Alertes
    End Sub
    et attache ce code à un bouton (ActiveX) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub CommandButton1_Click()
        Alertes
    End Sub
    Cf. classeur joint.
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Réponses: 8
    Dernier message: 31/10/2012, 17h20
  2. Envoie mail automatique en fonction d'une date
    Par ju3979 dans le forum Macros et VBA Excel
    Réponses: 39
    Dernier message: 29/06/2009, 14h07
  3. Réponses: 2
    Dernier message: 25/09/2007, 20h03
  4. [Dates] message en fonction d'une date
    Par chouchouboy dans le forum Langage
    Réponses: 14
    Dernier message: 24/02/2006, 17h31
  5. Réponses: 2
    Dernier message: 03/10/2005, 12h00

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