[Excel] envoi mail - enregistrement
Apatik
Messages postés
6040
Statut
Contributeur
-
pijaku Messages postés 13513 Date d'inscription Statut Modérateur Dernière intervention -
pijaku Messages postés 13513 Date d'inscription Statut Modérateur Dernière intervention -
Salut!
Petite question qui ne vous posera sans doute pas de problème. Nous travaillons à plusieurs sur un fichier partagé, et il faudrait qu'une personne reçoive une notification par mail lors de la modification de ce fichier. J'ai bien trouvé des codes, mais je ne sais même pas comment les insérer, ni les faire se déclencher (à l'enregistrement du fichier par exemple).
Merci d'avance à ceux qui pourront m'aider =)
Petite question qui ne vous posera sans doute pas de problème. Nous travaillons à plusieurs sur un fichier partagé, et il faudrait qu'une personne reçoive une notification par mail lors de la modification de ce fichier. J'ai bien trouvé des codes, mais je ne sais même pas comment les insérer, ni les faire se déclencher (à l'enregistrement du fichier par exemple).
Merci d'avance à ceux qui pourront m'aider =)
A voir également:
- Notification excel par mail
- Liste déroulante excel - Guide
- Notification visite profil facebook - Guide
- Excel trier par ordre croissant chiffre - Guide
- Word et excel gratuit - Guide
- Son notification par application android - Guide
5 réponses
Bonjour,
tu dis :
J'ai bien trouvé des codes
Lesquels?
Donne nous au moins un de ces codes qui fonctionne, on l'adaptera à l'événement que tu souhaites...
tu dis :
J'ai bien trouvé des codes
Lesquels?
Donne nous au moins un de ces codes qui fonctionne, on l'adaptera à l'événement que tu souhaites...
Donc j'ai trouvé ça comme exemple, mais ce qui me pose problème, c'est justement de le tester, et de le lier à l'évènement. Et au passage, de supprimer la pièce jointe dont on se moque. Donc je ne peux pas dire qu'il fonctionne...
https://forums.commentcamarche.net/forum/affich-2253001-macro-excel-envoi-email-avec-piece-jointe#1
https://forums.commentcamarche.net/forum/affich-2253001-macro-excel-envoi-email-avec-piece-jointe#1
Bon on va déjà essayer avec ton code.
- Ouvre un nouveau classeur Excel,
- Enregistre le,
- depuis n'importe qu'elle feuille de ce classeur, tape ALT+F11,
- dans la fenêtre Visual Basic Editor qui vient de s'ouvrir :
==> Menu Insertion/Module
- Dans le module (partie de la fenêtre blanche qui occupe la majeure partie de l'écran) copie-colle ce code :
- adapte le en remplaçant : prenom.nom@maboite.fr par ton adresse, toujours entourée de guillemets!!
- ferme la fenêtre Visual Basic pour retourner sous ta feuille de calcul,
- Tape ALT+F8, choix : Envoi, clic sur Exécuter.
De 2 choses l'une, soit cela va fonctionner, soit pas.
Si ce code ne fonctionne pas, une fenêtre de débogage (clic sur fin) va apparaitre qui va te faire un blabla sur la méthode SendMail.
Cette méthode peux ne pas fonctionner sous ta version d'excel, il me semble qu'elle a débuté avec Xl2007...
Dans ce cas, reviens on verra avec Outlook qui semble de toutes manières la meilleure des solutions.
Le souci, dans le cas de macro envoie mails, c'est que je ne peux pas tester, n'ayant jamais les mêmes outils à ma disposition...
Donc teste et j'attends ton retour.
- Ouvre un nouveau classeur Excel,
- Enregistre le,
- depuis n'importe qu'elle feuille de ce classeur, tape ALT+F11,
- dans la fenêtre Visual Basic Editor qui vient de s'ouvrir :
==> Menu Insertion/Module
- Dans le module (partie de la fenêtre blanche qui occupe la majeure partie de l'écran) copie-colle ce code :
Sub Envoi() ThisWorkbook.SendMail Recipients:="prenom.nom@maboite.fr", Subject:="Test envoi classeur", ReturnReceipt:=True End Sub
- adapte le en remplaçant : prenom.nom@maboite.fr par ton adresse, toujours entourée de guillemets!!
- ferme la fenêtre Visual Basic pour retourner sous ta feuille de calcul,
- Tape ALT+F8, choix : Envoi, clic sur Exécuter.
De 2 choses l'une, soit cela va fonctionner, soit pas.
Si ce code ne fonctionne pas, une fenêtre de débogage (clic sur fin) va apparaitre qui va te faire un blabla sur la méthode SendMail.
Cette méthode peux ne pas fonctionner sous ta version d'excel, il me semble qu'elle a débuté avec Xl2007...
Dans ce cas, reviens on verra avec Outlook qui semble de toutes manières la meilleure des solutions.
Le souci, dans le cas de macro envoie mails, c'est que je ne peux pas tester, n'ayant jamais les mêmes outils à ma disposition...
Donc teste et j'attends ton retour.
De toutes façons, je t'ai dit n'importe quoi dans ma réponse précédente...
La méthode SendMail corresponds à la commande Fichier/envoyer vers.
Il se peut que cette commande ne fonctionne pas à cause d'une ligne manquante dans le fichier win.ini :
Si elle ne fonctionne pas, il est possible que le fichier win.ini soit incomplet. Vérifier que ces lignes y sont bien :
[Mail]MAPI=1CMC=1CMCDLLNAME=mapi.dllCMCDLLNAME32=mapi32.dllMAPIX=1MAPIXVER=1.0.0.1OLEMessaging=1
Sources M@rina.
Je me doute que tu ne va pas te taper les fichiers win.ini de tous les ordis du boulot pour vérifier cela...
Donc on va partir sur une procédure d'envoi de mail via Outlook.
Sur les discussions que j'ai lu sur ce sujet, il est fréquent qu'Outlook demande :
Un programme tente d'envoyer un message électronique en votre nom...
Un simple clic sur Oui (ou confirmer) suffit à l'envoi du mail. Ce n'est pas dérangeant pour vous?
La méthode SendMail corresponds à la commande Fichier/envoyer vers.
Il se peut que cette commande ne fonctionne pas à cause d'une ligne manquante dans le fichier win.ini :
Si elle ne fonctionne pas, il est possible que le fichier win.ini soit incomplet. Vérifier que ces lignes y sont bien :
[Mail]MAPI=1CMC=1CMCDLLNAME=mapi.dllCMCDLLNAME32=mapi32.dllMAPIX=1MAPIXVER=1.0.0.1OLEMessaging=1
Sources M@rina.
Je me doute que tu ne va pas te taper les fichiers win.ini de tous les ordis du boulot pour vérifier cela...
Donc on va partir sur une procédure d'envoi de mail via Outlook.
Sur les discussions que j'ai lu sur ce sujet, il est fréquent qu'Outlook demande :
Un programme tente d'envoyer un message électronique en votre nom...
Un simple clic sur Oui (ou confirmer) suffit à l'envoi du mail. Ce n'est pas dérangeant pour vous?
Essaye ce code à la place du dernier transmis :
mise en place ICI
mise en place ICI
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim MonOutlook As Object
Dim MonMessage As Object
Dim strNomClasseur As String, Utilisateur As String
Set MonOutlook = CreateObject("Outlook.Application")
Set MonMessage = MonOutlook.CreateItem(0)
strNomClasseur = ThisWorkbook.Name
Utilisateur = Environ("username")
MonMessage.To = "prenom.nom@mail.fr"
'MonMessage.CC = "prenom2.nom2@mail.fr"
'MonMessage.Attachments.Add strNomFichier
MonMessage.Subject = "Notification de modification du fichier : " & strNomClasseur
MonMessage.Body = "Le fichier excel : " & strNomClasseur & " a été modifié et enregistré le " _
& Now & " par l'utilisateur : " & Utilisateur & "."
MonMessage.Send
Set MonOutlook = Nothing
Set MonMessage = Nothing
End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Voici donc un code à tester. Suit bien toutes ces étapes :
1- ouvre un nouveau classeur excel,
2- enregistre le,
3- Tape ALT+F11 depuis n'importe qu'elle feuille
4- sous Visual Basic Editor : Menu Outils / Reference / Cocher "Microsoft Outlook Library"
5- Dans Visual Basic Editor, en haut à gauche de ton écran, tu as : VBA Project (NomDuClasseur.xls) et en dessous : Microsoft Excel Objects.
Dans Microsoft Excel Objects tu trouves : les noms de tes feuilles et ThisWorkBook. Double clic sur ThisWorkBook. Le module Thisworkbook est ainsi ouvert.
6- Copie-colle ce code dans le module :
7- Adapte le code en remplaçant : prenom.nom@mail.fr par la bonne adresse mail,
8- ferme Visual Basic Editor
9- Essaye d'enregistrer, normalement l'envoi se fait automatiquement
Tu dis...
1- ouvre un nouveau classeur excel,
2- enregistre le,
3- Tape ALT+F11 depuis n'importe qu'elle feuille
4- sous Visual Basic Editor : Menu Outils / Reference / Cocher "Microsoft Outlook Library"
5- Dans Visual Basic Editor, en haut à gauche de ton écran, tu as : VBA Project (NomDuClasseur.xls) et en dessous : Microsoft Excel Objects.
Dans Microsoft Excel Objects tu trouves : les noms de tes feuilles et ThisWorkBook. Double clic sur ThisWorkBook. Le module Thisworkbook est ainsi ouvert.
6- Copie-colle ce code dans le module :
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim ObjOutlook As New Outlook.Application
Dim oBjMail
Dim Nom_Fichier As String, Utilisateur As String
Set ObjOutlook = New Outlook.Application
Set oBjMail = ObjOutlook.CreateItem(olMailItem)
Nom_Fichier = ThisWorkbook.Name
Utilisateur = Environ("username")
With oBjMail
.To = "prenom.nom@mail.fr" ' le destinataire
.Subject = "Notification de modification du fichier : " & Nom_Fichier
.Body = "Le fichier excel : " & Nom_Fichier & " a été modifié et enregistré le " _
& Now & " par l'utilisateur : " & Utilisateur & "."
.Send
End With
ObjOutlook.Quit
Set oBjMail = Nothing
Set ObjOutlook = Nothing
End Sub
7- Adapte le code en remplaçant : prenom.nom@mail.fr par la bonne adresse mail,
8- ferme Visual Basic Editor
9- Essaye d'enregistrer, normalement l'envoi se fait automatiquement
Tu dis...
Bonjour,
désolé pour l'incruste, mais petite info à propos du code donné par pijaku ci-dessus :
Dans le bloc With objMail... End With, le .Send permet d'envoyer directement le mail.
Lors de la phase de test, pour vérifier que le mail contient bien les bonnes informations, il est préférable de remplacer le .Send par .Display.
De ce fait, le mail apparaîtra à l'écran, et il faudra cliquer sur 'Envoyer' pour que le mail parte.
Cordialement.
désolé pour l'incruste, mais petite info à propos du code donné par pijaku ci-dessus :
Dans le bloc With objMail... End With, le .Send permet d'envoyer directement le mail.
Lors de la phase de test, pour vérifier que le mail contient bien les bonnes informations, il est préférable de remplacer le .Send par .Display.
De ce fait, le mail apparaîtra à l'écran, et il faudra cliquer sur 'Envoyer' pour que le mail parte.
Cordialement.
Merci et bonjour à Chaussettes pour ces précisions.
Problème non résolu. Je paries que tu va revenir dès les premières utilisations au bureau!
Dans le cas ou la référence "Microsoft Outlook Library" n'est pas active sur un PC, la macro beuggue.
Il faut donc y inclure un test pour vérifier si elle est active ou non et si non alors l'activer...
Tu dis.
Problème non résolu. Je paries que tu va revenir dès les premières utilisations au bureau!
Dans le cas ou la référence "Microsoft Outlook Library" n'est pas active sur un PC, la macro beuggue.
Il faut donc y inclure un test pour vérifier si elle est active ou non et si non alors l'activer...
Tu dis.
j'en saurai d'avantage lundi
Pourquoi attendre lundi....
1- ouvres ton classeur (celui que tu viens d'enregistrer)
2- ALT+F11
3- Insertion/Module
4- Copie-colle ce code :
5- ferme VBE
6- depuis une feuille vierge : ALT+F8 choix "Test", Exécuter.
7- revenir ici me donner les résultats de ce test.
Pourquoi attendre lundi....
1- ouvres ton classeur (celui que tu viens d'enregistrer)
2- ALT+F11
3- Insertion/Module
4- Copie-colle ce code :
sub Test()
Cells(1, 1) = ActiveWorkbook.VBProject.References("Outlook").Name
Cells(1, 2) = ActiveWorkbook.VBProject.References("Outlook").Description
Cells(1, 3) = ActiveWorkbook.VBProject.References("Outlook").GUID
Cells(1, 4) = ActiveWorkbook.VBProject.References("Outlook").Major
Cells(1, 5) = ActiveWorkbook.VBProject.References("Outlook").Minor
Cells(1, 6) = ActiveWorkbook.VBProject.References.Item("Outlook").fullpath
end sub
5- ferme VBE
6- depuis une feuille vierge : ALT+F8 choix "Test", Exécuter.
7- revenir ici me donner les résultats de ce test.