Envoie email

Bonjour,

J'ai un tableau représentant un agenda avec des dates de réunions, d'actions, etc...., avec une MFC pour colorer les dates de réunions, et es actions passées.

J'ai fais une macro pour envoyer un mail au déclenchement manuel de la macro en alt+f11, avec l'ensemble des destinataires mis dans une cellules en tableau adresse mail, avec un corps de texte défini.

J'aimerai un coup de main pour améliorer cette macro avec insertion de la date de la prochaine réunion dans le corps du texte, un envoie automatique sans ouvrir le fichier en fonction de la date de la prochaine réunion et uniquement dans un délai de 7 jours.

Si pas de possibilité de le faire automatiquement sans l'ouvrir, qu'il se fasse automatiquement à la fermeture.

Merci du coup de main

Cédric

10agendaforum.xlsm (26.27 Ko)

Bonsoir,

1 ) Si pas de possibilité de le faire automatiquement sans l'ouvrir.

J'ai jamais testé ce type de commande. Je sais pas si cela est possible? Si un membre peut me contredire.

En PJ j'ai corrigé ta macro pour avoir la date de la MFC en vert.

9agendaforum.xlsm (28.22 Ko)

2) qu'il se fasse automatiquement à la fermeture.

Place ton code dans un macro du type.

Private Sub Workbook_BeforeClose(Cancel As Boolean)

    Ton code 

End Sub

Bonjour

Merci de ta réponse rapide.

J'ai juste jeté un coup d’œil rapide mais pas compris au niveau de la date je vai regarder plus précisément pour comprendre

Pour qu'il se fasse à la fermeture du fichier, je met la macro donné en début mais dois je supprimer ma première ligne de code

Private Sub Worksheet_Change(ByVal Target As Range)
    If Range("$A2") >= Date + 2 Then
    Call EnvoiMail
    End If
End Sub

et la remplacer par celle que tu m'as donnée ou bien l'ajouter devant

Merci de ton aide

Hello,

Private Sub Workbook_BeforeClose(Cancel As Boolean)
' cela va envoyer le mail avec la date de la prochaine réunion, à la fermeture du fichier.
     Call EnvoiMail

End Sub

Bonjour

Merci des infos.

En essayant le fichier, j'ai l'impression que la condition que le mail parte que si la réunion est planifiée dans les 7 jours ne fonctionne pas.

En plus serait il possible d'avoir un box message qui demande si on veux envoyer le mail si bien sur la condition de date de 7 jours est remplie. Comme ça si le fichier est ouvert une autre fois dans les 7 jours avant le réunion pas besoin de le renvoyé

Merci du coup de main

Salut,

Regarde en Pj une V2 adaptée.

9agendaforumv2.xlsm (29.11 Ko)

En fait je me base sur ta MFC en vert via ce code. Afin de trouver la ligne qui a la MFC activée en vert.

'test de la date qui est en vert avec la MFC
For i = 2 To LastRow

    If ws.Cells(i, 1).DisplayFormat.Interior.ColorIndex = 43 Then
        dat = i 'variable date qui renvoie le n° de ligne de la MFC en vert .
    End If

Next i

Suite à ta demande j'ai mis un test pour vérifier si la réunion est planifiée dans les 7 jours à partir de la date du jour en cours.

    today = Int(CDbl(Now()))
    date_reunion = Int(CDbl(ws.Cells(dat, 1).Value))

If date_reunion <= today + 7 Then

Plus la msgbox de confirmation.

If MsgBox("Etes-vous certain de vouloir envoyer le mail d'information  ?", vbYesNo, "Demande de confirmation") = vbYes Then

La je pense que tout devrait fonctionner comme tu le souhaites.

Bonne journée.

Bonjour,

Merci de ta réponse et de ta rapidité.

J'ai regardé ton code et merci j'ai a peu près compris comment il marche.

J'ai intégré le code dont tu me parlais pour l'envoie du mail à la fermeture du fichier, j'ai galéré un peu car au départ je le mettait entièrement dans un module alors qu'il fallait le mettre dans workbook, et la miracle ça marche.

Une petite question dans mon msgbox de la fin

MsgBox (" Penser à vérifier Outlook pour l'envoie du Mail ")

J'aimerai que la phrase soit en plus grand format et en rouge. Est ce possible de le modifié ou pas

Merci de ton aide

Je remet mon nouveau fichier en V3

4agendaforumv3.xlsm (30.57 Ko)

Re-bonjour,

Une proposition avec un userform en rouge en majuscule à la place de la msgbox en PJ.

22agendaforumv4.xlsm (30.76 Ko)

Merci de ta réponse userform je ne maitrise pas va falloir que je regarde ca attentivement

Par contre j'ai un message d'erreur que je te mets en pièce joint pour voir d'où ca vient

2017 12 07 1

Tu dois avoir une version 64 bits ?

Remplace les valeurs 32 par 64. Pour voir si ça evite le bug.

J'ai mis 64 à la place du 32

Private Declare Function GetWindowLongA Lib "User64" _
(ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLongA Lib "User64" _
(ByVal hWnd As Long, ByVal nIndex As Long, _
yVal dwNewLong As Long) As Long
Private Declare Function FindWindowA Lib "User64" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Mais j'ai toujours la même erreur

En fouillant un peu sur le net j'ai trouve qu'il fallait rajouter une equivalence PtrSafe

Je met le code modifoé

Private Declare PtrSafe Function GetWindowLongA Lib "User64" _
(ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare PtrSafe Function SetWindowLongA Lib "User64" _
(ByVal hWnd As Long, ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long
Private Declare PtrSafe Function FindWindowA Lib "User64" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Par contre j'ai un autre message d'erreur avant l'aafichange de la msgbox userform

Je mets la copie écran

2017 12 07 2 2017 12 07 3

Merci de ton aide

Problème résolu c'était juste que j'avais laissé user64 mais user est toujours en 32 et quand on est en 64 il faut rajouter PtrSaf

Salut,

Désolé j'étais pas sur mon pc cette aprem. Je viens de voir les messages.

Je ne savais pas qu'il etait nécessaire de rajouter une équivalence PtrSafe.

Cela fonctionne sans chez moi.

Si tout est ok pour toi pense

@ bientôt sur le forum

Bonjour

J'ai mis longtemps à répondre mais soucis de pc, et puis de santé.

Le code VBA se fie que sur la MFC verte pour vérifier la condition. Mais si il n'y a pas de date de réunion posé, il y a un message d'erreur et débogage dans excel.

Je me demande si on ne peut pas rajouter une fermeture à la condition, mais je ne trouve pas comment faire. J'ai du mal rechercher certainement.

'test de la date qui est en vert avec la MFC
For i = 2 To LastRow

    If ws.Cells(i, 1).DisplayFormat.Interior.ColorIndex = 43 Then
        dat = i 'variable date à utiliser dans le mail
'mettre un terme à la recherche si pas de MFC verte et fermer le fichier

    End If

Merci de votre aide

Rechercher des sujets similaires à "envoie email"