Alerte outlook via fichier Excel

Bonjour,

Je dois mettre en place pour ma société un fichier Excel comportant des dates de fin d'entrée sur un site.

Je souhaiterai pouvoir recevoir une alerte au moins 15 jours avant, avec le site et le numéro du document concerné.

Pouvez-vous svp m'aider sur le sujet ?

Merci.

Bonjour et bienvenue,

Pas de soucis, mais une question : qui utilisera le fichier excel ? car si c'est toi, quel est l'intérêt d'un mail ?

As-tu une structure de fichier excel ?

Voici dans tous les cas la trame d'envoi d'un mail

Option Explicit
Sub envoi()

Dim messagerie As Object
Dim email As Object
Dim cel As Range
Dim texte As String

Set messagerie = CreateObject("Outlook.Application")

For Each cel In Range("A2:A" & Range("A1").End(xlDown).Row)
    If cel.Offset(0, xxxx) > now +15 Then 'on teste ici la date : il faut remplacer xxxx par le n° de colonne à partir de A

        Set email = messagerie.CreateItem(0)

        With email
            .to = cel
            .Subject = "mettre ici le titre du mail"
            .body = "bla bla bla" ' 
          .display ' à remplacer par .send si ok
        End With

        Set email = Nothing

    End If

Next cel

Set messagerie = Nothing

End Sub

Bonjour,

Merci beaucoup pour la réponse!

Nous serons plusieurs à utiliser ce fichier et à recevoir les alertes via outlook.

Je suis pas dans la possibilité de vous envoyer le fichier par contre, je vous ai envoyé un exemple de présentation pour que vous puissiez voir un peu le genre de tableau que nous allons faire.

Il faut que je puisse recevoir une alerte outlook 15 jours avant la date de fin (colonne H) avec dans cette alerte : le n° du doc (Colonne A) à l'adresse mail du rédacteur (Colonne E)

Est ce possible?

Merci,

Cordialement

non testé ... à tester de ton côté

edit : suppression du fichier (cause = cellules fusionnées)

Merci je regarderai demain matin.

Je vous tiens au courant

Bonne soirée

Il sera bon sans doute de tester aussi la date de dernière alerte que j'ai mise dans la dernière colonne, histoire de ne pas répéter l'alerte à tout bout de champ !

Correction de la macro car je n'avais pas fait attention aux cellules fusionnées, grrr !!

Option Explicit
Sub alerter()

Dim messagerie As Object
Dim email As Object
Dim cel As Range
Dim txt As String

    Set messagerie = CreateObject("Outlook.Application")
    Set email = messagerie.CreateItem(0)
    With email
        .to = [dest]
        .Subject = [titre]
        txt = "<table>"
        For Each cel In Range("A2:A" & Range("A1").End(xlDown).Row)
            If cel.Offset(0, 6) > Now + 15 Then
                cel.Offset(0, 7) = Now
                txt = txt & "<tr><td>" & _
                cel.Offset(0, 0) & "</td><td>" & _
                cel.Offset(0, 1) & "</td><td>" & _
                cel.Offset(0, 2) & "</td><td>" & _
                cel.Offset(0, 3) & "</td><td>" & _
                cel.Offset(0, 4) & "</td><td>" & _
                cel.Offset(0, 5) & "</td><td>" & _
                cel.Offset(0, 6) & "</td><td>" & _
                "</td></tr>"
            End If
        Next cel
        txt = txt & "</table>"
        .htmlbody = txt & .htmlbody
        .display ' à remplacer par .send si ok
    End With
    Set email = Nothing
    Set messagerie = Nothing
End Sub

Vraiment merci beaucoup!

Je vais tester ça demain matin avec mon apprentie.

Passez une bonne soirée

Désolé pour cette erreur, il faut replacer

            If cel.Offset(0, 6) > Now + 15 Then

par

            If cel.Offset(0, 6) < Now + 15 And cel.Offset(0, 6) > Now Then

plus une condition sur la date d'alerte

Bonjour,

Encore merci pour votre aide !

Nous avons testé votre fichier et nous nous sommes rendu compte qu'il manquait des informations pour que le fichier soit ok.

Nous avons fait évoluer le fichier exemple et représente plus la réalité.

Par rapport à votre travail nous remarqué un bouton alerte, pouvez vous svp nous indiquer son utilité ?

Vous remarquerez qu'il y a plusieurs onglets, est-il possible de faire des codes VBA pour tous ?

Notre souhait est de recevoir une alerte automatiquement 15 jours avant la date directement via Outlook sans bouton ou autres accessoires sur le fichier mais uniquement à l'ouverture de Outlook et/ou du fichier Excel. De même, concernant les alertes, le rédacteur représente une adresse mail, comment faire pour intégrer ces adresses mails ?

Merci d'avance et nous espérons avoir été clair dans nos explications.

47excel-vba-code.xlsx (22.50 Ko)

ok

merci pour ce retour

je regarde tout cela, cela doit être faisable !

A tester

Option Explicit
Sub alerter()
Dim messagerie As Object
Dim email As Object
Dim cel As Range
Dim txt As String
Dim ws As Worksheet
For Each ws In Worksheets
ws.Select
    Set messagerie = CreateObject("Outlook.Application")
    Set email = messagerie.CreateItem(0)
    With email
        .to = "Katia.Deoliveira@socotec.com"
        .Subject = "Alerte sur fin de contrat"
        txt = "<table>"
        Set cel = Range("A14")
                txt = txt & "<tr><td>" & _
                cel.Offset(0, 0) & "</td><td>" & _
                cel.Offset(0, 1) & "</td><td>" & _
                cel.Offset(0, 3) & "</td><td>" & _
                cel.Offset(0, 9) & "</td><td>" & _
                cel.Offset(0, 15) & "</td><td>" & _
                cel.Offset(0, 20) & "</td><td>" & _
                cel.Offset(0, 27) & "</td><td>" & _
                "</td></tr>"
        For Each cel In Range("A15:A" & Range("A14").End(xlDown).Row)
            If cel.Offset(0, 27) < Now + 15 And cel.Offset(0, 27) > Now Then
                cel.Offset(0, 34) = Now
                txt = txt & "<tr><td>" & _
                cel.Offset(0, 0) & "</td><td>" & _
                cel.Offset(0, 1) & "</td><td>" & _
                cel.Offset(0, 3) & "</td><td>" & _
                cel.Offset(0, 9) & "</td><td>" & _
                cel.Offset(0, 15) & "</td><td>" & _
                cel.Offset(0, 20) & "</td><td>" & _
                cel.Offset(0, 27) & "</td><td>" & _
                "</td></tr>"
            End If
        Next cel
        txt = txt & "</table>"
        .htmlbody = txt & .htmlbody
        .display ' à remplacer par .send si ok
    End With
    Set email = Nothing
    Set messagerie = Nothing
    Debug.Print txt
Next
End Sub
Sub auto_open()
alerter
End Sub

remarque : Il faut éviter les cellules fusionnées !

33excel-vba-code.xlsm (28.62 Ko)

Super, ca fonctionne !

Nous sommes vraiment ravie, petite question supplémentaire : doit-on obligatoirement avoir Excel ouvert pour que l'alerte fonctionne ?

Ou si je n'ai que Outlook d'ouvert cela fonctionnera ?

Merci

Il faut qu'excel soit ouvert

A contrario, outlook peut être fermé (mais il s'ouvrira automatiquement), faites le test à tout hasard

Si vous souhaitez ne pas avoir des alertes à tout bout de champ, on peut mettre un test sur la date et l'heure de dernier rappel

C'est une grosse problématique pour nous car Outlook étant ouvert toute la journée, ce n'est pas le cas pour ce fichier Excel.

Ce qui nous faudrait ce sont des alertes sans que le fichier Excel ne soit ouvert, est- ce possible ?

Si non, pouvez-vous nous indiquer si nous pouvons créer un code VBA avec des alertes via l'agenda Outlook sans ouverture d'Excel ?

Merci,

Nous avons résolu la problématique de l'ouverture du fichier Excel.

Par contre, lors de l'essai de vos codes VBA, un mail s'est ouvert avec toutes les informations jusque-là tout est ok.

Notre question est : est-ce que ce mail nous est envoyé ou est-ce uniquement une ouverture ?

Merci

C'est juste une ouverture

Si tu veux un envoi automatique, il faut modifier dans le code

.display

en

.send

tu peux aussi dans le code modifier les destinataires et le titre du message

Pour accéder au code, faire Alt+F11

Je peux aussi mettre tout ceci en paramètre dans un onglet spécifique

Mea culpa !!

Nous venons juste de voir qu'il fallait remplacer par .send c'est good.

Par contre, je reçois bien un mail avec les relances mais aussi un mail vide...

De plus, comment fait-on pour que ca prenne toutes les infos du tableau et si on rajoute une ligne dans le tableau est-ce que cela prendra bien en compte le code VBA ?

Merci

Il y a 1 mail par onglet

Si vide, cela veut dire "RAS"

change la ligne comme suit

        .Subject = "Alerte sur fin de contrat " & ws.Name

Ajout ligne = ok, mais pas de ligne vierge entre deux ...

Quelles infos manque-t-il ?

Ok c'est bon pour nous, on a testé et tout fonctionne !

Nous avons fait un test avec vous pour deux onglets mais nous en avons 18 HELP

Normalement les 18 seront traités et tu recevras 18 mails. Le nombre n'est pas limité !! wahou, grâce à ceci

For Each ws In Worksheets

qui signifie ... "pour chaque feuille du classeur"

Est-ce que tu préfères n'avoir qu'un seul mail ?

Rechercher des sujets similaires à "alerte outlook via fichier"