Envoi mail en vba avec corps message
Résolu/Fermé
benzi
Messages postés
66
Date d'inscription
samedi 5 mars 2005
Statut
Membre
Dernière intervention
28 juillet 2015
-
1 mars 2011 à 21:55
Mike-31 Messages postés 18346 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 13 novembre 2024 - 12 avril 2011 à 21:14
Mike-31 Messages postés 18346 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 13 novembre 2024 - 12 avril 2011 à 21:14
A voir également:
- Envoi mail en vba avec corps message
- Message - Guide
- Yahoo mail - Accueil - Mail
- Recuperer message whatsapp supprimé - Guide
- Message d'absence thunderbird - Guide
- Publipostage mail - Accueil - Word
23 réponses
Mike-31
Messages postés
18346
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
13 novembre 2024
5 104
9 mars 2011 à 11:47
9 mars 2011 à 11:47
Salut,
Dans une dicussion récente, j'ai écrit ce code qui n'utilise aucune messagerie (Oulook, Incredimail etc...) et passe directement par le SMTP.
Ce code enregistre une feuille Excel nommée Devis en PDF, envoi cette feuille et supprime la feuille PDF générée.
J'ai inclu dans le code une msgbox qui affiche les erreurs éventuelles, ce code peut être modifié et adapté aux besoins (garder l'extension XLS, PDF, TXT etc..., conserver le fichier généré ou ne pas le créer, envoyer une feuille ou tout le classeur etc ...)
Sub main()
Dim messageHTML
On Error GoTo errorHandler
'on cré le fichier PDFdans le même dossier que le fichier source
Sheets("Devis").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
ActiveWorkbook.Path & "\" & [B11] & [C13] & ".PDF" '"Devis.pdf"
Set objMessage = CreateObject("CDO.Message")
objMessage.Subject = "Sujet du Message"
objMessage.From = "xxx.xxxxxx@free.fr" 'adresse mail de l'expéditeur n'est pas obligatoire
objMessage.To = "xxxx.xxxxxxx@free.fr" 'Email du destinataire doit-être correct ici
objMessage.TextBody = "Bonjour," & vbCrLf & "Veuillez trouver en piéce jointe votre facture" & vbCrLf & "en votre aimable réglement"
piece_jointe = ActiveWorkbook.Path & "\" & [B11] & [C13] & ".PDF" '& "Devis.pdf"
''piece_jointe = "C:\Documents and Settings\Les Lagouanère\Bureau\0917_001.pdf" 'chemin du fichier à envoyer en piéce-jointe
'piece_bis = "C:\Documents and Settings\Les Lagouanère\Bureau\Cligno.xls" ' Si on souhaite envoyer plusieurs pièces les déclarer
messageHTML = "Ceci est un message en HTML"
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.free.fr"
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
objMessage.Configuration.Fields.Update
objMessage.AddAttachment (piece_jointe) 'On ajoute la piéce jointe, il est possible d'envoyer plusieurs pièces
'objMessage.AddAttachment (piece_bis) 'dans ce cas on ajoute un objMessage.AddAttachement () par pièce
objMessage.Send
MsgBox "Le mail a été bien envoyé !" ', 64, "Information"
'après l'envoi la feuille PDF est supprimée
Kill ActiveWorkbook.Path & "\" & [B11] & [C13] & ".PDF" '"Devis.pdf"
'si erreur on sort de la procédure
Exit Sub
errorHandler:
'description de l'erreur survenue
MsgBox Err.Description
End Sub
Dans une dicussion récente, j'ai écrit ce code qui n'utilise aucune messagerie (Oulook, Incredimail etc...) et passe directement par le SMTP.
Ce code enregistre une feuille Excel nommée Devis en PDF, envoi cette feuille et supprime la feuille PDF générée.
J'ai inclu dans le code une msgbox qui affiche les erreurs éventuelles, ce code peut être modifié et adapté aux besoins (garder l'extension XLS, PDF, TXT etc..., conserver le fichier généré ou ne pas le créer, envoyer une feuille ou tout le classeur etc ...)
Sub main()
Dim messageHTML
On Error GoTo errorHandler
'on cré le fichier PDFdans le même dossier que le fichier source
Sheets("Devis").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
ActiveWorkbook.Path & "\" & [B11] & [C13] & ".PDF" '"Devis.pdf"
Set objMessage = CreateObject("CDO.Message")
objMessage.Subject = "Sujet du Message"
objMessage.From = "xxx.xxxxxx@free.fr" 'adresse mail de l'expéditeur n'est pas obligatoire
objMessage.To = "xxxx.xxxxxxx@free.fr" 'Email du destinataire doit-être correct ici
objMessage.TextBody = "Bonjour," & vbCrLf & "Veuillez trouver en piéce jointe votre facture" & vbCrLf & "en votre aimable réglement"
piece_jointe = ActiveWorkbook.Path & "\" & [B11] & [C13] & ".PDF" '& "Devis.pdf"
''piece_jointe = "C:\Documents and Settings\Les Lagouanère\Bureau\0917_001.pdf" 'chemin du fichier à envoyer en piéce-jointe
'piece_bis = "C:\Documents and Settings\Les Lagouanère\Bureau\Cligno.xls" ' Si on souhaite envoyer plusieurs pièces les déclarer
messageHTML = "Ceci est un message en HTML"
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.free.fr"
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
objMessage.Configuration.Fields.Update
objMessage.AddAttachment (piece_jointe) 'On ajoute la piéce jointe, il est possible d'envoyer plusieurs pièces
'objMessage.AddAttachment (piece_bis) 'dans ce cas on ajoute un objMessage.AddAttachement () par pièce
objMessage.Send
MsgBox "Le mail a été bien envoyé !" ', 64, "Information"
'après l'envoi la feuille PDF est supprimée
Kill ActiveWorkbook.Path & "\" & [B11] & [C13] & ".PDF" '"Devis.pdf"
'si erreur on sort de la procédure
Exit Sub
errorHandler:
'description de l'erreur survenue
MsgBox Err.Description
End Sub
Bonjour,
Voici un exemple différent pour envoyer un courriel avec pièce jointe
en VBA :
Enfin j'ai laissé toute le contenu de mon module, tu devrais y trouver
ton bonheur.
Cdt
Info
Voici un exemple différent pour envoyer un courriel avec pièce jointe
en VBA :
Option Explicit ' Procédure Envoi_Courriel ' Michel Blais ' Création : Samedi, le 22 Décembre 2007 ' Modifier : ' Version 2.0.0 ' Utilisation de OutlookExpress pour courrier sortant ' Sortie : Notification d'automatisme ' Déclaration de constantes Const cteLecture = 1 Const cteEcriture = 2 Const cteAjouter = 8 Const cteAdresseSource = "mon.nom@serveur.net" Const cteAdresseDefaut = "ton.nom@serveur.net" ' ' Paramètre [ Boite ] ' Boite(0) -> "destination@serveur.net" ' Adresse courriel de destination ' Boite(1) -> "Automatisme" ' Titre du message ' Boite(2) -> "Message" ' Texte du message ' Boite(3) -> "Fichier.txt" ' Fichier joint ' Boite(4) -> "True" ' Indice d'inclusion de la pièce jointe Sub Envoi_Courriel() Dim BigBox(0 To 5) As Variant BigBox(0) = "Mon.Adresse@monserveur.net" BigBox(1) = "Automatisme" BigBox(2) = "Contenu du message" BigBox(3) = "Rapport.txt" BigBox(4) = "False" BigBox(5) = ThisWorkbook.Path & "\" & BigBox(3) Call Master(BigBox) End Sub ' Sub Master(Boite) ' Déclaration de variables Dim objMail As Object Dim sDestination As String, sPieceJointe As String Dim msgTitre As String, msgTexte As String Dim Drapeau As Boolean Set objMail = CreateObject("CDO.Message") 'set objMail = Server.CreateObject("CDO.Message") Drapeau = False If (UBound(Boite) > 0) Then If (Boite(0) <> "") Then sDestination = Boite(0) Else 'Destinataire par défaut sDestination = "Mon.Adresse@monserveur.net" End If If (UBound(Boite) > 1) Then If (Boite(1) <> "") Then msgTitre = Boite(1) Else msgTitre = "Automatisme" End If If (UBound(Boite) > 2) Then If (Boite(2) <> "") Then msgTexte = Boite(2) Else msgTexte = "Automatisme" End If If (UBound(Boite) > 3) Then If (Boite(3) <> "") Then sPieceJointe = Boite(5) If (UBound(Boite) > 4) Then Drapeau = Boite(4) End If Else sPieceJointe = "" End If Else sPieceJointe = "" End If Else msgTexte = "Automatisme" sPieceJointe = "" End If Else msgTitre = "Automatisme" msgTexte = "Automatisme" sPieceJointe = "" End If Else MsgBox "Arguments incomplet !" Exit Sub End If With objMail ' Ligne à modifier selon l'adresse de l'envoyeur .From = cteAdresseSource .To = sDestination .Subject = msgTitre ' Ligne à modifier selon le texte voulu ! If (sPieceJointe <> "") Then If (Drapeau = True) Then .TextBody = msgTexte & vbCrLf & LirePieceJointe(sPieceJointe) & vbCrLf Else .TextBody = msgTexte & vbCrLf & "Pièce jointe incluse : " & vbCrLf End If Else .TextBody = msgTexte & vbCrLf & "Aucune Pièce jointe" & vbCrLf End If ' Ligne à modifier selon l'adresse du serveur SMTP .Configuration.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "172.27.51.8" .Configuration.Fields("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 .Configuration.Fields.Update If ((sPieceJointe <> "") And (Drapeau = False)) Then .AddAttachment (sPieceJointe) End If .Send End With Set objMail = Nothing End Sub ' Function LirePieceJointe(LeFichier) ' Fonction permettant d'inclure le ' contenu texte d'une pièce jointe Dim objFSO As Object, CeFichier As Object Set objFSO = CreateObject("Scripting.FileSystemObject") If (objFSO.FileExists(LeFichier)) Then Set CeFichier = objFSO.OpenTextFile(LeFichier, cteLecture) LirePieceJointe = CeFichier.ReadAll CeFichier.Close Set CeFichier = Nothing End If Set objFSO = Nothing End Function ' Function Parcourir() As String Dim Chemin As String, NomLong As String, LeFichier As String Dim Position As Integer Dim Drapeau As Boolean Dim Dlg As FileDialog Parcourir = "" Chemin = ThisWorkbook.Path Set Dlg = Application.FileDialog(msoFileDialogOpen) With Dlg .InitialFileName = ThisWorkbook.Path End With If (Dlg.Show <> False) Then Parcourir = Dlg.SelectedItems(1) End If End Function '
Enfin j'ai laissé toute le contenu de mon module, tu devrais y trouver
ton bonheur.
Cdt
Info
benzi
Messages postés
66
Date d'inscription
samedi 5 mars 2005
Statut
Membre
Dernière intervention
28 juillet 2015
1
3 mars 2011 à 21:56
3 mars 2011 à 21:56
Bonsoir Info,
Merci pour ton aide, ton module est très complet mais je n'ai pas saisi quoi utiliser.
Est-ce qu'il y a quelque chose de pluls simple?
Dan
Merci pour ton aide, ton module est très complet mais je n'ai pas saisi quoi utiliser.
Est-ce qu'il y a quelque chose de pluls simple?
Dan
Bidouilleu_R
Messages postés
1181
Date d'inscription
mardi 27 mai 2008
Statut
Membre
Dernière intervention
12 juillet 2012
293
2 mars 2011 à 09:54
2 mars 2011 à 09:54
Sub Send_Mail_Outlook() 'Il faut activer la référence "Microsoft Outlook Library" Avant de lancer cette macro, ' Dans l'éditeur VBA: Faire Menu / Tools / Reference / Cocher "Microsoft Outlook Library" Dim ObjOutlook As New Outlook.Application Dim ObjOutlookmail As MailItem Dim NomFichier As String Set ObjOutlook = New Outlook.Application Set oBjMail = ObjOutlook.CreateItem(olMailItem) Nom_Fichier = Application.GetOpenFilename("Fichier excel (*.xls;*.xlsx;*.xlsm), *.xls;*.xlsx;*.xlsm") If Nom_Fichier = "Faux" Then Exit Sub If VarType(Nom_Fichier) = vbBoolean Then Exit Sub With oBjMail .To = Range("a3").Value .To = "prénom.nom@laboitemail.fr" ' le destinataire .Subject = "Ici c'est l'objet" ' l'objet du mail .Body = "Ici le texte Blblblbla " 'le corps du mail ..son contenu .Attachments.Add "C:\Data\essai.txt" ' ou Nomfichier .Display ' Ici on peut mettre '.Send' pour l'envoyer sans vérification End With ObjOutlook.Quit End Sub
benzi
Messages postés
66
Date d'inscription
samedi 5 mars 2005
Statut
Membre
Dernière intervention
28 juillet 2015
1
3 mars 2011 à 21:49
3 mars 2011 à 21:49
Bonsoir Bidouilleu_r,
Merci pour ta réponse, j'ai essayé tout d'abord d'accéder à menu / Tool etc... mais je ne le trouve pas. J'utillise Excel 2003, il y a t'il une raison?
Dan
Merci pour ta réponse, j'ai essayé tout d'abord d'accéder à menu / Tool etc... mais je ne le trouve pas. J'utillise Excel 2003, il y a t'il une raison?
Dan
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
Modifié par lermite222 le 4/03/2011 à 02:27
Modifié par lermite222 le 4/03/2011 à 02:27
Bonjour,
Salut Bidouilleu.
En français c'est Outils >> références :-)
Salut Bidouilleu.
En français c'est Outils >> références :-)
Bidouilleu_R
Messages postés
1181
Date d'inscription
mardi 27 mai 2008
Statut
Membre
Dernière intervention
12 juillet 2012
293
7 mars 2011 à 08:13
7 mars 2011 à 08:13
Oups!
Tu as raison, mes excuses, j'ai parfois du mal à basculer d'une langue à l'autre et même
en me relisant... ça le fait pas heureusement ...... je peux compter sur toi ;-)
Bonne journée
Tu as raison, mes excuses, j'ai parfois du mal à basculer d'une langue à l'autre et même
en me relisant... ça le fait pas heureusement ...... je peux compter sur toi ;-)
Bonne journée
Bonjour Bidouilleu_R,
Je ne cherche certe pas à te contredire, mais voici les faits tels
que je les ai vécu à l'époque.
Je n'ai jamais activer cette référence pour utiliser cette macro,
pour ce qui est de la référence je ne puis t'en dire plus.
Toutefois, ce programme est tirer d'un script VBS, et ce dernier
n'utilise pas l'objet de [OutLook], mais bien celui de [OutLook Express].
Lorsque j'ai crée ce programme, l'endroit où je travaillais utilisait LotusNotes.
Donc, je ne pouvais utliser l'objet de [OutLook], mais bien celui de
[OutLook Express] qui est natif sous XP.
Lupin
Je ne cherche certe pas à te contredire, mais voici les faits tels
que je les ai vécu à l'époque.
Je n'ai jamais activer cette référence pour utiliser cette macro,
pour ce qui est de la référence je ne puis t'en dire plus.
Toutefois, ce programme est tirer d'un script VBS, et ce dernier
n'utilise pas l'objet de [OutLook], mais bien celui de [OutLook Express].
Lorsque j'ai crée ce programme, l'endroit où je travaillais utilisait LotusNotes.
Donc, je ne pouvais utliser l'objet de [OutLook], mais bien celui de
[OutLook Express] qui est natif sous XP.
Lupin
benzi
Messages postés
66
Date d'inscription
samedi 5 mars 2005
Statut
Membre
Dernière intervention
28 juillet 2015
1
7 mars 2011 à 20:49
7 mars 2011 à 20:49
Bonsoir Bidouilleu_R,
J'avais déjà coché "Microsoft Outlook Library" J'ai lancé la macro, il y a un débogage "424" au niveau de :
"Set ObjOutlook = New Outlook.Application"
Je n'arrive toujours pas à une solution.
Merci tout de même de ton aide.
Dan
J'avais déjà coché "Microsoft Outlook Library" J'ai lancé la macro, il y a un débogage "424" au niveau de :
"Set ObjOutlook = New Outlook.Application"
Je n'arrive toujours pas à une solution.
Merci tout de même de ton aide.
Dan
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
Modifié par lermite222 le 7/03/2011 à 21:59
Modifié par lermite222 le 7/03/2011 à 21:59
Re,
Essaye avec
A+
EDIT:
Mais une chose est certaine, c'est qu'il y à double emploi...
Toute la connaissance du monde ne peu tenir dans une seul tête (moi)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
Ça doit se passer sur le forum pour que tous puisse y participer ou en profiter.
Essaye avec
Dim ObjOutlook As New Application Set ObjOutlook = CreateObject("Outlook.application")Pas tester.
A+
EDIT:
Mais une chose est certaine, c'est qu'il y à double emploi...
Dim ObjOutlook As New Outlook.Applicationet ensuite..
Set ObjOutlook = New Outlook.ApplicationObjOutlook est déjà assigner.
Toute la connaissance du monde ne peu tenir dans une seul tête (moi)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
Ça doit se passer sur le forum pour que tous puisse y participer ou en profiter.
Bidouilleu_R
Messages postés
1181
Date d'inscription
mardi 27 mai 2008
Statut
Membre
Dernière intervention
12 juillet 2012
293
8 mars 2011 à 11:51
8 mars 2011 à 11:51
Bonjour,
j'ai du mal à répondre parce que ... chez moi ça marche.
Ensuite concernant le Dim et le Set ( double emploi)
je croyais qu'il fallait le déclarer ( dim) puis l'initialiser (set)
j'aurai du plutôt écrire :
Dim ObjOutlook As Object
puis faire
Set ObjOutlook = New Outlook.Application
mais dans l'état, ça ne grogne pas chez moi.
je comprends pas .... je vais réviser...
j'ai du mal à répondre parce que ... chez moi ça marche.
Ensuite concernant le Dim et le Set ( double emploi)
je croyais qu'il fallait le déclarer ( dim) puis l'initialiser (set)
j'aurai du plutôt écrire :
Dim ObjOutlook As Object
puis faire
Set ObjOutlook = New Outlook.Application
mais dans l'état, ça ne grogne pas chez moi.
je comprends pas .... je vais réviser...
Bidouilleu_R
Messages postés
1181
Date d'inscription
mardi 27 mai 2008
Statut
Membre
Dernière intervention
12 juillet 2012
293
8 mars 2011 à 12:56
8 mars 2011 à 12:56
je me suis inspiré de ça
https://www.excel-downloads.com/threads/excel-vba-et-outlook.82762/
https://www.excel-downloads.com/threads/excel-vba-et-outlook.82762/
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
Modifié par lermite222 le 8/03/2011 à 15:15
Modifié par lermite222 le 8/03/2011 à 15:15
Re Bidouilleu,
1°) mettre Option Explicite en haut des modules peu déjà éviter certaine erreurs si cette option est activée par défaut chez le correspondant.
2°) Oultlok ne fonctionne plus avec Vista, je suppose que tu est avec XP ?
J'ai essayé le code mis à part les variables non déclarées, je ne suis pas parvenu à faire fonctionner.
Il faut télécharger un Pack2 de Windows Mail ? mais ça prend 500 Mo.. j'ai pas fait.
A+
Pour que ça fonctionne il faut que Outlook fonctionne en "manuel"
Toute la connaissance du monde ne peu tenir dans une seul tête (moi)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
Ça doit se passer sur le forum pour que tous puisse y participer ou en profiter.
1°) mettre Option Explicite en haut des modules peu déjà éviter certaine erreurs si cette option est activée par défaut chez le correspondant.
2°) Oultlok ne fonctionne plus avec Vista, je suppose que tu est avec XP ?
J'ai essayé le code mis à part les variables non déclarées, je ne suis pas parvenu à faire fonctionner.
Il faut télécharger un Pack2 de Windows Mail ? mais ça prend 500 Mo.. j'ai pas fait.
A+
Pour que ça fonctionne il faut que Outlook fonctionne en "manuel"
Toute la connaissance du monde ne peu tenir dans une seul tête (moi)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
Ça doit se passer sur le forum pour que tous puisse y participer ou en profiter.
Bidouilleu_R
Messages postés
1181
Date d'inscription
mardi 27 mai 2008
Statut
Membre
Dernière intervention
12 juillet 2012
293
9 mars 2011 à 09:54
9 mars 2011 à 09:54
@lermite222,
bonjour,
tu es perspicace, je te félicite ... oui je suis sous XP Sp2 / linux et au bureau sous Win 7
c'est pour ça que j'ai pas testé... et que j'ai dit ... chez moi ça marche.
Concernant Option explicit je pense que je le déclare dans le module pricipal.
Bonne journée.
bonjour,
tu es perspicace, je te félicite ... oui je suis sous XP Sp2 / linux et au bureau sous Win 7
c'est pour ça que j'ai pas testé... et que j'ai dit ... chez moi ça marche.
Concernant Option explicit je pense que je le déclare dans le module pricipal.
Bonne journée.
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
9 mars 2011 à 10:48
9 mars 2011 à 10:48
Re,
La portée de Option Explicit est limitée au module où elle se trouve.
De ce fait elle doit être déclarée dans TOUT les modules d'où l'avantage de le préciser dans les options.
>> Outils (Tools):-) >> Options >> Editeur >> Cocher : Déclaration des variables obligatoire.
A+
La portée de Option Explicit est limitée au module où elle se trouve.
De ce fait elle doit être déclarée dans TOUT les modules d'où l'avantage de le préciser dans les options.
>> Outils (Tools):-) >> Options >> Editeur >> Cocher : Déclaration des variables obligatoire.
A+
Bidouilleu_R
Messages postés
1181
Date d'inscription
mardi 27 mai 2008
Statut
Membre
Dernière intervention
12 juillet 2012
293
9 mars 2011 à 10:51
9 mars 2011 à 10:51
C'est bien comme ça que je l'avais compris!
Bidouilleu_R
Messages postés
1181
Date d'inscription
mardi 27 mai 2008
Statut
Membre
Dernière intervention
12 juillet 2012
293
9 mars 2011 à 11:49
9 mars 2011 à 11:49
Je te le pique!
et.....
....
Merci
et.....
....
Merci
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
9 mars 2011 à 13:16
9 mars 2011 à 13:16
Bonjour Mike et merci
Ça fait un bon bout de temps que je cherche quelque chose comme ça.
Ne fonctionne pas sur Excel 2000 mais sur Excel 2007 oui.
Très intéressant, une tite question, faut-il avoir un compte chez Free ?
le texte de l'erreur : Client host rejeter : Access denied.
Si oui, comment tu a trouver les adresses http\ pour la configuration.
J'ai un compte Hotmail et Gmail !
A+
Ça fait un bon bout de temps que je cherche quelque chose comme ça.
Ne fonctionne pas sur Excel 2000 mais sur Excel 2007 oui.
Très intéressant, une tite question, faut-il avoir un compte chez Free ?
le texte de l'erreur : Client host rejeter : Access denied.
Si oui, comment tu a trouver les adresses http\ pour la configuration.
J'ai un compte Hotmail et Gmail !
A+
Mike-31
Messages postés
18346
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
13 novembre 2024
5 104
9 mars 2011 à 13:54
9 mars 2011 à 13:54
Re,
Non pas besoin d'être chez Free, il suffit de modifier cette ligne
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.free.fr"
et mettre le SMTP de ton fournisseur d'accès , si tu es chez orage par exemple
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.orange.fr"
Cordialement
Mike-31
Non pas besoin d'être chez Free, il suffit de modifier cette ligne
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.free.fr"
et mettre le SMTP de ton fournisseur d'accès , si tu es chez orage par exemple
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.orange.fr"
Cordialement
Mike-31
benzi
Messages postés
66
Date d'inscription
samedi 5 mars 2005
Statut
Membre
Dernière intervention
28 juillet 2015
1
9 mars 2011 à 18:29
9 mars 2011 à 18:29
Bonjour Messieurs,
Tout d'abord merci à tous pour votre implication, mais je ne suis pas sorti d'affaire.
En réponse à Bidouilleu_r et lermite j'ai fait les modif maiss il y a un débogage à ce niveau "Dim ObjOutlookmail As MailItem" Type défini par l'utilisateur non défini...
J'ai fait le code de Mike, je rencontre un autre souci, lorsque je clique pour envoyer cela met l'indice n'appartient pas à la sélection.
Le 1er code que j'ai donné, fontionne avec le corps de message sans la pièce jointe, le second ci-dessous envoi la pièce jointe sans le corps du message:
N'y a t'il pas un moyen de faire un mélange des deux?
Sub EnvoiMail()
Dim i As Workbook
Set i = ActiveWorkbook
Dim Destinataire As String
Dim Texte As String
i.SendMail Recipients:=Range("G87").Value, Subject:="P1 du 5974", ReturnReceipt:=True
Bcc = Range("G91")
'Crée le corps du message avec insertion de sauts de ligne
Texte = "Bonjour Olivier" & vbCrLf & vbCrLf _
& "Veuillez trouvez ci-joint le P1" & Range("C94").Value & vbCrLf & vbCrLf _
& "Cordialement " & vbCrLf _
& "Prénom Nom " & vbCrLf _
& "Grade" & vbCrLf & vbCrLf _
& "Les Floralies " & vbCrLf _
& Range("G94").Value & vbCrLf _
& Range("G95").Value & vbCrLf _
& Range("G96").Value & vbCrLf & vbCrLf _
& Range("G87").Value & vbCrLf _
Range("B9").Select
End Sub
Cordialement
Dan
Tout d'abord merci à tous pour votre implication, mais je ne suis pas sorti d'affaire.
En réponse à Bidouilleu_r et lermite j'ai fait les modif maiss il y a un débogage à ce niveau "Dim ObjOutlookmail As MailItem" Type défini par l'utilisateur non défini...
J'ai fait le code de Mike, je rencontre un autre souci, lorsque je clique pour envoyer cela met l'indice n'appartient pas à la sélection.
Le 1er code que j'ai donné, fontionne avec le corps de message sans la pièce jointe, le second ci-dessous envoi la pièce jointe sans le corps du message:
N'y a t'il pas un moyen de faire un mélange des deux?
Sub EnvoiMail()
Dim i As Workbook
Set i = ActiveWorkbook
Dim Destinataire As String
Dim Texte As String
i.SendMail Recipients:=Range("G87").Value, Subject:="P1 du 5974", ReturnReceipt:=True
Bcc = Range("G91")
'Crée le corps du message avec insertion de sauts de ligne
Texte = "Bonjour Olivier" & vbCrLf & vbCrLf _
& "Veuillez trouvez ci-joint le P1" & Range("C94").Value & vbCrLf & vbCrLf _
& "Cordialement " & vbCrLf _
& "Prénom Nom " & vbCrLf _
& "Grade" & vbCrLf & vbCrLf _
& "Les Floralies " & vbCrLf _
& Range("G94").Value & vbCrLf _
& Range("G95").Value & vbCrLf _
& Range("G96").Value & vbCrLf & vbCrLf _
& Range("G87").Value & vbCrLf _
Range("B9").Select
End Sub
Cordialement
Dan
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
9 mars 2011 à 20:03
9 mars 2011 à 20:03
N'en déplaise à Mike et Bidouilleu... vous ne mettez pas Option Explicit et il manque des déclarations de variables dans les 2 exemples.
En ce qui me concerne, pas de problème je comprend de suite, mais pour des débutants...
A+
En ce qui me concerne, pas de problème je comprend de suite, mais pour des débutants...
A+
Mike-31
Messages postés
18346
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
13 novembre 2024
5 104
Modifié par Mike-31 le 10/03/2011 à 23:10
Modifié par Mike-31 le 10/03/2011 à 23:10
Re,
L'option explicit n'est pas nécessaire, mais à chacun ces habitudes
la déclaration Explicit oblige plus de rigueur et la déclaration de toutes les variables ne laissant pas à Excel la possibilité d'interpréter ou d'adapter un code et conduit très souvent à des blocages.
Petite expérience
Utiliser le code comme je l'ai donné, il fonctionne sans problème
Ajouter en en tête de module Option Explicit, et activer le code il plante à cette ligne
objMessage
on ajoute une variable en début de procédure Dim objMessage et on active le code, il replante à cette ligne piece_jointe, ajoutons une autre variable
Dim piece_jointe
et le code fonctionne parfaitement
Suivant les habitudes de chacun, soit on utilise le code tel que je l'ai donné
soit on ajoute en en tête de module Option Explicit
et en début de procédure
Dim objMessage
Dim piece_jointe
Encore mieux préciser le type
Dim objMessage As Variant
Dim piece_jointe As Variant
A+
Mike-31
Une période d'échec est un moment rêvé pour semer les graines du savoir.
L'option explicit n'est pas nécessaire, mais à chacun ces habitudes
la déclaration Explicit oblige plus de rigueur et la déclaration de toutes les variables ne laissant pas à Excel la possibilité d'interpréter ou d'adapter un code et conduit très souvent à des blocages.
Petite expérience
Utiliser le code comme je l'ai donné, il fonctionne sans problème
Ajouter en en tête de module Option Explicit, et activer le code il plante à cette ligne
objMessage
on ajoute une variable en début de procédure Dim objMessage et on active le code, il replante à cette ligne piece_jointe, ajoutons une autre variable
Dim piece_jointe
et le code fonctionne parfaitement
Suivant les habitudes de chacun, soit on utilise le code tel que je l'ai donné
soit on ajoute en en tête de module Option Explicit
et en début de procédure
Dim objMessage
Dim piece_jointe
Encore mieux préciser le type
Dim objMessage As Variant
Dim piece_jointe As Variant
A+
Mike-31
Une période d'échec est un moment rêvé pour semer les graines du savoir.
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
Modifié par lermite222 le 11/03/2011 à 11:19
Modifié par lermite222 le 11/03/2011 à 11:19
Re Mike.
Désolé de te contredire mais je ne peu pas laisser passer ça, essaye un peu, (sans Option Explicit) et imagine l'exemple dans un contexte beaucoup plus compliquer.
Module 1
Sub Test()
Module 2
Aucune erreur, mais quand au fonctionnement, ont peu quelque fois chercher longtemps
Autre ?
Laisser Excel choisir ??
Sub main()
Set F1 = CreateObject("CDO.Message")
'...... quelque lignes de code.plus bas
F1=12
'.....
Jusqu'ici pas d'erreur.
Par contre là une erreur, évidemment ici, avec quelque ligne c'est pas difficile à voir mais qu'en sera-t-il dans une fonction plus complexe !.
F1.Subject = "Sujet du Message"
End sub
Conclusion :
.L'option explicit n'est pas nécessaire d'accord, mais elle est indispensable si ont veux éviter ce genre de perte de temps d'autant plus que les éventuelles erreurs détectées n'auront rien à voir avec la cause de l'erreur.
Cordialement.
Toute la connaissance du monde ne peu tenir dans une seul tête (moi)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
Ça doit se passer sur le forum pour que tous puisse y participer ou en profiter.
Désolé de te contredire mais je ne peu pas laisser passer ça, essaye un peu, (sans Option Explicit) et imagine l'exemple dans un contexte beaucoup plus compliquer.
Module 1
Sub Test()
Nb = Nb + 1 Call Reporter Debug.Print G End Sub
Module 2
Sub Reporter() If NB > 0 Then R = "J'ai Trouvé !!" : Exit Sub R = "Je passe à côté !!!!" End Sub
Aucune erreur, mais quand au fonctionnement, ont peu quelque fois chercher longtemps
Autre ?
Laisser Excel choisir ??
Sub main()
Set F1 = CreateObject("CDO.Message")
'...... quelque lignes de code.plus bas
F1=12
'.....
Jusqu'ici pas d'erreur.
Par contre là une erreur, évidemment ici, avec quelque ligne c'est pas difficile à voir mais qu'en sera-t-il dans une fonction plus complexe !.
F1.Subject = "Sujet du Message"
End sub
Conclusion :
.L'option explicit n'est pas nécessaire d'accord, mais elle est indispensable si ont veux éviter ce genre de perte de temps d'autant plus que les éventuelles erreurs détectées n'auront rien à voir avec la cause de l'erreur.
Cordialement.
Toute la connaissance du monde ne peu tenir dans une seul tête (moi)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
Ça doit se passer sur le forum pour que tous puisse y participer ou en profiter.
Bonjour,
Je crois avoir lu que ce code vous intéressait comme il va certainement intéresser de nombreux lecteurs du forum.
Pour ma part, je trouve mal venu vos remarques surtout que vous apportez des critiques sans solution. Puisque vous êtes si fort pourquoi ne pas mettre la main à la pâte et donner les variables qui d'après vous vont bien.
Pour ma part avec ou sans déclaration explicit ce code est une merveille et invite les lecteurs à voter pour la proposition de Mike-31 et le remercie pour ce code
Je crois avoir lu que ce code vous intéressait comme il va certainement intéresser de nombreux lecteurs du forum.
Pour ma part, je trouve mal venu vos remarques surtout que vous apportez des critiques sans solution. Puisque vous êtes si fort pourquoi ne pas mettre la main à la pâte et donner les variables qui d'après vous vont bien.
Pour ma part avec ou sans déclaration explicit ce code est une merveille et invite les lecteurs à voter pour la proposition de Mike-31 et le remercie pour ce code
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
Modifié par lermite222 le 11/03/2011 à 17:23
Modifié par lermite222 le 11/03/2011 à 17:23
Sam : pour avoir une réponse personnalisée tu ferais déjà bien de ne pas rester anonyme mais de t'inscrire.
et tu dis : merci de nous donner l'astuce
Mon poste précédant répont justement à ta question.
Mais il ne m'est jamais venu à l'idée de critiquer le code de Mike, juste son appréciation sur l'utilisation de Option Explicit.
Et oui, ce code m'intéresses, je ne suis d'ailleurs pas privé de le signaler plus haut,, c'est pas pour ça que je ne peu pas donner mon avis sur un détail.
Où allons nous sur ce forum ?
Cordialement.
et tu dis : merci de nous donner l'astuce
Mon poste précédant répont justement à ta question.
Mais il ne m'est jamais venu à l'idée de critiquer le code de Mike, juste son appréciation sur l'utilisation de Option Explicit.
Et oui, ce code m'intéresses, je ne suis d'ailleurs pas privé de le signaler plus haut,, c'est pas pour ça que je ne peu pas donner mon avis sur un détail.
Où allons nous sur ce forum ?
Cordialement.
Mike-31
Messages postés
18346
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
13 novembre 2024
5 104
Modifié par Mike-31 le 11/03/2011 à 19:02
Modifié par Mike-31 le 11/03/2011 à 19:02
Bonsoir tout le monde,
Quel déferlement de passion, Je voudrais simplement dire que sur le fond Lermite (que je salue) a entièrement raison et pour donner une image de l'option explicit, c'est comme si on circulait sur une voie avec des rails de chaque côté qui empêche toute embardée alors que l'absence de cette option rend un code plus souple mais avec des risques de dérapage sauf si on est un as du volant et encore ?
Par contre l'utilisation systématique de l'option Explicit à mon sens n'est pas nécessaire et cela dépend des habitudes de chacun, dans ce code je ne voyais pas la nécessité de son utilisation et j'ai supprimé les variables sauf une qui m'a échappée Dim messageHTML
Je remercie Sam pour son appréciation mais voudrais lui préciser qu'il faut avoir le courage de ses opinions et ne pas se cacher derrière l'anonymat.
Glaner ici et là des codes en restant dans l'ombre épuise notre énergie de bénévole
Lermite est un intervenant que j'apprécie et fais parti des intervenants méritants du forum qui donne sans compter.
La disparition de Outlook dans Office famille 2007 m'a posé des problèmes d'envoi automatique ce qui m'a permis de chercher d'autres solutions, il est possible que mon code nécessite tes modifications qui m'échappent, si nous sommes plusieurs à le tester nous pouvons le perfectionner, toute intervention est la bienvenue même en message privé
J'ai surtout adapté ce code pour cette discussion
https://forums.commentcamarche.net/forum/affich-20788599-envoie-1-feuille-specifique-excel-vers-messag
Quel déferlement de passion, Je voudrais simplement dire que sur le fond Lermite (que je salue) a entièrement raison et pour donner une image de l'option explicit, c'est comme si on circulait sur une voie avec des rails de chaque côté qui empêche toute embardée alors que l'absence de cette option rend un code plus souple mais avec des risques de dérapage sauf si on est un as du volant et encore ?
Par contre l'utilisation systématique de l'option Explicit à mon sens n'est pas nécessaire et cela dépend des habitudes de chacun, dans ce code je ne voyais pas la nécessité de son utilisation et j'ai supprimé les variables sauf une qui m'a échappée Dim messageHTML
Je remercie Sam pour son appréciation mais voudrais lui préciser qu'il faut avoir le courage de ses opinions et ne pas se cacher derrière l'anonymat.
Glaner ici et là des codes en restant dans l'ombre épuise notre énergie de bénévole
Lermite est un intervenant que j'apprécie et fais parti des intervenants méritants du forum qui donne sans compter.
La disparition de Outlook dans Office famille 2007 m'a posé des problèmes d'envoi automatique ce qui m'a permis de chercher d'autres solutions, il est possible que mon code nécessite tes modifications qui m'échappent, si nous sommes plusieurs à le tester nous pouvons le perfectionner, toute intervention est la bienvenue même en message privé
J'ai surtout adapté ce code pour cette discussion
https://forums.commentcamarche.net/forum/affich-20788599-envoie-1-feuille-specifique-excel-vers-messag
benzi
Messages postés
66
Date d'inscription
samedi 5 mars 2005
Statut
Membre
Dernière intervention
28 juillet 2015
1
Modifié par benzi le 11/03/2011 à 21:58
Modifié par benzi le 11/03/2011 à 21:58
Bonjour à tous,
J'ai été au début de la demande d'aide et je suis content que mon sujet porte attention et discution car c'est vrai c'est comme cela que l'on avance mais je reste toujours avec ce problème.
J'ai donné deux exemples qui fonctionnent en parti et lermite a dit qu'il manquait des variables pour les deux codes, je suis débutants dans ce domaine et surtout j'ai envi de comprendre et réussir grace aux connaisseurs. Je ne me suis pas endormi sur mes lauriers, j'ai essayé tous les codes que vous m'avez donné, il y a des débogages et là je bloque. Si les codes que j'ai soumis peuvent fonctionner, se serait bien un peut d'aide de votre part.
Merci pour votre implication.
Dan
J'ai été au début de la demande d'aide et je suis content que mon sujet porte attention et discution car c'est vrai c'est comme cela que l'on avance mais je reste toujours avec ce problème.
J'ai donné deux exemples qui fonctionnent en parti et lermite a dit qu'il manquait des variables pour les deux codes, je suis débutants dans ce domaine et surtout j'ai envi de comprendre et réussir grace aux connaisseurs. Je ne me suis pas endormi sur mes lauriers, j'ai essayé tous les codes que vous m'avez donné, il y a des débogages et là je bloque. Si les codes que j'ai soumis peuvent fonctionner, se serait bien un peut d'aide de votre part.
Merci pour votre implication.
Dan
benzi
Messages postés
66
Date d'inscription
samedi 5 mars 2005
Statut
Membre
Dernière intervention
28 juillet 2015
1
Modifié par benzi le 17/03/2011 à 18:45
Modifié par benzi le 17/03/2011 à 18:45
Mike,
J'ai essayé les codes proposés et comme j'ai expliqué plus en haut j'ai un souci pour les adapter ou il y a un débogage, c'est pour cela que j'ai relancé le forum.
N'y a t'il pas quelque chose à faire par rapport aux 2 codes que j'ai donné, pourquoi ils fonctionnent bien mais à moitié, un avec le corps de message sans la pièce jointe et l'autre fait l'inverse. C'est surement simple mais ça m'échappe.
Cordialement
Dan
J'ai essayé les codes proposés et comme j'ai expliqué plus en haut j'ai un souci pour les adapter ou il y a un débogage, c'est pour cela que j'ai relancé le forum.
N'y a t'il pas quelque chose à faire par rapport aux 2 codes que j'ai donné, pourquoi ils fonctionnent bien mais à moitié, un avec le corps de message sans la pièce jointe et l'autre fait l'inverse. C'est surement simple mais ça m'échappe.
Cordialement
Dan
Mike-31
Messages postés
18346
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
13 novembre 2024
5 104
20 mars 2011 à 11:40
20 mars 2011 à 11:40
Re,
Excuse, j'avais zappé ton post, colle ce code dans un module remplace SMTP.FREE.FR (en gras dans le code par ton smtp), en G72 ton adresse mail et teste le, l'avantage de ce code est qu'il n'utilise pas de messagerie
Option Explicit
Sub Mail()
Dim messageHTML As Variant
Dim objMessage As Variant
On Error GoTo errorHandler
Set objMessage = CreateObject("CDO.Message")
objMessage.Subject = "P1 du " & Range("H4").Value
objMessage.From = "xxx.xxxxxx@free.fr" 'adresse mail de l'expéditeur n'est pas obligatoire
objMessage.To = Range("G72").Value 'Email du destinataire doit-être correct ici
'Crée le corps du message avec insertion de sauts de ligne
objMessage.TextBody = "Bonjour Olivier" & vbCrLf & vbCrLf _
& "Veuillez trouvez ci-joint le P1" & Range("C74").Value & vbCrLf & vbCrLf _
& "Cordialement " & vbCrLf _
& "Prénom Nom " & vbCrLf _
& "Grade" & vbCrLf & vbCrLf _
& "Etablissement " & vbCrLf _
& Range("G74").Value & vbCrLf _
& Range("G75").Value & vbCrLf _
& Range("G76").Value & vbCrLf & vbCrLf _
& Range("G68").Value
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.free.fr" 'remplacer ici le smtp par celui de son fournisseur d'accés
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
objMessage.Configuration.Fields.Update
objMessage.Send
MsgBox "Le mail a été bien envoyé !" ', 64, "Information"
'si erreur on sort de la procédure
Exit Sub
errorHandler:
'description de l'erreur survenue
MsgBox Err.Description
End Sub
Excuse, j'avais zappé ton post, colle ce code dans un module remplace SMTP.FREE.FR (en gras dans le code par ton smtp), en G72 ton adresse mail et teste le, l'avantage de ce code est qu'il n'utilise pas de messagerie
Option Explicit
Sub Mail()
Dim messageHTML As Variant
Dim objMessage As Variant
On Error GoTo errorHandler
Set objMessage = CreateObject("CDO.Message")
objMessage.Subject = "P1 du " & Range("H4").Value
objMessage.From = "xxx.xxxxxx@free.fr" 'adresse mail de l'expéditeur n'est pas obligatoire
objMessage.To = Range("G72").Value 'Email du destinataire doit-être correct ici
'Crée le corps du message avec insertion de sauts de ligne
objMessage.TextBody = "Bonjour Olivier" & vbCrLf & vbCrLf _
& "Veuillez trouvez ci-joint le P1" & Range("C74").Value & vbCrLf & vbCrLf _
& "Cordialement " & vbCrLf _
& "Prénom Nom " & vbCrLf _
& "Grade" & vbCrLf & vbCrLf _
& "Etablissement " & vbCrLf _
& Range("G74").Value & vbCrLf _
& Range("G75").Value & vbCrLf _
& Range("G76").Value & vbCrLf & vbCrLf _
& Range("G68").Value
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.free.fr" 'remplacer ici le smtp par celui de son fournisseur d'accés
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
objMessage.Configuration.Fields.Update
objMessage.Send
MsgBox "Le mail a été bien envoyé !" ', 64, "Information"
'si erreur on sort de la procédure
Exit Sub
errorHandler:
'description de l'erreur survenue
MsgBox Err.Description
End Sub
benzi
Messages postés
66
Date d'inscription
samedi 5 mars 2005
Statut
Membre
Dernière intervention
28 juillet 2015
1
21 mars 2011 à 18:57
21 mars 2011 à 18:57
Bonjour Mike,
Merci pour ce code, il fonctionne très bien et mieux sans outlook. Le seul souci c'est qu'il n'y a pas la pièce jointe. C'est la mon problème, tout est bien là ou il faut, il y une bonne réception du mail sauf le fichier en pièce jointe.
J'ai essayé une combinaison avec ton code et celui que j'ai posté plus haut le 09 mars (avec lui le fichier est joint sans le message) mais cela ne fonctionne pas.
Je bloque toujours mais je ne désespère pas.
A+
Dan
Merci pour ce code, il fonctionne très bien et mieux sans outlook. Le seul souci c'est qu'il n'y a pas la pièce jointe. C'est la mon problème, tout est bien là ou il faut, il y une bonne réception du mail sauf le fichier en pièce jointe.
J'ai essayé une combinaison avec ton code et celui que j'ai posté plus haut le 09 mars (avec lui le fichier est joint sans le message) mais cela ne fonctionne pas.
Je bloque toujours mais je ne désespère pas.
A+
Dan
benzi
Messages postés
66
Date d'inscription
samedi 5 mars 2005
Statut
Membre
Dernière intervention
28 juillet 2015
1
22 mars 2011 à 19:22
22 mars 2011 à 19:22
Re,
Le fichier doit être envoyé à une personne mais pourquoi pas inclure la possibilité de multiples destinataires.
Les adresses mails sont prévues dans les cellules G66, G68, G70, G72.
Les infos dans les cellules C64 - C72 et E64 - E72 c'est le nom et prénom des destinataires avec en face leur mail mais j'ai fait ça pour mémoire, je n'allais pas les laisser que les mails.
Par contre tout ce qui se trouve dans "de la Mecs, Cordialement etc..." c'est ce qui va être le corps du mail, ce qui représente ça:
(objMessage.TextBody = "Bonjour Olivier" & vbCrLf & vbCrLf _
& "Veuillez trouvez ci-joint le P1" & Range("C74").Value & vbCrLf & vbCrLf _
& "Cordialement " & vbCrLf _
& "Prénom Nom " & vbCrLf _
& "Grade" & vbCrLf & vbCrLf _
& "Etablissement " & vbCrLf _
& Range("G74").Value & vbCrLf _
& Range("G75").Value & vbCrLf _
& Range("G76").Value & vbCrLf & vbCrLf _
& Range("G68").Value)
Dans les cellules G74 à G76 c'est l'adresse du site et le tél.
C'est vrai que ces infos seraient envoyées avec le fichier joint, je comptais après mettre la couleur de police en blanc afin que cela ne se voit pas. Mais on peut mettre ces infos dans le code en effet par plus de sécurité.
Je ne savais pas que l'on pouvait masquer les boutons mais je suis d'accord.
Le code que tu as fais plus est est très bien, tu as bien repris tout ce qui était dans les cellules, ce qui reste c'est de joindre le fichier.
Si tu as besoin, je peux t'envoyer le fichier avec la macro, c'est faisable jusquà 8MO.
A+
Dan
Le fichier doit être envoyé à une personne mais pourquoi pas inclure la possibilité de multiples destinataires.
Les adresses mails sont prévues dans les cellules G66, G68, G70, G72.
Les infos dans les cellules C64 - C72 et E64 - E72 c'est le nom et prénom des destinataires avec en face leur mail mais j'ai fait ça pour mémoire, je n'allais pas les laisser que les mails.
Par contre tout ce qui se trouve dans "de la Mecs, Cordialement etc..." c'est ce qui va être le corps du mail, ce qui représente ça:
(objMessage.TextBody = "Bonjour Olivier" & vbCrLf & vbCrLf _
& "Veuillez trouvez ci-joint le P1" & Range("C74").Value & vbCrLf & vbCrLf _
& "Cordialement " & vbCrLf _
& "Prénom Nom " & vbCrLf _
& "Grade" & vbCrLf & vbCrLf _
& "Etablissement " & vbCrLf _
& Range("G74").Value & vbCrLf _
& Range("G75").Value & vbCrLf _
& Range("G76").Value & vbCrLf & vbCrLf _
& Range("G68").Value)
Dans les cellules G74 à G76 c'est l'adresse du site et le tél.
C'est vrai que ces infos seraient envoyées avec le fichier joint, je comptais après mettre la couleur de police en blanc afin que cela ne se voit pas. Mais on peut mettre ces infos dans le code en effet par plus de sécurité.
Je ne savais pas que l'on pouvait masquer les boutons mais je suis d'accord.
Le code que tu as fais plus est est très bien, tu as bien repris tout ce qui était dans les cellules, ce qui reste c'est de joindre le fichier.
Si tu as besoin, je peux t'envoyer le fichier avec la macro, c'est faisable jusquà 8MO.
A+
Dan
benzi
Messages postés
66
Date d'inscription
samedi 5 mars 2005
Statut
Membre
Dernière intervention
28 juillet 2015
1
24 mars 2011 à 21:36
24 mars 2011 à 21:36
Bonsoir Mike,
Tout d'abord un très très grand merci pour ton aide car cela fonctionne à merveille. Cela faisait longtemps que je cherchais ce code.
J'ai suivi ton conseil au sujet des infos dans les cellules, pour ce faire j'ai fait quelques modifs, ces données sont effacées lors de l'envoi, j'ai ajouté des infos bulles pour que chaques collaborateurs qui utilisent ce planning, puissent mettre dans les cellules appropriées leurs propres adresses mail et coordonnées.
Je garde au chaud le code qui masque les boutons, c'est intéressant mais pour ce fichier ce n'est pas l'idéal car il y a des formules et d'autres macros notament avec l'image (je l'avais enlevé) et cela élimine tout.
Est-ce que c'est faisable de créer un commandbutton, y affecter l'envoi et de masquer que le bouton, laissant les images et formules?
Je te joint le fichier complet afin que tu te donnes une idée.
http://www.cijoint.fr/cjlink.php?file=cj201103/cijyoPe3V5.xls
A +
Dan
Tout d'abord un très très grand merci pour ton aide car cela fonctionne à merveille. Cela faisait longtemps que je cherchais ce code.
J'ai suivi ton conseil au sujet des infos dans les cellules, pour ce faire j'ai fait quelques modifs, ces données sont effacées lors de l'envoi, j'ai ajouté des infos bulles pour que chaques collaborateurs qui utilisent ce planning, puissent mettre dans les cellules appropriées leurs propres adresses mail et coordonnées.
Je garde au chaud le code qui masque les boutons, c'est intéressant mais pour ce fichier ce n'est pas l'idéal car il y a des formules et d'autres macros notament avec l'image (je l'avais enlevé) et cela élimine tout.
Est-ce que c'est faisable de créer un commandbutton, y affecter l'envoi et de masquer que le bouton, laissant les images et formules?
Je te joint le fichier complet afin que tu te donnes une idée.
http://www.cijoint.fr/cjlink.php?file=cj201103/cijyoPe3V5.xls
A +
Dan
benzi
Messages postés
66
Date d'inscription
samedi 5 mars 2005
Statut
Membre
Dernière intervention
28 juillet 2015
1
Modifié par benzi le 25/03/2011 à 21:37
Modifié par benzi le 25/03/2011 à 21:37
Bonsoir Mike,
Je souhaite envoyer la feuille complète avec les données en bas du tableau, j'ai fait des modifs qui effacent que les valeurs dans les cellules en jaunes.
Il y a un code associé à l'image qui en effet efface toutes les données, cela fonctionne sans problème.
Le Userform me sert à entrée des données dans les cellules bleues. Lorsque tu te positionnes sur une cellule, tu tapes "Entrée" , tu as une liste qui apparait, dans cette liste figure les "présences, repos, CP etc..." tu choisis ce qui te concerne et ensuite tu tapes de nouveau "entrée" et tu as la lettre correspondante à "Présent" càd "P" "Repos" : "RH" ainsi de suite.
La liste déroulante des jours servent à déterminer les jours, on le positionne sur 1 er jour du mois, là le 1 janvier commençait un samedi.
Idem sur la ligne "Théorique" pour les "P" et "R" le samedi et un jour de repos donc il y a "R"
Liste déroulante des mois, logique sert à choisir chaque mois et sur les lignes couleur saumon il y a une liste déroulante avec des chiffres en positifs et négatifs, eux servent à calculer heures sup ou retard en fin de mois. D'où besoin de garder les formules.
Je serai intéresser de pouvoir enlever que le bouton, cela me permettrer d'appliquer le code à un autre fichier que j'ai créé où la personne qui le reçoit n'a pas besoin de voir les boutons ou formes.
Je te renvoi le fichier sans mot de passe.
http://www.cijoint.fr/cjlink.php?file=cj201103/cijQfAOjOe.xls
A+
Dan
Je souhaite envoyer la feuille complète avec les données en bas du tableau, j'ai fait des modifs qui effacent que les valeurs dans les cellules en jaunes.
Il y a un code associé à l'image qui en effet efface toutes les données, cela fonctionne sans problème.
Le Userform me sert à entrée des données dans les cellules bleues. Lorsque tu te positionnes sur une cellule, tu tapes "Entrée" , tu as une liste qui apparait, dans cette liste figure les "présences, repos, CP etc..." tu choisis ce qui te concerne et ensuite tu tapes de nouveau "entrée" et tu as la lettre correspondante à "Présent" càd "P" "Repos" : "RH" ainsi de suite.
La liste déroulante des jours servent à déterminer les jours, on le positionne sur 1 er jour du mois, là le 1 janvier commençait un samedi.
Idem sur la ligne "Théorique" pour les "P" et "R" le samedi et un jour de repos donc il y a "R"
Liste déroulante des mois, logique sert à choisir chaque mois et sur les lignes couleur saumon il y a une liste déroulante avec des chiffres en positifs et négatifs, eux servent à calculer heures sup ou retard en fin de mois. D'où besoin de garder les formules.
Je serai intéresser de pouvoir enlever que le bouton, cela me permettrer d'appliquer le code à un autre fichier que j'ai créé où la personne qui le reçoit n'a pas besoin de voir les boutons ou formes.
Je te renvoi le fichier sans mot de passe.
http://www.cijoint.fr/cjlink.php?file=cj201103/cijQfAOjOe.xls
A+
Dan