Envoi e-mail Outlook 2013 depuis un fichier Excel avec macros

Niconz Messages postés 313 Date d'inscription   Statut Membre Dernière intervention   -  
Niconz Messages postés 313 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Bonjour à tous, 

Je me permets de faire appel à votre aide pour une problématique entre Excel et Outlook.

Je suis en train de mettre en place une base de données, via un fichier Excel avec des macros, qui permettra à ma société de recenser et garder à jour tous les documents juridiques importants.

L'une des fonctionnalités que j'aimerais intégrer est l'envoi d'un e-mail lorsqu'un de ces documents (un contrat par exemple) arrive à échéance.
A titre d'exemple, 3 mois avant la date de fin de contrat, j'aimerais qu'un e-mail soit envoyé à la personne référente lui indiquant que son contrat arrive bientôt à échéance.

Voici la base de données qui a été créé :
https://mon-partage.fr/f/ypPCjHp6/

Mot de passe : OUTLOOK

Identifiant
Last name : A
First Name : Nic
Password : G19PK1


Concrètement, voici ce que j'aimerais :

Conditions à respecter pour cette fonctionnalité :
1. La personne étant sur le fichier appartient au département Purchasing (ce sera vérifié via l'UF identification)
2. La date rentrée dans le champ "1st notification" de l'UF ADDITION_DOC sera celle du jour ou aura été dépassé.
3. La date rentrée dans le champ "2nd notification" de l'UF ADDITION_DOC sera celle du jour ou aura été dépassé.


A l'ouverture du fichier, et une fois que les 2 conditions ci-dessus seront remplies (soit la 1 et la 2 , ou la 1 et la 3), une notification apparaîtra sur l'onglet "Home" indiquant que X nombre de documents arrivent à échéance, et qu'un rappel par e-mail doit être envoyé aux personnes concernées.

Le texte pour cette notification pourrait être le suivant :
Titre de l'UF : notification
Texte : "X documents will expire shortly. Please advise the concerned people by clicking on "OK"".
(X étant la somme de documents arrivant à échéance)

Quand la personne cliquera sur le bouton "OK", un e-mail s'ouvrira dans Outlook pour chaque document bientôt expiré.

Le texte de l'e-mail pouvant être le suivant :

¦
To : "E-mail document owner"
Cc : "E-mail purchasing document owner"
Objet : 1st Notification : "Nom du fournisseur - Description du contrat" will expire by "ending date"
Texte de l'e-mail :
      • E-mail generated automatically : please do not answer to this e-mail.***


Dear "document owner",

As a reminder, please be aware that the "type of legal document" with "supplier name" will expire by "ending date".
Please take the necessary actions, if required.

Should you need further information on this "type of legal document" with "supplier name", please consult the file ABC at the following adress :

Thanks.
¦

Les informations ci-dessus entre "" se retrouvent dans les différents onglets de mon fichier.

N.B pour le texte ci-dessus : pouvez appliquer la mise en forme tel que mise ci-dessus svp.

Voilà pour les explications, j'espère ne rien avoir oublié…

L'un d'entre vous serait-il comment faire ?

D'avance, un grand merci pour votre aide.
Excellente journée,

N:B : Pour info, j'utilise Microsoft Office 2013.
Dans la mesure du possible, merci de ne pas modifier les macros existantes, car cela fait des mois qu'on travaille dessus, et ca semble enfin marcher parfaitement.

A voir également:

63 réponses

Niconz Messages postés 313 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour Thev,

Comment allez-vous ?
Encore moi, et oui... :)

Dîtes-moi, je suis sur le point de déployer mon fichier, et il m'a été indiqué qu'il serait bien de faire un corps de e-mail différent par rappel envoyé. (auj, le même mail est envoyé pour les 2 rappels).

Bref, pourrais-je ré-abuser de votre savoir ?
Si oui, je vous envoie ma dernière version de fichier.

D'avance, merci beaucoup, et très bonne journée,
0
thev Messages postés 1985 Date d'inscription   Statut Membre Dernière intervention   713
 
Bonjour,

Envoyez-moi votre dernière version et je vous ferai une proposition.

Cordialement
0
Niconz Messages postés 313 Date d'inscription   Statut Membre Dernière intervention  
 
Re,

Merci beaucoup, c'est très sympa à vous.

Voici le fichier: https://www.cjoint.com/c/FLmlajrKXWf



Pour les mails, voici les textes et formats à respecter svp :
Si jamais j ai oublie qq chose, nhesitez pas.
Encore merci.


1er rappel, qui correspond au 1er reminder :

To : "E-mail document owner"
Cc : "E-mail purchasing document owner"
Objet : 1st Reminder : the "type of legal document" with "Nom du fournisseur" will expire by "ending date"

Texte de l'e-mail :
      • E-mail generated automatically : please do not answer to this e-mail.***


Dear "document owner",

As a 1st reminder, please note that the "type of legal document" will expire by "ending date".

Below a quick summary of the main contract information :
- Starting date : "Starting date"
- Ending date : "Ending date"
- Description : "Description"
- Termination notice : "Termination notice"
- Annual value : "Annual value" "Currency"
- Comments : "Comments"

Should you need to take any actions regarding this "type of legal document" with "Nom du fournisseur", please do so before its expiration date.

For further information on this document, please consult the Purchasing contractual Database at the following address : ABC

Your purchasing representative (in cc of this e-mail) is of course at your disposal if necessary.

Thanks.

Best regards,




2eme rappel, qui correspond au 2eme reminder:

To : "E-mail document owner"
Cc : "E-mail purchasing document owner"
Objet : 2nd and last reminder : the "type of legal document" with "Nom du fournisseur" will expire by "ending date"

Texte de l'e-mail :
      • E-mail generated automatically : please do not answer to this e-mail.***


Dear "document owner",

As a 2nd and last reminder, please note that the "type of legal document" will expire by "ending date".

Below a quick summary of the main contract information :
- Starting date : "Starting date"
- Ending date : "Ending date"
- Description : "Description"
- Termination notice : "Termination notice"
- Annual value : "Annual value" "Currency"
- Comments : "Comments"

Should you need to take any actions regarding this "type of legal document" with "Nom du fournisseur", please do so before its expiration date.


For further information on this document, please consult the Purchasing contractual Database at the following address : ABC

Your purchasing representative (in cc of this e-mail) is of course at your disposal if necessary.

Thanks.

Best regards,
0
thev Messages postés 1985 Date d'inscription   Statut Membre Dernière intervention   713
 
Bonsoir,

Pour pouvoir procéder aux modifications, pouvez-vous me communiquer via messagerie privée, le mot de passe de votre projet VBA ou m'envoyer une version sans mot de passe.

Cordialement
0
Niconz Messages postés 313 Date d'inscription   Statut Membre Dernière intervention   > thev Messages postés 1985 Date d'inscription   Statut Membre Dernière intervention  
 
Re,

Fait, désolé.

L'avez-vous bien recu ?
Merci.
0
thev Messages postés 1985 Date d'inscription   Statut Membre Dernière intervention   713 > Niconz Messages postés 313 Date d'inscription   Statut Membre Dernière intervention  
 
"Roger"
0
thev Messages postés 1985 Date d'inscription   Statut Membre Dernière intervention   713
 
Bonsoir,

ci-jointe nouvelle version

https://www.cjoint.com/c/FLmsFs2RIVj
0
Niconz Messages postés 313 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour Thev,

Encore un grand merci pour votre aide, ca a l'air de marcher à merveille, après quelques tests sommaires.

Je continue, et vous tiens au courant si je découvre quelques petites coquilles.

Mille mercis, très bonne journée,
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Niconz Messages postés 313 Date d'inscription   Statut Membre Dernière intervention  
 
Re,

Rien à re-dire sur la modif, ca marche parfaitement.

Serait-il possible que le mail recu soit flagué "important" dans Outlook, car vu le nombre de mails qu'on recoit tous les jours, j'aimerais si possible que ces mails automatiques sortent un peu du lot.

D'ailleurs, s'il est aussi possible de mettre une échéance à l'e-mail, ce serait encore mieux.
La date serait la ending date du document en question.

Merci d'avance pour votre retour,
Très cordialement,
0
thev Messages postés 1985 Date d'inscription   Statut Membre Dernière intervention   713
 
ci-jointe nouvelle avec importance haute et date d'expiration

https://www.cjoint.com/c/FLnmNHRwDLV
0
Niconz Messages postés 313 Date d'inscription   Statut Membre Dernière intervention  
 
Super, merci beaucoup, j'essaye tout ca !

Très bonne journée,
0
Niconz Messages postés 313 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour Thev,

Dernière petite question pratique (enfin je l'espère :)) : entre les 2 dernières versions sur lesquels vous avez fait les modif, pouvez-vous me confirmer que les différences sont bien sur les points là soulignés en gras.

J'ai constaté que entre l'avant dernière et la dernière, il y avait les différences suivantes dans le module MENVOI_MAIL :


Sub envoi_mail(ByVal destinataire_A As String, ByVal objet As String, ByVal html_texte As String, ByVal échéance As Date, ByRef erreur, Optional ByVal destinataire_CC As Variant)

Dim réponse As Integer

On Error Resume Next 'activation routine d'erreur
erreur = False

'Assignation de l'application Outlook et de l'objet email
Set olk = CreateObject("outlook.application")
Set Email = olk.CreateItem(olMailItem)

' ...... définition sujet,et corps du mail
corps_mail = html_texte

'....... remplissage sujet, objet, et adresse
Email.Subject = objet
Email.HTMLBody = corps_mail
Email.Importance = olImportanceHigh
Email.ExpiryTime = échéance

Email.To = destinataire_A
If Not IsMissing(destinataire_CC) Then Email.CC = destinataire_CC

'....... envoie le message
Email.Send
If Err.Number <> 0 Then
erreur = True
réponse = MsgBox("erreur : " & Err.DESCRIPTION & " destinataire = " & destinataire & " Presser OK pour continuer", vbOKCancel)
If réponse = vbCancel Then Exit Sub
Err.Clear
End If

'Désassignation objets
Set olk = Nothing
Set Email = Nothing


End Sub


La raison de ma question est que j'ai fait quelques modif de mise en page sur l'avant dernière version, et que j'aimerais si possible ne pas avoir à tout refaire.

Encore merci et très belle journée,

Très cordialement,
0
thev Messages postés 1985 Date d'inscription   Statut Membre Dernière intervention   713
 
Bonjour,

Je vous confirme qu'il s'agit bien des dernières modifications effectuées dans ce module .

Dans le code associé à l'Userform Identification
'envoi mail
Call envoi_mail(destinataire_A, objet, html_texte, ending_date, erreur, destinataire_CC)

 
0
Niconz Messages postés 313 Date d'inscription   Statut Membre Dernière intervention  
 
En effet, je l'avais pas vu celle-ci :)

Encore mille mercis pour toute l'aide apportée.
Très bonne continuation.
0
Niconz Messages postés 313 Date d'inscription   Statut Membre Dernière intervention  
 
Re Thev,

Désolé, je pensais vraiment pouvoir vous laisser tranquille, mais j'ai un petit bug sur votre dernière version...

Lors de la création d'un nouveau compte (via UF New identification), si un des champs n'est pas rempli, ou même s'ils sont tous rempli, j'ai le msg d'erreur ci-dessous...




Je ne comprends pas ce qu'il se passe, car je ne vois pas de différence au niveau du code, mise à part celle dont on a parlé ce matin, que j'ai reproduit à l'identique.

Par contre, j'ai activé les code ssuivants dans "This workbook", car j'ai besoin que l'UF identification soit la 1ere chose qu'on voit à l'ouverture du fichier...

Private Sub Workbook_Open()

Worksheets("HOME").Protect "SALOCIN"
ActiveWorkbook.Protect "SALOCIN"
IDENTIFICATION.Show

Voici le fichier utilisé.

http://www.cjoint.com/c/FLonadxBNVH

Merci (une fois de plus :))
0
thev Messages postés 1985 Date d'inscription   Statut Membre Dernière intervention   713
 
Bonsoir,

J'avais oublié que le module MENVOI_MAIL était utilisé ailleurs. Je l'ai donc remodifié afin de rendre le paramètre "échéance" optionnel avec ajustement dans le code associé à l'Userform Identification
'envoi mail
Call envoi_mail(destinataire_A, objet, html_texte, erreur, ending_date, destinataire_CC)

ci-jointe version corrigée
https://www.cjoint.com/c/FLovEDc75cD
0
thev Messages postés 1985 Date d'inscription   Statut Membre Dernière intervention   713
 
Ne pas tenir compte du lien précédent et prendre celui-ci
https://www.cjoint.com/c/FLowONiFZhD
0
Niconz Messages postés 313 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour Thev,

Merci beaucoup pour votre correction, surtout à une heure aussi tardive !

Ca marche nickel, sauf que les e-mails de fin de contrat sont envoyés avec une importance faible.
Pour l'e-mail de rappel de login, pas de soucis que ce soit en faible, mais pour les fins de contrats, je préfererais que ce soit en important.

Je comprends pas trop pourquoi c'est envoyé en faible, car votre code indique bien "Email.Importance = olImportanceHigh"


Autre question qui n'a rien à voir : est-il possible de faire la même chose avec Gmail ?

Merci beaucoup, très bonne journée,
0
thev Messages postés 1985 Date d'inscription   Statut Membre Dernière intervention   713
 
Je comprends pas trop pourquoi c'est envoyé en faible, car votre code indique bien "Email.Importance = olImportanceHigh"
C'est effectivement curieux alors que cela fonctionnait avant cette dernière modification

Autre question qui n'a rien à voir : est-il possible de faire la même chose avec Gmail ?
C'est effectivement possible sans passer par Outlook mais cela nécessite de définir en clair un compte Gmail (adresse + mot de passe)
 
0
Niconz Messages postés 313 Date d'inscription   Statut Membre Dernière intervention  
 
Re,

J'ai essayé plusieurs alternatives, enlever le high, le remplacer par low, le remettre, etc... à chaque fois il me l'envoie en low.

Avez-vous rajouté qq chose dans le code qui pourrait avoir l'effet inverse ?

ou est-il possible de mettre une priorité différente pour le type de mail envoyé (faible pour les login, et élevé pour les rappels de fin de contrats) ?

Si non, je supprimerai le critère d'importance.
Il suffira juste de supprimer la ligne Email.Importance = olImportanceHigh
dans le module Envoi mail, n'est-ce pas ?

Merci.
0
thev Messages postés 1985 Date d'inscription   Statut Membre Dernière intervention   713
 
Bon, j'ai trouvé d'où vient le problème. La constante olImportanceHigh n'est pas reconnue car la bibliothèque Microsoft Oulook Object n'est pas cochée dans l'éditeur VBA.
Deux solutions :
1- ajouter cette bibliothèque dans l'éditeur VBA. C'est ce que j'ai fait dans le lien ci-joint
https://www.cjoint.com/c/FLpwb353wYF

2- remplacer cette constante par sa valeur, c'est à dire 2.
0
Niconz Messages postés 313 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour Thev,

Parfait, merci beaucoup.
Après un 1er test, ca marche nickel.

Encore merci pour tout.
Très bonne continuation,
0
Niconz Messages postés 313 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour Thev,

Je me permets une nouvelle question, sans lien avec mon projet précédent.

Je pense déjà à un nouveau projet, et avant de me lancer dedans, j’aimerais savoir si mon idée tient la route :

Il s’agirait de mettre en place un formulaire en vue de renseigner un nouveau projet, et avant de commencer à travailler sur ce nouveau projet, la personne devra obtenir l’approbation de son manager.
Cette approbation se fera via un mail Outlook envoyé après le remplissage du formulaire avec l’option vote (réponse par Oui ou par Non)


Ainsi, j’aimerais savoir si les fonctionnalités suivantes sont réalisables :

- Paramétrer l’envoi d’un mail Outlook via VBA avec l’option vote ? très certainement !

- Enregistrement automatique de la réponse du manager dans le fichier : Suite à la réponse du manager (oui / non), Excel réceptionnera et enregistrera la réponse reçue, et ce bien que le fichier soit fermé…
Ex : je remplis le formulaire, l’envoi pour validation à mon manager. Le fichier est ensuite fermé.
Le lendemain, mon manager accepte ma demande en répondant Oui à mon mail.

Est-il possible de créer quelque chose qui fasse que lorsque la réponse du manager ait été envoyée, elle soit automatiquement enregistrée dans le fichier, et ce sans opération de qui que ce soit ?
Je doute fort car le fichier sera tout simplement fermé, mais sait-on jamais…

Merci beaucoup pour votre réponse,

Très bonne journée,
0
thev Messages postés 1985 Date d'inscription   Statut Membre Dernière intervention   713
 
Bonsoir,

Ce n'est peut être pas infaisable mais cela me parait assez compliqué. Je vous propose une procédure plus simple :
1- constituer un formulaire sur un fichier Excel On Line via la fonction Enquête
2- envoyer le lien dans le mail à votre manager
3- lui demander de cliquer d'abord sur le lien pour mettre à jour le formulaire avec sa réponse et ensuite de vous renvoyer un mail avec confirmation de sa réponse.
0
Niconz Messages postés 313 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour Thev,

Je me permets de revenir vers vous par rapport à mon projet sur lequel vous m’avez paramétré les envois de mail automatiques.
Après déploiement, je me rends compte que j’ai omis de faire figurer une information qui a son importante : « tacite Renewal ».

Ainsi, serait-il possible d’adapter votre code pour que dans l’email que reçoit mon collègue, y figure l’information « tacite renewal », en dessous de la ending date ?

J’ai essayé d’adapter votre code moi-même, mais j’avoue ne pas tout comprendre… :(

Si ok pour vous, pouvez-vous svp me dire où et comment (quel UF et quel sub) votre code at-il été complété, afin que je le reproduise dans mon fichier déployé.

D’avance, un grand merci et un excellent weekend,
0