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 :

Alerte date echéance par Mail Excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2009
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 67
    Par défaut Alerte date echéance par Mail Excel
    Bonjour, j'ai trouvé un script vba que j'ai adapté à ce que je voulais, mais je me retrouve avec un problème car je n'arrive pas à faire.
    Le script permet de vérifier une date d'expiration et d'envoyer aux personnes concernées un mail les prévenants de l'expiration d'un certificats.
    Là ou je bloque c'est que l'alerte dois se faire avant 60 jours et 30 jours
    mais si j'automatise la macro tous les jours, les personnes vont recevoir un mails tous les jours, et j'aimerai que ce mail soit envoyé une fois à partir de 60 jrs et une autre à partir de 30 jrs.
    si vous pouvez m'aider.
    Merci
    Si je ne suis pas claire n'hésitez pas.

    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
    Sub envoimail()
     
    Dim messagerie As Object
    Dim email As Object
    Dim cel As Range
    Dim delai As Integer
     
    Set messagerie = CreateObject("Outlook.Application")
     
    delai = 60 'jours
     
    For Each cel In Range("A2:A" & Range("A2").End(xlDown).Row)
        If cel.Offset(, 0).Value - Now < delai Then
     
            Set email = messagerie.CreateItem(0)
     
            With email
                .to = cel.Offset(, 4).Value
                .Bcc = cel.Offset(, 5).Value
                .Subject = "Expiration " & "[" & cel.Offset(, 2) & "]"
                .body = "Bonjour," & vbCrLf & vbCrLf & "corps du message" & cel.Offset(, 3) & " arrive à échéance le " & cel.Offset(, 0) & vbCrLf & "corps du message" & vbCrLf & "corps du message" & vbCrLf & "signature" & vbCrLf & "Tel:"
     
                .ReadReceiptRequested = True
                .display ' à remplacer par .send si ok
            End With
     
            Set email = Nothing
     
        End If
    Next cel
     
    Set messagerie = Nothing
     
    End Sub

  2. #2
    Expert éminent 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
    Par défaut
    Citation Envoyé par kamsy Voir le message
    mais si j'automatise la macro tous les jours, les personnes vont recevoir un mails tous les jours, et j'aimerai que ce mail soit envoyé une fois à partir de 60 jrs et une autre à partir de 30 jrs.
    Solution simple : tu crées une colonne "Mail envoyé".

    Tu la mets à 0 par défaut.

    Lorsque tu arrives à ta date d'échéance de -60 jours, tu vérifies que cette colonne de la ligne correspondante est inférieure à 1.
    Si ce n'est pas le cas, ma macro n'envoie pas le mail.
    Si c'est le cas, elle envoie le mail et passe la case à 1.

    Lorsque tu arrives à ta date d'échéance de -30 jours, tu vérifies que cette colonne de la ligne correspondante est inférieure à 2.
    Si ce n'est pas le cas, ma macro n'envoie pas le mail.
    Si c'est le cas, elle envoie le mail et passe la case à 2.

    Et ainsi de suite si tu as d'autres dates d'échéance.

  3. #3
    Membre confirmé
    Inscrit en
    Octobre 2009
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 67
    Par défaut
    Bonjour,
    Désolé je n'étais pas revenu, entre temps, j'avais trouvé la solution.
    j'ai un autre soucis, je mets en place une tache automatisée sur mon serveur, mais le problème c'est qu'elle ne se lance pas.
    ce qui est bizarre, c'est que si dans tâche j'active le "paramètre Run Only when user is logged" on ça fonctionne. et si je met "Run whether user is logged on or not" , là ça ne marche pas.
    Pour expliquer ce que j'ai fait,
    1 ) j'ai créé un script vbs pour l'expiration des dates
    2 ) Vbs permettant de lancer la macro
    3 ) batch cmd permettant de lancer le vbs
    je sais pas si c'était utile.
    Ce que je remarque c'est quand je lancer mon vbs à la main ou mon batch cmd ça fonctionne et il lance la commande excel /DDE
    lorsque je l'exécute via l'outil task Scheduler , là ça ne fonctionne pas, et il le lance avec le commutateur excel /automation - Embedding
    Si vous avez déjà eu le problème
    Merci de votre aide, je bloque là

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    Si tu peux exécuter ton vbs c'est parce que tu a une session Windows ouverte ce qui n'est pas forcement le cas avec le gestionnaire de tache.

    Si tu utilises dans ton code des lecteurs réseau genre z:\ il est possible qu'il ne soit pas Mapé.

    Dans ce cas utilises l'adresse ip \\172.168.1.1 par exemple ou le nom du serveur \\MonServeur.

  5. #5
    Membre confirmé
    Inscrit en
    Octobre 2009
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 67
    Par défaut
    Bonjour déjà fait mais toujours rien
    Impossible

  6. #6
    Membre confirmé
    Inscrit en
    Octobre 2009
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 67
    Par défaut
    Bonjour,
    Autre chose,
    j'aimerai utiliser ce script VBA avec le protocole Smtp et non en passant par OutlooK
    Mon serveur n'a pas outlook d'installer et je ne souhaite pas le mettre.
    Comment je pourrai adapter le vba avec le SMTP
    Merci

  7. #7
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2019
    Messages : 2
    Par défaut bonjour copment puis je faire ppour réaliser cette macro ?
    Citation Envoyé par kamsy Voir le message
    Bonjour, j'ai trouvé un script vba que j'ai adapté à ce que je voulais, mais je me retrouve avec un problème car je n'arrive pas à faire.
    Le script permet de vérifier une date d'expiration et d'envoyer aux personnes concernées un mail les prévenants de l'expiration d'un certificats.
    Là ou je bloque c'est que l'alerte dois se faire avant 60 jours et 30 jours
    mais si j'automatise la macro tous les jours, les personnes vont recevoir un mails tous les jours, et j'aimerai que ce mail soit envoyé une fois à partir de 60 jrs et une autre à partir de 30 jrs.
    si vous pouvez m'aider.
    Merci
    Si je ne suis pas claire n'hésitez pas.

    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
    Sub envoimail()
     
    Dim messagerie As Object
    Dim email As Object
    Dim cel As Range
    Dim delai As Integer
     
    Set messagerie = CreateObject("Outlook.Application")
     
    delai = 60 'jours
     
    For Each cel In Range("A2:A" & Range("A2").End(xlDown).Row)
        If cel.Offset(, 0).Value - Now < delai Then
     
            Set email = messagerie.CreateItem(0)
     
            With email
                .to = cel.Offset(, 4).Value
                .Bcc = cel.Offset(, 5).Value
                .Subject = "Expiration " & "[" & cel.Offset(, 2) & "]"
                .body = "Bonjour," & vbCrLf & vbCrLf & "corps du message" & cel.Offset(, 3) & " arrive à échéance le " & cel.Offset(, 0) & vbCrLf & "corps du message" & vbCrLf & "corps du message" & vbCrLf & "signature" & vbCrLf & "Tel:"
     
                .ReadReceiptRequested = True
                .display ' à remplacer par .send si ok
            End With
     
            Set email = Nothing
     
        End If
    Next cel
     
    Set messagerie = Nothing
     
    End Sub

    bonjour copment puis je faire ppour réaliser cette macro ?

  8. #8
    Expert éminent 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
    Par défaut
    Etant donné que la macro semble déjà faite, la question est étrange...

Discussions similaires

  1. Envoi d'alerte par mail depuis access selon une date
    Par ensascience dans le forum IHM
    Réponses: 1
    Dernier message: 10/02/2016, 19h20
  2. [XL-2003] Alerte par mail date expirée
    Par Titian dans le forum Excel
    Réponses: 17
    Dernier message: 27/08/2013, 15h38
  3. [XL-2007] Recevoir une alerte par mail selon une date de péremption
    Par Scatmax dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 04/03/2010, 16h58
  4. Alerte par Mail à partir d'Excel
    Par quitiou dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 22/10/2009, 06h53
  5. Envoie d'un fichier excel par mail via un bouton d'action
    Par ghostal dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 21/07/2006, 08h22

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