[Excel] envoi mail - enregistrement
Fermé
Apatik
Messages postés
5304
Date d'inscription
mercredi 28 janvier 2009
Statut
Contributeur
Dernière intervention
29 mai 2016
-
23 août 2012 à 16:38
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 24 août 2012 à 15:41
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 24 août 2012 à 15:41
A voir également:
- Notification excel par mail
- Yahoo mail - Accueil - Mail
- Liste déroulante excel - Guide
- Excel trier par ordre croissant chiffre - Guide
- Publipostage mail - Accueil - Word
- Si et excel - Guide
5 réponses
Apatik
Messages postés
5304
Date d'inscription
mercredi 28 janvier 2009
Statut
Contributeur
Dernière intervention
29 mai 2016
782
24 août 2012 à 10:06
24 août 2012 à 10:06
Hum... Up?
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
24 août 2012 à 10:20
24 août 2012 à 10:20
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...
Apatik
Messages postés
5304
Date d'inscription
mercredi 28 janvier 2009
Statut
Contributeur
Dernière intervention
29 mai 2016
782
24 août 2012 à 10:45
24 août 2012 à 10:45
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
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
24 août 2012 à 10:54
24 août 2012 à 10:54
Qu'elle version d'excel?
Eventuellement, quel logiciel de messagerie utilisez vous ? Tous le même?
Eventuellement, quel logiciel de messagerie utilisez vous ? Tous le même?
Apatik
Messages postés
5304
Date d'inscription
mercredi 28 janvier 2009
Statut
Contributeur
Dernière intervention
29 mai 2016
782
24 août 2012 à 10:59
24 août 2012 à 10:59
Oui, c'est pour une entreprise. Excel 2002, Outlook 2003
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
24 août 2012 à 11:14
24 août 2012 à 11:14
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.
Apatik
Messages postés
5304
Date d'inscription
mercredi 28 janvier 2009
Statut
Contributeur
Dernière intervention
29 mai 2016
782
24 août 2012 à 11:18
24 août 2012 à 11:18
Je viens de faire comme tu m'as dis, mais depuis chez moi, donc je n'ai pas exactement la même configuration qu'au boulot. Excel 2003. Et.. ça ne marche pas quand même: Erreur d'exécution 1004... Donc si c'est une question de version, on aura le même problème au boulot.
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
24 août 2012 à 11:36
24 août 2012 à 11:36
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?
Apatik
Messages postés
5304
Date d'inscription
mercredi 28 janvier 2009
Statut
Contributeur
Dernière intervention
29 mai 2016
782
24 août 2012 à 11:40
24 août 2012 à 11:40
Non, absolument pas. Je pensais bien que de toute façon on allait en arriver là. :)
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
24 août 2012 à 15:41
24 août 2012 à 15:41
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
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
24 août 2012 à 11:56
24 août 2012 à 11:56
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...
chossette9
Messages postés
4239
Date d'inscription
lundi 20 avril 2009
Statut
Contributeur
Dernière intervention
12 septembre 2014
1 308
24 août 2012 à 12:03
24 août 2012 à 12:03
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.
Apatik
Messages postés
5304
Date d'inscription
mercredi 28 janvier 2009
Statut
Contributeur
Dernière intervention
29 mai 2016
782
24 août 2012 à 12:12
24 août 2012 à 12:12
Et bien bonne nouvelle, tu as résolu ça du premier coup!
Merci à toi!
Merci à toi!
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
24 août 2012 à 12:23
24 août 2012 à 12:23
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.
Apatik
Messages postés
5304
Date d'inscription
mercredi 28 janvier 2009
Statut
Contributeur
Dernière intervention
29 mai 2016
782
24 août 2012 à 12:27
24 août 2012 à 12:27
Erf... Vu comme ça...
Du coup, j'en saurai d'avantage lundi, quand j'y serai de retour. Je te tiens au jus de toute façon!
Du coup, j'en saurai d'avantage lundi, quand j'y serai de retour. Je te tiens au jus de toute façon!
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
24 août 2012 à 12:43
24 août 2012 à 12:43
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.