Bonjour Joël, Merci pour ce tuto. Super bien expliqué! J'ai modifié la macro pour avoir une personne en cc et que la pièce jointe soit personnalisée à chaque destinataire. J'ai donc ajouté : un Dim ListeCopie() et un Dim ListeFichier() un Dim sListeCopie As String et Dim sListeFichier As String Ainsi qu' un ListeCopie() = Range("tblBasePubli[COURRIEL2]") un ListeFichier() = Range("tblBasePubli[CHEMIN CONCATÉNÉ]") Puis dans ma boucle un .cc = ListeCopie(i, 1) un .attachments = ListeFichier(i, 1) débarrasser
Merci beaucoup vous m'avez été d'une grande aide. J'ai du créer une macro de relance automatique par mail de synthèse je pensais ne pas y arriver mais grasse a vous j'ai réussis d'autant plus que j'ai pu en même temps comprendre la signification de chaque codage :) bonne continuation a vous.
Oups, il semblerait qu'il manque un morceau de mon précédent commentaire... Alors le voici au complet. Bonjour Joël, Merci pour ce tuto. Super bien expliqué! J'ai modifié la macro pour avoir une personne en cc et que la pièce jointe soit personnalisée à chaque destinataire. J'ai donc ajouté : un Dim ListeCopie() et un Dim ListeFichier() un Dim sListeCopie As String et Dim sListeFichier As String Ainsi qu' un ListeCopie() = Range("tblBasePubli[COURRIEL2]") un ListeFichier() = Range("tblBasePubli[CHEMIN CONCATÉNÉ]") Puis dans ma boucle un .cc = ListeCopie(i, 1) un .attachments = ListeFichier(i, 1) Lorsque j'exécute la macro, j'ai un message "erreur automation" qui apparait... Je ne sais plus comment m'en débarrasser. Auriez-vous une idée de l'erreur que j'aurais pu commettre? Merci
@@FormationExcelTousNiveaux Bonjour Joël, merci! J'ai maintenant une erreur 400 qui pop... Est-ce qu'il y a une configuration spéciale à faire avec Outlook?
Il semblerait que ce sujet d'erreur 400 soit débattu dans la page suivante, pour ma part, cela ne me dit rien fr.repairmsexcel.com/blog/fixer-excel-vba-erreur-400 Bonne soirée
Bonjour , Je souhaite tout d'abord vous remercier pour ce tuto ! Celui-ci m'a permis en ayant aucune base en vba d'adapter votre macro pour envoyer des mails automatiquement ( pour ma part sans fichier joint ) , avec beaucoup de patience et de recherche j'ai réussis à : - Envoyer depuis une boite mail de mon service attachée en second à Outlook ! - Ajouter en objet du mail ce qui est inscrit en case commentaire - Ajouter en corps du mail ce qui est inscrit en case commentaire Maintenant je souhaiterais mettre des conditions sur les envois de mail afin d'envoyer uniquement que si les cases commentaires sont remplies . Sans votre tuto , je serais toujours nulle part et pour ça je vous remercierais jamais assez ( ça se voit que je suis hyper content ? :p ) bref bonne journée à vous
Merci Karim pour ce retour enthousiaste. Si vous êtes parvenu à faire cela sans connaissance préalable, vous devriez vous en sortir pour le dernier point avec les structures de test... garbe.joel.free.fr/Macro_et_VBA_Excel.htm#Automatisation8 Voyez et revenez pour nous dire si vous y êtes parvenu Bonne journée à vous
Avec plaisir ! J'ai partiellement atteint mon objectif , en effet la macro se lance si j'ajoute une valeur dans commentaire, mais je souhaite que celle-ci envoie uniquement aux destinataires qui ont la case commentaire = valeurs , et n'envoie rien aux autres destinataires si la case est vide. Je regarderais votre lien ce soir à tête reposée , j'ai déjà assez bien avancé pour quelqu'un qui n'a jamais utilisé du vba . Merci pour votre réponse et votre soutient. Bonne journée à vous
Bonjour, J'ai d'abord fais un test avec des adresses mail de test (la mienne, celle de deux ou trois collègues) Tout fonctionne parfaitement, le mail s'envoie avec la bonne pièce jointe à la bonne personne. Quand j'applique la macro à mon tableau client, elle plante au niveau du .send argument ou appel de procédure incorrect. J'ai tourné le problème dans tous les sens, si je mets mon adresse mail à la place de la première adresse client, ca passe (en pas à pas) et ca plante sur la seconde adresse... Avez-vous une idée? En tout cas merci car c'est un tuto très facile à appliquer, modifier et comprendre !
Bonjour, Pour me faire une idée, il me faudrait le fichier... Erreur de code ou Pb dans le tableau. Il faudrait faire le pas à pas en observant tout ce qui se passe Bonne journée
@@FormationExcelTousNiveaux je ne comprend pas pour quelles raisons le code fonctionnerait pour certaines adresses et pas pour d'autre... J'ai fais le pas à pas, et je ne comprends pas ce qui diffère...
Un grand merci pour ce tuto très bien expliqué et qui sert encore quasi 8 ans après. Je viens de envoyer un don pour vous remercier car pour moi qui débute totalement en VBA, c'est vraiment une grande aide. J'ai toutefois un souci car ma macro bloque à .Send et je souhaiterai pouvoir envoyer une pièce jointe spécifique à chaque mail dont le lien est dans une colonne du tableau excel. Pensez-vous que cela est possible svp ? Merci encore.
Bonjour, je vous remercie infiniment pour ce don. Vous pouvez m'envoyer votre fichier, qui restera confidentiel, et je regarderai avant la fin de la semaine. Mail dispo en haut de mon site garbe.joel.free.fr/Macro_et_VBA_Excel.htm Peut être un élément de réponse dans le commentaire de Claire Point fou plus bas ? À plus tard
Bonsoir Joël, Merci pour ce tuto qui sert encore 7ans après sa publication. Si je peux abuser un peu... Je suis à la recherche d'un tuto qui expliquerait comment mettre un lien hypertexte dans le mail pour renvoyer directement au fichier Excel. Ce fichier est sur un serveur commun. Si vous avez des éléments cela serait très gentil. Merci Bertrand
Je regarde si je peux donner une procédure cce week-end. À priori, pas besoin d'un tuto spécifique pour cela, juste un petit topo en réponse... À suivre donc...
Voici un petit topo, à adapter en fonction de l'endroit où le lien doit être envoyé (ici, en dernière ligne du mail)... 1 - Définir l'emplacement du fichier ... Dim sChem As String sChem = ActiveWorkbook.Path & "\" & ActiveWorkbook.Name 2 - Créer une variable Dim strHTML As String 'Pour créer un Code HTML dans le corps du Mail' 3 - "Remplir la variable... strHTML = "" & ActiveWorkbook.Name & "" 4 - Insérer au-dessous de .body et.... .htmlbody = .body & strHTML L'idéal est de remplacer tous les .body par .htmlbody si on veut ajouter ce lien ailleurs et cela devrait le faire Bon courage
Bonsoir Mr Garbe. Désolé de revenir sur une vidéo qui a 3 ans mais elle correspond tout à fait à mon besoin professionnel. J'ai en effet besoin d'envoyer des mails à différents utilisateurs tout en ayant la possibilité de choisir un fichier en pièce jointe. J'ai une erreur d'exécution de la Macro dès la définition de la 3° variable : Dim oMSGApp As Outlook .Application. J'ai un message "Erreur e compilation. Type défini par l'utilisateur non défini". J'utilise pourtant votre fichier "source" et je ne vois pas ce qui bloque. Auriez vous une idée ? Merci d'avance.
Bonjour, Excel restant utilisé, il n'y a pas encore de péremption 😜 Pour le reste, je crois voir un espace avant le point de Application, à vérifier... Autre piste, vérifier si la référence à Outlook est cochée dans outils, références... Autre piste... Envoyez moi votre fichier que je jette un œil 😜
Bonsoir et merci pour votre proposition d'aide. Je crois que j'ai trouvé le problème : à l'ouverture d'Outlook, il y a un message "avertissement de connexion limitée" auquel il faut répondre et qui devait empêcher la Macro de s'exécuter. Maintenant cela fonctionne très bien. En tout cas merci encore pour votre disponibilité et quelle chance vous avez de savoir coder en VBA en direct... Cela force le respect. Je mesure le chemin qui me reste à parcourir....
Bonjour Très interessant votre tuto Moi je cherche le moyen d'envoyer un mail a chaque fois que je rajoute une ligne dans le tableau je ne sais pas si c'est possible . Merci
+Fabien GENIAUT Bonjour Fabien et merci pour votre commentaire. Tout est possible (ou presque)... Il convient de bien prévoir ce qui doit réellement déclencher l'envoi, ce qui doit être envoyé, et gérer cela avec le VBA. Le plus compliqué est bien souvent de bien savoir ce qu'on veut faire vraiment... Bon courage
Bonjour Joël Est il possible d'ajouter une signature avec photo (logo de l'entreprise) directement dans le body. Je fais des chr 10 pour revenir à la ligne afin de mettre la signatures dans le corps du mail mais pour la photo impossible... Merci
Bonjour Loris Perso, je ne connais pas trop, mais peut-être que la discussion suivante peut apporter la réponse... www.developpez.net/forums/d1197726/logiciels/microsoft-office/excel/macros-vba-excel/inserer-image-mail-vba-outlook/ Bon courage
@@FormationExcelTousNiveaux bonjour Joël J'ai réussi en mettant le body en HTMLbody. J'ai ajouté tout le mail en ligne de code avec des "" pour les sauts de ligne. J'ai intégré la signature comme si elle faisait partie du mail puis j'ai ajouté la photo en mettant "
Bonjour, est il vraiment possible de télécharger automatiquement un fichier autre que exel (stocké sur le PC) et de l'envoyer automatiquement? je n'y arrive pas. (j'avoue que je n'est pas un super niveau pour le moment...
Bonjour Mickael, dans le tuto, j'ai pris un fichier Excel, mais cela fonctionne avec tout type de fichier. En revanche, cela fonctionne avec Outlook, pas forcément avec d'autres systemes de messagerie Bon courage
Bonjour Joël Trop cool ce tuto. ça m'est vraiment très utile. Tout est bien expliqué et très bien détaillé. encore merci. Mais j'ai un souci je voudrai s'il te plait que vous faites un tuto sur la configuration de Ms Outlook. je n'y parviens pas. je suis bloqué au niveau des serveur entrant et sortant. jai déjà fait plusieurs essais sans succès. A l'aide sil te plait
J'ai trouvé cela facile pour une fois et je te remercie, très bonne pédagogie. J'ai deux questions 1- si je change de classeur excel mais que je nomme chaque fois mon tableau de la même façon, est ce que cela fonctionnera ? 2 - comment faire pour changer le message sans entrer à chaque fois dans la macro. Dernier point, tu ne parles pas de la ligne objet de Outlook (je vais revoir ta vidéo pour savoir si j'ai loupé quelque chose. Merci pour ton aide
Bonsoir et merci... Pour la question 1... Oui, pour le reste, Il pourrait être possible de paramétrer l'objet ou le texte du message dans une cellule Excel, et aller chercher cette cellule dans la macro. 😜👍
Bonjour et merci pour ce tutoriel utile. je voudrais savoir s'il est possible de mettre une image dans le corps du mail directement, et si oui comment ?
Bonjour Joël, Vidéo très intéressante et bien expliquée. Cela correspond presque à ce que je recherche. Depuis un mois, j'essaie de trouver une solution pour envoyer un mail unique et non un ensemble de mail. Dans ma base excel, j'ai des lignes qui s'incrémentent automatiquement. Ainsi, dans la colonne "i" j'ai mes mails et dans la colonne "j", j'ai créée un menu déroulant avec OUI/NON. MA DEMANDE: Sur base de votre programmation, je souhaiterais envoyer (avec mon fichier) au départ des données qui se situent dans le sheet(6) colonne i (mail) et j(OUI/NON) un mail unique après sélection du OUI (les autres lignes seraient évidemment sur NON). J'ai essayé de retravailler avec votre fichier qui fonctionne à merveille ! Mais pour l'instant, j'ai 3 lignes dans mon fichier excel et votre programmation génère 3 mails que je vois gràce à Display et non send. Pouvez-vous m'aider SVP, j'adore faire des recherches, créer, mais là, je désespère... Bonne fête, Marc
Bonjour Marvin et merci... Par rapport à votre question, je ne comprends pas où se situe le problème, si vous avez 3 lignes à "oui", il est normal d'avoir 3 mails ? Pourriez-vous être plus précis, ou m'envoyer votre fichier avec des explications complémentaires...
@@FormationExcelTousNiveaux Bonjour Joël, Merci de votre réponse. j'ai bien 3 lignes, mais 1 seul est sur OUI (mon Gmail) mais lorsque je lance votre programmation, j'obtiens bien 3 messages avec attach en visuel alors que 2 sont sur NON. Rappel: J'ai un tableau avec 10 colonnes dans le sheet (6) - Les mails se trouvent dans la colonne "i" - Le OUI/NON (menu déroulant) dans la colonne "j" Je souhaiterais que lorsque je sélectionne le OUI dans la colonne "j", il envoie mon bon de commande UNIQUEMENT au mail correspondant de la même ligne. Voici la programmation: Option Explicit _____________________________________________________________________ Sub EnvoiMail() Dim ListeDest() Dim ListeComment() Dim ListeRio() Dim ListeNom() Dim i As Long Dim oMsgApp As Object Dim oMsg As Object Dim sListeDest As String Dim sFichier As String Dim fname 'déclaration de la variable pour la voix (voir plus bas juste après Display) Dim objvoice As Object 'déclaration de la variable pour la voix (voir plus bas juste après Display) sFichier = Application.GetOpenFilename(, , "Veuillez sélectionner le bon de commande de matériel CGC à envoyer SVP !") If sFichier = "" Then MsgBox "Aucun fichier sélectionné, opération annulée" Exit Sub End If Set oMsgApp = CreateObject("Outlook.Application") ListeDest() = Range("Table3[Mail]") ListeComment() = Range("Table3[Event]") ListeRio() = Range("Table3[RIO]") ListeNom() = Range("Table3[Nom]") For i = LBound(ListeDest, 1) To UBound(ListeDest, 1) Set oMsg = oMsgApp.CreateItem(0) With oMsg .To = ListeDest(i, 1) .Attachments.ADD sFichier .Subject = "Votre bon de commande de matériel: Référence CGC/RIO -" & ListeRio(i, 1) & _ " - " & "Référence à reprendre sur toutes vos correspondances." .Body = "Bonjour" & " " & ListeNom(i, 1) & Chr(10) & Chr(13) & _ "Veuillez trouver ci-joint le bon de commande pour votre événement:" & Chr(10) & Chr(13) & _ ListeComment(i, 1) & Chr(10) & Chr(13) & "Bonne journée et vif succès avec votre événement !" & Chr(10) & Chr(13) & _ "Direction de la communication - CGC" & Chr(10) & Chr(13) & "Desk Event" .Display 'or Send Set objvoice = CreateObject("sapi.spvoice") 'texte d'accueil à l'ouverture du fichier (voix: voir plus haut dans les déclarations des variables) objvoice.Speak ("Your order has been sent successfully") 'texte d'accueil à l'ouverture du fichier (voix: voir plus haut dans les déclarations des variables) End With Set oMsg = Nothing Next oMsgApp.Quit Set oMsgApp = Nothing 'MsgBox "Votre commande a bien été envoyée." & Chr(10) & Chr(13) & "En cas de problème," & Chr(10) & Chr(13) & _ '"veuillez contacter votre administrateur." & _ 'Chr(10) & Chr(13) & "Marc Normand - GCG/Event - 02/642 65 06. " End Sub Merci et passez de bonnes fêtes.
J'ai oublié de vous dire: Lorsque le OUI est sélectionné dans le sheet (6, col j), c'est en appuyant sur le bouton(macro) dans le sheet(4) que la procédure commence.
Bonsoir Je comprends mieux Tout d'abord, sans test du "Oui", Excel ne peut pas deviner qu'il doit omettre des destinataire. Par ailleurs le chiffre x à la fin de LisreDest(i, x) doit correspondre au numéro de colonne où se trouve l'info. Si le mail se trouve en colonne I, on devrait avoir . to = ListeDest(i, 9) et après le for i= etccc on devrait avoir le test if lcase(listeDest(i, 10)) = "oui" then sans oublier le End if juste avant le next En espérant pas d'erreur dans ma réponse faite sans filet... Joyeux Noël
OK, errer de ma part après vérification... concernant le ListeDest(i, 9), il faut bien laisser le 1 car la listeDest ne se rapproche qu'à une seule colonne dans notre exercice. En revanche, il faut bien mettre un test, qui ressemblerait du coup à if ListeOui(i, 1) = "OUI" then en ayant pris soin de définir la variable tableau ListeOui comme vous l'avez fait pour les autres....
Bonjour Joël, J'ai réalisé avec votre appui, une base Excel VBA pour envoyer un mail avec pièce jointe. Cela marche super bien ! Maintenant, je souhaiterais mettre en GRAS/COULEUR/SOULIGNE/TAILLE etc. certaines parties du mail automatiquement. Lorsque je clique sur le bouton qui lance la macro, celui-ci envoie le mail automatiquement aux destinataires . JE NE SOUHAITE PAS INTERVENIR DANS LE MAIL MOI-MÊME pour mettre en valeur le mail. Avez-vous un tuto qui explique cela ? ou pouvez-vous m'aider. D'avance merci, Marc
Bonjour Marc, Vous allez devoir rechercher du côté d'experts plus pointus que moi, car je ne sais pas faire, et n'ai pas de temps à consacrer à cet aspect. Bon courage
Bonjour Joël, J'ai utilisé votre macro mais j'ai une erreur d'exécution 13, incompatibilité de type à la ligne : ListeDest = Range("tblbase[Mail]") J'ai pourtant scrupuleusement suivi votre tuto... Des suggestions ? Merci par avance. Cdlt. Jérôme .
Merci à vous Fabien, Sauf erreur de ma part, et si j'ai bien compris, il suffirait, à l'intérieur de la boucle For i = ... les instructions pour l'envoi... next d'ajouter un test sur la condition nécessaire pour envoyer le mail, ce qui donnerait : for i= ... if condition ? les instructions pour l'envoi end if next en espérant avoir répondu à voter attente,
+Fabien GENIAUT ne faut-il pas faire la différence entre ceux qui doivent recevoir le mail et les autres ? À quelle condition un utilisateur doit il recevoir le mail... D'où le test... Sinon, on peut les supprimer de la liste 😒
Bonjour Joël, Est-il possible qu'en lieu et place de la PJ .xls en attaché soit plutôt inséré dans le corps du mail la feuille .xls ? Merci d'avance de tes commentaires ABelle journée A bientôt Charles.
Bonjour Joël, Tout d'abord, merci pour cet excellent tuto!!! J'ai tout de même une question. Je souhaite envoyer un mail distinct à plusieurs destinataires pour chaque ligne de mon tableau (comme un publipostage word). Je m'initie au vba et j'aimerais écrire un code qui individualise la liste des destinataires par ligne du tableau. Pourriez-vous m'aider, svp? Je vous remercie et souhaite une excellente journée. Audrey
Bonsoir Audrey il me semble que la logique est exposée dans le tuto ? pour cela, il faut visionner la vidéo jusqu'à la fin, car c'est là que ça se passe... si une phrase spécifique doit être ajoutée à chaque destinataire, vous pouvez la prévoir dans une colonne supplémentaire et l'intégrer par code dans le corps du mail en concaténation, comme pour le reste de message. Bon courage
@@FormationExcelTousNiveaux Merci infiniment Joël!!!! Grâce à vos indications j'ai réussi à individualiser les mails et adresser chacun à plusieurs destinataires. Encore merci. Très bonne journée à vous Audrey
super je cherchais une solution comme ca pour mes organisations. mais j'aimerais pouvoir faire deux macro dans mon fichier un comme le votre que j'ai fais mais également un en sélectionnant les destinataires de la liste et pas a tous. c'est possible? bien a vousVincent
Bonjour Joël, Merci pour ce tuto ! Je ne sais pas si vous pourriez m'aider mais j'ai déjà un module que j'ai récupérer d'un collaborateur mais je ne connais rien du tout à la VBA Excel.. Il fonctionnait très bien mais j'aimerais ajouter la possibilité de mettre des pièces jointes de manière automatique pour mes 95 mails qui sont tous différents. Après avoir demandé sur des forums je n'ai aucun retour sur une solution possible... Est-il possible de vous l'envoyer pour avoir votre avis ? Merci d'avance et bonne journée :)
Bonjour Sarah Vous pouvez communiquer par mail, et je vous dirai si je peux faire quelque chose. Avec votre fichier, que je puisse me rendre compte, et les explications de votre attente.
@@FormationExcelTousNiveaux Bonjour, Avez vous une adresse pour vous envoyer le texte de ma macro? Toujours le même problème, Erreur de compilation, variable non définie 😞
@@oliviergodart1951bonjour Olivier. Tout dépend par rapport à quand, j'en ai plusieurs en fait, et je ne les lis pas tous les jours... Retraite oblige 🤪
Bonjour Merci pour ces explications cela fonctionne parfaitement ! Toutefois comment est il possible d'attacher un fichier différent pour chaque ligne ? merci d'avance ^^
Bonjour, pour cela, il serait judicieux de prévoir le chemin avec le nom de fichier dans la base de données, puis, dans la boucle VBA, prendre en compte cette information avec la même logique que pour l'adresse mail Bon courage
Bonjour, Svp, comment faire pour envoyer un email de rappel à 10j avant échéance à un destinataire, tout en mettant d autres destinataires en CC ou bien CCI Je vous remercie :)
Bonjour Hinan, pour la date, prevoir une procédure qui testera la date d'échéance if date = échéance - 10 avant l'instruction send Pour destinataires en copie, vous avez. cc et. cci pour copie cachée Bon courage
Bonjour Joël, Merci pour cet excellent travail généreux qui simplifie grandement les choses ;) Une question, est-il possible d'envoyer plusieurs documents en pièces jointes ? Bonne journée?
Bonjour Joël, Super le tuto !! J'ai la même erreur d'exécution 13 que @mefmosaic ! J'ai repris point par point le code corrigé que vous lui avez retourné dans votre dernière réponse. Il est identique au mien sauf qu'à la fin de cette ligne : ListeDest = Range("tblBase[Mail]") ; le nom de mon tableau étant "tblBase" et la colonne des adresses étant "Mail", il me manquait le "point Value" que je me suis empressé d'ajouter tout heureux d'avoir déniché l'erreur. Hélas non, j'ai toujours "Erreur d'exécution 13" qui apparait au milieu de mon écran pour "incompatibilité de type". Avez vous d'autres suggestions de corrections pour ce code ? Bonne fin de journée et merci pour le tuto Marc
@@celinececile5194 desole mais pour moi non, j'ai toujours le même message d'erreur. listeDest() = Range("listedest[Mail]") => il semble qu'il faut un (;) oui ok mais ou??
Voici le code avec lequel j'ai l'erreur d'éxécution 13, incompatibilité de type à la ligne : ListeDest = Range("tblbase[Courriel]") Où est l'erreur ? Code : Option Explicit Sub envoimail() 'Déclaration des variables Dim ListeDest() Dim i As Long Dim oMsgApp As Object Dim oMsg As Object Dim sListeDest As String Dim sFichier As String 'Fichier que l'on souhaite envoyer sFichier = Application.GetOpenFilename(, , "Sélectionnez le fichier à envoyer") If sFichier = "" Then MsgBox ("Aucun fichier sélectionné, opération annulée") Exit Sub End If Set oMsgApp = CreateObject("outlook.application") 'Gestion de la liste des destinataires (le tableau se remplit automatiquement) ListeDest = Range("tblbase[Courriel]") sListeDest = "" 'Mise sous forme d'une chaine de caractères sListeDest For i = LBound(ListeDest(), 1) To UBound(ListeDest(), 1) sListeDest = sListeDest & ";" & ListeDest(i, 1) Next 'Message par lui-même Set oMsg = oMsgApp.CreateItem(0) 'Contenu du message With oMsg .To = sListeDest .Attachments.Add sFichier .Subject = "Fichier de la semaine" .Body = "Veuillez trouver ci-joint le fichier de la semaine" & Chr(10) & Chr(13) & "Bonne journée" .Send End With 'Libération de l'espace mémoire de l'application Outlook qui s'est ouverte oMsgApp.Quit Set oMsgApp = Nothing Set oMsg = Nothing MsgBox "Mail envoyé !!" End Sub
Bonsoir Jérôme, Je pensais avoir répondu mais je ne vois pas la réponse... Essayez aves les parenthèses, sinon, envoyez moi votre fichier... Joël joel.garbe@sfr.fr
@@FormationExcelTousNiveaux Bonjour, Comment faire pour vous envoyer la macro ? A défaut je la copie colle ci-dessous : Sub envoimail() 'Déclaration des variables Dim ListeDest() Dim i As Long Dim oMsgApp As Object Dim oMsg As Object Dim sListeDest As String Dim sFichier As String 'Fichier que l'on souhaite envoyer sFichier = Application.GetOpenFilename(, , "Sélectionnez le fichier à envoyer") If sFichier = "" Then MsgBox ("Aucun fichier sélectionné, opération annulée") Exit Sub End If Set oMsgApp = CreateObject("outlook.application") 'Gestion de la liste des destinataires (le tableau se remplit automatiquement) ListeDest = Range("tblbase[Courriel]").Value sListeDest = "" 'Mise sous forme d'une chaine de caractères sListeDest For i = LBound(ListeDest(), 1) To UBound(ListeDest(), 1) sListeDest = sListeDest & ";" & ListeDest(i, 1) Next 'Message par lui-même Set oMsg = oMsgApp.CreateItem(0) 'Contenu du message With oMsg .To = sListeDest .Attachments.Add sFichier .Subject = "Fichier de la semaine" .Body = "Veuillez trouver ci-joint le fichier de la semaine" & Chr(10) & Chr(13) & "Bonne journée" .Send End With 'Libération de l'espace mémoire de l'application Outlook qui s'est ouverte oMsgApp.Quit Set oMsgApp = Nothing Set oMsg = Nothing MsgBox "Mail envoyé !!" End Sub
Bonjour Joël, J'ai une petite question PAR RAPPORT A VOTRE TUTO. 1) Lorsque je ne sélectionne pas de fichier(bon de commande) et que je clique sur OPEN, RIEN NE SE PASSE ! - Je souhaiterais que le message Box puisse indiquer que rien n'a été sélectionné et rien ne se passe. 2) Lorsque je ferme avec la X ou CANCEL (sans avoir sélectionné le fichier, il m'indique un message box "voulez-vous envoyer cet E-Mail ? si je clique YES, il continue la procédure et m'indique un DEBUG. Par contre, si je clique NO, la procédure s'arrête. - Je souhaiterais que lorque le fichier n'est pas sélectionné et que je ferme par la croix X ou cancel, la procédure s'arrête avec un MsgBox rien de sélectionné. Veuillez sélectionner un fichier. Pouvez-vous m'aider ? Marc Merci et belle journée
Bonjour M. Joel Tout d’abord merci beaucoup pour les tutos. Tres bien fait et m'aide beaucoup. Ma question c'est j'ai pas Outlook 13 ou autre dans mon ordi. et pour envoyer des email avec vba il le faut. es qu’il y a autre moyen??? Merci d'avance Paul Harvey tobiepaul@hotmail.com
Bonjour Joël,
Merci pour ce tuto. Super bien expliqué!
J'ai modifié la macro pour avoir une personne en cc et que la pièce jointe soit personnalisée à chaque destinataire. J'ai donc ajouté :
un Dim ListeCopie()
et un Dim ListeFichier()
un Dim sListeCopie As String
et Dim sListeFichier As String
Ainsi qu'
un ListeCopie() = Range("tblBasePubli[COURRIEL2]")
un ListeFichier() = Range("tblBasePubli[CHEMIN CONCATÉNÉ]")
Puis dans ma boucle
un .cc = ListeCopie(i, 1)
un .attachments = ListeFichier(i, 1)
débarrasser
Merci de votre tuto, c'es de l'or en barre ...
Et oui, et non un rôle en barre, n'est-il point 🤣😅
Super en tutos .... de l'humour en prime !... Ne changez rien ... merci encore
Merci beaucoup vous m'avez été d'une grande aide. J'ai du créer une macro de relance automatique par mail de synthèse je pensais ne pas y arriver mais grasse a vous j'ai réussis d'autant plus que j'ai pu en même temps comprendre la signification de chaque codage :) bonne continuation a vous.
Merci Thibaud pour ce témoignage sympathique !
Bonne continuation
Oups, il semblerait qu'il manque un morceau de mon précédent commentaire... Alors le voici au complet.
Bonjour Joël,
Merci pour ce tuto. Super bien expliqué!
J'ai modifié la macro pour avoir une personne en cc et que la pièce jointe soit personnalisée à chaque destinataire. J'ai donc ajouté :
un Dim ListeCopie()
et un Dim ListeFichier()
un Dim sListeCopie As String
et Dim sListeFichier As String
Ainsi qu'
un ListeCopie() = Range("tblBasePubli[COURRIEL2]")
un ListeFichier() = Range("tblBasePubli[CHEMIN CONCATÉNÉ]")
Puis dans ma boucle
un .cc = ListeCopie(i, 1)
un .attachments = ListeFichier(i, 1)
Lorsque j'exécute la macro, j'ai un message "erreur automation" qui apparait... Je ne sais plus comment m'en débarrasser. Auriez-vous une idée de l'erreur que j'aurais pu commettre?
Merci
Bonsoir Claire... Pas devant mon ordinateur mais ne manquerait-il pas un
.Add derrière le.Attachments?
Merci pour votre intérêt
@@FormationExcelTousNiveaux Bonjour Joël, merci! J'ai maintenant une erreur 400 qui pop... Est-ce qu'il y a une configuration spéciale à faire avec Outlook?
Il semblerait que ce sujet d'erreur 400 soit débattu dans la page suivante, pour ma part, cela ne me dit rien
fr.repairmsexcel.com/blog/fixer-excel-vba-erreur-400
Bonne soirée
Bonjour ,
Je souhaite tout d'abord vous remercier pour ce tuto ! Celui-ci m'a permis en ayant aucune base en vba
d'adapter votre macro pour envoyer des mails automatiquement ( pour ma part sans fichier joint ) ,
avec beaucoup de patience et de recherche j'ai réussis à :
- Envoyer depuis une boite mail de mon service attachée en second à Outlook !
- Ajouter en objet du mail ce qui est inscrit en case commentaire
- Ajouter en corps du mail ce qui est inscrit en case commentaire
Maintenant je souhaiterais mettre des conditions sur les envois de mail afin d'envoyer uniquement que si les cases commentaires sont remplies .
Sans votre tuto , je serais toujours nulle part et pour ça je vous remercierais jamais assez ( ça se voit que je suis hyper content ? :p )
bref bonne journée à vous
Merci Karim pour ce retour enthousiaste. Si vous êtes parvenu à faire cela sans connaissance préalable, vous devriez vous en sortir pour le dernier point avec les structures de test...
garbe.joel.free.fr/Macro_et_VBA_Excel.htm#Automatisation8
Voyez et revenez pour nous dire si vous y êtes parvenu
Bonne journée à vous
Avec plaisir !
J'ai partiellement atteint mon objectif , en effet la macro se lance si j'ajoute une valeur dans commentaire,
mais je souhaite que celle-ci envoie uniquement aux destinataires qui ont la case commentaire = valeurs ,
et n'envoie rien aux autres destinataires si la case est vide.
Je regarderais votre lien ce soir à tête reposée , j'ai déjà assez bien avancé pour quelqu'un qui n'a jamais utilisé du vba .
Merci pour votre réponse et votre soutient.
Bonne journée à vous
Bonjour,
J'ai d'abord fais un test avec des adresses mail de test (la mienne, celle de deux ou trois collègues)
Tout fonctionne parfaitement, le mail s'envoie avec la bonne pièce jointe à la bonne personne.
Quand j'applique la macro à mon tableau client, elle plante au niveau du .send argument ou appel de procédure incorrect.
J'ai tourné le problème dans tous les sens, si je mets mon adresse mail à la place de la première adresse client, ca passe (en pas à pas) et ca plante sur la seconde adresse... Avez-vous une idée?
En tout cas merci car c'est un tuto très facile à appliquer, modifier et comprendre !
Bonjour,
Pour me faire une idée, il me faudrait le fichier... Erreur de code ou Pb dans le tableau. Il faudrait faire le pas à pas en observant tout ce qui se passe
Bonne journée
@@FormationExcelTousNiveaux je ne comprend pas pour quelles raisons le code fonctionnerait pour certaines adresses et pas pour d'autre... J'ai fais le pas à pas, et je ne comprends pas ce qui diffère...
Re 😜 comme indiqué, je ne peux pas le savoir sans le fichier. Merci à vous.
Bonjour Joël,
Magnifique. Merci
Cool ! Merci Michel...
Un grand merci pour ce tuto très bien expliqué et qui sert encore quasi 8 ans après.
Je viens de envoyer un don pour vous remercier car pour moi qui débute totalement en VBA, c'est vraiment une grande aide. J'ai toutefois un souci car ma macro bloque à .Send et je souhaiterai pouvoir envoyer une pièce jointe spécifique à chaque mail dont le lien est dans une colonne du tableau excel. Pensez-vous que cela est possible svp ? Merci encore.
Bonjour, je vous remercie infiniment pour ce don. Vous pouvez m'envoyer votre fichier, qui restera confidentiel, et je regarderai avant la fin de la semaine. Mail dispo en haut de mon site
garbe.joel.free.fr/Macro_et_VBA_Excel.htm
Peut être un élément de réponse dans le commentaire de Claire Point fou plus bas ?
À plus tard
Bonsoir Joël,
Merci pour ce tuto qui sert encore 7ans après sa publication.
Si je peux abuser un peu...
Je suis à la recherche d'un tuto qui expliquerait comment mettre un lien hypertexte dans le mail pour renvoyer directement au fichier Excel. Ce fichier est sur un serveur commun.
Si vous avez des éléments cela serait très gentil. Merci
Bertrand
Je regarde si je peux donner une procédure cce week-end. À priori, pas besoin d'un tuto spécifique pour cela, juste un petit topo en réponse... À suivre donc...
Voici un petit topo, à adapter en fonction de l'endroit où le lien doit être envoyé (ici, en dernière ligne du mail)...
1 - Définir l'emplacement du fichier ...
Dim sChem As String
sChem = ActiveWorkbook.Path & "\" & ActiveWorkbook.Name
2 - Créer une variable
Dim strHTML As String 'Pour créer un Code HTML dans le corps du Mail'
3 - "Remplir la variable...
strHTML = "" & ActiveWorkbook.Name & ""
4 - Insérer au-dessous de .body et....
.htmlbody = .body & strHTML
L'idéal est de remplacer tous les .body par .htmlbody si on veut ajouter ce lien ailleurs
et cela devrait le faire
Bon courage
Merci beaucoup pour la rapidité de la réponse. 🙏🏻
Bonsoir Mr Garbe. Désolé de revenir sur une vidéo qui a 3 ans mais elle correspond tout à fait à mon besoin professionnel. J'ai en effet besoin d'envoyer des mails à différents utilisateurs tout en ayant la possibilité de choisir un fichier en pièce jointe. J'ai une erreur d'exécution de la Macro dès la définition de la 3° variable : Dim oMSGApp As Outlook .Application. J'ai un message "Erreur e compilation. Type défini par l'utilisateur non défini". J'utilise pourtant votre fichier "source" et je ne vois pas ce qui bloque. Auriez vous une idée ? Merci d'avance.
Bonjour,
Excel restant utilisé, il n'y a pas encore de péremption 😜
Pour le reste, je crois voir un espace avant le point de Application, à vérifier... Autre piste, vérifier si la référence à Outlook est cochée dans outils, références... Autre piste... Envoyez moi votre fichier que je jette un œil 😜
Bonsoir et merci pour votre proposition d'aide. Je crois que j'ai trouvé le problème : à l'ouverture d'Outlook, il y a un message "avertissement de connexion limitée" auquel il faut répondre et qui devait empêcher la Macro de s'exécuter. Maintenant cela fonctionne très bien. En tout cas merci encore pour votre disponibilité et quelle chance vous avez de savoir coder en VBA en direct... Cela force le respect. Je mesure le chemin qui me reste à parcourir....
Bonjour
Très interessant votre tuto
Moi je cherche le moyen d'envoyer un mail a chaque fois que je rajoute une ligne dans le tableau
je ne sais pas si c'est possible .
Merci
+Fabien GENIAUT Bonjour Fabien et merci pour votre commentaire. Tout est possible (ou presque)... Il convient de bien prévoir ce qui doit réellement déclencher l'envoi, ce qui doit être envoyé, et gérer cela avec le VBA. Le plus compliqué est bien souvent de bien savoir ce qu'on veut faire vraiment...
Bon courage
Bonjour Joël
Est il possible d'ajouter une signature avec photo (logo de l'entreprise) directement dans le body. Je fais des chr 10 pour revenir à la ligne afin de mettre la signatures dans le corps du mail mais pour la photo impossible...
Merci
Bonjour Loris
Perso, je ne connais pas trop, mais peut-être que la discussion suivante peut apporter la réponse...
www.developpez.net/forums/d1197726/logiciels/microsoft-office/excel/macros-vba-excel/inserer-image-mail-vba-outlook/
Bon courage
@@FormationExcelTousNiveaux bonjour Joël
J'ai réussi en mettant le body en HTMLbody. J'ai ajouté tout le mail en ligne de code avec des "" pour les sauts de ligne. J'ai intégré la signature comme si elle faisait partie du mail puis j'ai ajouté la photo en mettant "
Bonjour, est il vraiment possible de télécharger automatiquement un fichier autre que exel (stocké sur le PC) et de l'envoyer automatiquement? je n'y arrive pas. (j'avoue que je n'est pas un super niveau pour le moment...
Bonjour Mickael, dans le tuto, j'ai pris un fichier Excel, mais cela fonctionne avec tout type de fichier. En revanche, cela fonctionne avec Outlook, pas forcément avec d'autres systemes de messagerie
Bon courage
Bonjour Joël
Trop cool ce tuto. ça m'est vraiment très utile. Tout est bien expliqué et très bien détaillé. encore merci.
Mais j'ai un souci je voudrai s'il te plait que vous faites un tuto sur la configuration de Ms Outlook. je n'y parviens pas. je suis bloqué au niveau des serveur entrant et sortant. jai déjà fait plusieurs essais sans succès. A l'aide sil te plait
Bonjour, est il possible de faire la même chose mais pour Gmail ?
Bonjour, je ne sais pas si c'est possible, mais perso, je ne sais pas faire
🤔😕
J'ai trouvé cela facile pour une fois et je te remercie, très bonne pédagogie. J'ai deux questions 1- si je change de classeur excel mais que je nomme chaque fois mon tableau de la même façon, est ce que cela fonctionnera ? 2 - comment faire pour changer le message sans entrer à chaque fois dans la macro. Dernier point, tu ne parles pas de la ligne objet de Outlook (je vais revoir ta vidéo pour savoir si j'ai loupé quelque chose. Merci pour ton aide
Bonsoir et merci... Pour la question 1... Oui, pour le reste, Il pourrait être possible de paramétrer l'objet ou le texte du message dans une cellule Excel, et aller chercher cette cellule dans la macro. 😜👍
Bonjour et merci pour ce tutoriel utile.
je voudrais savoir s'il est possible de mettre une image dans le corps du mail directement, et si oui comment ?
Merci à vous ! Possible? probablement ☺️
Comment ? Hors de mes connaissances ?
Bonne journée
Bonjour Joël,
Vidéo très intéressante et bien expliquée.
Cela correspond presque à ce que je recherche. Depuis un mois, j'essaie de trouver une solution pour envoyer un mail unique et non un ensemble de mail.
Dans ma base excel, j'ai des lignes qui s'incrémentent automatiquement. Ainsi, dans la colonne "i" j'ai mes mails et dans la colonne "j", j'ai créée un menu déroulant avec OUI/NON.
MA DEMANDE:
Sur base de votre programmation, je souhaiterais envoyer (avec mon fichier) au départ des données qui se situent dans le sheet(6) colonne i (mail) et j(OUI/NON) un mail unique après sélection du OUI (les autres lignes seraient évidemment sur NON).
J'ai essayé de retravailler avec votre fichier qui fonctionne à merveille ! Mais pour l'instant, j'ai 3 lignes dans mon fichier excel et votre programmation génère 3 mails que je vois gràce à Display et non send.
Pouvez-vous m'aider SVP, j'adore faire des recherches, créer, mais là, je désespère...
Bonne fête,
Marc
Bonjour Marvin et merci...
Par rapport à votre question, je ne comprends pas où se situe le problème, si vous avez 3 lignes à "oui", il est normal d'avoir 3 mails ? Pourriez-vous être plus précis, ou m'envoyer votre fichier avec des explications complémentaires...
@@FormationExcelTousNiveaux Bonjour Joël,
Merci de votre réponse. j'ai bien 3 lignes, mais 1 seul est sur OUI (mon Gmail) mais lorsque je lance votre programmation, j'obtiens bien 3 messages avec attach en visuel alors que 2 sont sur NON.
Rappel:
J'ai un tableau avec 10 colonnes dans le sheet (6)
- Les mails se trouvent dans la colonne "i"
- Le OUI/NON (menu déroulant) dans la colonne "j"
Je souhaiterais que lorsque je sélectionne le OUI dans la colonne "j", il envoie mon bon de commande UNIQUEMENT au mail correspondant de la même ligne.
Voici la programmation:
Option Explicit
_____________________________________________________________________
Sub EnvoiMail()
Dim ListeDest()
Dim ListeComment()
Dim ListeRio()
Dim ListeNom()
Dim i As Long
Dim oMsgApp As Object
Dim oMsg As Object
Dim sListeDest As String
Dim sFichier As String
Dim fname 'déclaration de la variable pour la voix (voir plus bas juste après Display)
Dim objvoice As Object 'déclaration de la variable pour la voix (voir plus bas juste après Display)
sFichier = Application.GetOpenFilename(, , "Veuillez sélectionner le bon de commande de matériel CGC à envoyer SVP !")
If sFichier = "" Then
MsgBox "Aucun fichier sélectionné, opération annulée"
Exit Sub
End If
Set oMsgApp = CreateObject("Outlook.Application")
ListeDest() = Range("Table3[Mail]")
ListeComment() = Range("Table3[Event]")
ListeRio() = Range("Table3[RIO]")
ListeNom() = Range("Table3[Nom]")
For i = LBound(ListeDest, 1) To UBound(ListeDest, 1)
Set oMsg = oMsgApp.CreateItem(0)
With oMsg
.To = ListeDest(i, 1)
.Attachments.ADD sFichier
.Subject = "Votre bon de commande de matériel: Référence CGC/RIO -" & ListeRio(i, 1) & _
" - " & "Référence à reprendre sur toutes vos correspondances."
.Body = "Bonjour" & " " & ListeNom(i, 1) & Chr(10) & Chr(13) & _
"Veuillez trouver ci-joint le bon de commande pour votre événement:" & Chr(10) & Chr(13) & _
ListeComment(i, 1) & Chr(10) & Chr(13) & "Bonne journée et vif succès avec votre événement !" & Chr(10) & Chr(13) & _
"Direction de la communication - CGC" & Chr(10) & Chr(13) & "Desk Event"
.Display 'or Send
Set objvoice = CreateObject("sapi.spvoice") 'texte d'accueil à l'ouverture du fichier (voix: voir plus haut dans les déclarations des variables)
objvoice.Speak ("Your order has been sent successfully") 'texte d'accueil à l'ouverture du fichier (voix: voir plus haut dans les déclarations des variables)
End With
Set oMsg = Nothing
Next
oMsgApp.Quit
Set oMsgApp = Nothing
'MsgBox "Votre commande a bien été envoyée." & Chr(10) & Chr(13) & "En cas de problème," & Chr(10) & Chr(13) & _
'"veuillez contacter votre administrateur." & _
'Chr(10) & Chr(13) & "Marc Normand - GCG/Event - 02/642 65 06. "
End Sub
Merci et passez de bonnes fêtes.
J'ai oublié de vous dire: Lorsque le OUI est sélectionné dans le sheet (6, col j), c'est en appuyant sur le bouton(macro) dans le sheet(4) que la procédure commence.
Bonsoir
Je comprends mieux
Tout d'abord, sans test du "Oui", Excel ne peut pas deviner qu'il doit omettre des destinataire.
Par ailleurs le chiffre x à la fin de LisreDest(i, x) doit correspondre au numéro de colonne où se trouve l'info.
Si le mail se trouve en colonne I, on devrait avoir
. to = ListeDest(i, 9)
et après le for i= etccc
on devrait avoir le test
if lcase(listeDest(i, 10)) = "oui"
then
sans oublier le
End if
juste avant le next
En espérant pas d'erreur dans ma réponse faite sans filet...
Joyeux Noël
OK, errer de ma part après vérification... concernant le ListeDest(i, 9), il faut bien laisser le 1 car la listeDest ne se rapproche qu'à une seule colonne dans notre exercice.
En revanche, il faut bien mettre un test, qui ressemblerait du coup à
if ListeOui(i, 1) = "OUI" then
en ayant pris soin de définir la variable tableau ListeOui comme vous l'avez fait pour les autres....
Bonjour Joël,
J'ai réalisé avec votre appui, une base Excel VBA pour envoyer un mail avec pièce jointe. Cela marche super bien !
Maintenant, je souhaiterais mettre en GRAS/COULEUR/SOULIGNE/TAILLE etc. certaines parties du mail automatiquement. Lorsque je clique sur le bouton qui lance la macro, celui-ci envoie le mail automatiquement aux destinataires . JE NE SOUHAITE PAS INTERVENIR DANS LE MAIL MOI-MÊME pour mettre en valeur le mail.
Avez-vous un tuto qui explique cela ? ou pouvez-vous m'aider.
D'avance merci,
Marc
Bonjour Marc,
Vous allez devoir rechercher du côté d'experts plus pointus que moi, car je ne sais pas faire, et n'ai pas de temps à consacrer à cet aspect. Bon courage
Bonjour Joël,
J'ai utilisé votre macro mais j'ai une erreur d'exécution 13, incompatibilité de type à la ligne :
ListeDest = Range("tblbase[Mail]")
J'ai pourtant scrupuleusement suivi votre tuto... Des suggestions ?
Merci par avance.
Cdlt.
Jérôme
.
comment faire avec votre macro pour mail par mail et pas tous d'un coup Merci je n'arrive pas a trouvé
Merci à vous Fabien,
Sauf erreur de ma part, et si j'ai bien compris, il suffirait, à l'intérieur de la boucle
For i = ...
les instructions pour l'envoi...
next
d'ajouter un test sur la condition nécessaire pour envoyer le mail, ce qui donnerait :
for i= ...
if condition ?
les instructions pour l'envoi
end if
next
en espérant avoir répondu à voter attente,
Je ne comprends pas pourquoi faire une condition . Je vais essayer de trouver Merci de vos conseils
+Fabien GENIAUT ne faut-il pas faire la différence entre ceux qui doivent recevoir le mail et les autres ?
À quelle condition un utilisateur doit il recevoir le mail...
D'où le test...
Sinon, on peut les supprimer de la liste 😒
Bonjour Joël,
Est-il possible qu'en lieu et place de la PJ .xls en attaché soit plutôt inséré dans le corps du mail la feuille .xls ?
Merci d'avance de tes commentaires
ABelle journée
A bientôt
Charles.
Bonjour Charles. Je ne saurais pas le faire sans rechercher moi-même la solution ailleurs. Bon courage
Bonjour Joël,
Tout d'abord, merci pour cet excellent tuto!!!
J'ai tout de même une question. Je souhaite envoyer un mail distinct à plusieurs destinataires pour chaque ligne de mon tableau (comme un publipostage word). Je m'initie au vba et j'aimerais écrire un code qui individualise la liste des destinataires par ligne du tableau. Pourriez-vous m'aider, svp?
Je vous remercie et souhaite une excellente journée.
Audrey
Bonsoir Audrey
il me semble que la logique est exposée dans le tuto ? pour cela, il faut visionner la vidéo jusqu'à la fin, car c'est là que ça se passe... si une phrase spécifique doit être ajoutée à chaque destinataire, vous pouvez la prévoir dans une colonne supplémentaire et l'intégrer par code dans le corps du mail en concaténation, comme pour le reste de message.
Bon courage
@@FormationExcelTousNiveaux
Merci infiniment Joël!!!!
Grâce à vos indications j'ai réussi à individualiser les mails et adresser chacun à plusieurs destinataires.
Encore merci.
Très bonne journée à vous
Audrey
merci pour ce retour 👍👌
peut on faire pareil avec word?
Oui
super je cherchais une solution comme ca pour mes organisations. mais j'aimerais pouvoir faire deux macro dans mon fichier un comme le votre que j'ai fais mais également un en sélectionnant les destinataires de la liste et pas a tous. c'est possible? bien a vousVincent
bonjour, super tuto. si je ne vaux pas envoyer de pièce jointe comment dois je faire? bien à vous
Bonjour Joël,
Merci pour ce tuto ! Je ne sais pas si vous pourriez m'aider mais j'ai déjà un module que j'ai récupérer d'un collaborateur mais je ne connais rien du tout à la VBA Excel.. Il fonctionnait très bien mais j'aimerais ajouter la possibilité de mettre des pièces jointes de manière automatique pour mes 95 mails qui sont tous différents. Après avoir demandé sur des forums je n'ai aucun retour sur une solution possible... Est-il possible de vous l'envoyer pour avoir votre avis ?
Merci d'avance et bonne journée :)
Bonjour Sarah
Vous pouvez communiquer par mail, et je vous dirai si je peux faire quelque chose. Avec votre fichier, que je puisse me rendre compte, et les explications de votre attente.
@@FormationExcelTousNiveaux merci beaucoup, c’est fait !
Bonjour Joël, peut-on envoyer plusieurs fichiers en même temps?
Bonjour Bruno, à priori oui... Répéter la ligne
. Attachments.Add
Bonjour Joël,
J'ai toujours erreur de compilation: variable non définie.
Merci pour votre retour
B à V.
Bonjour Olivier, vérifiez bien l'orthographe de votre variable et vérifiez si cette variable est bien déclarée, au bon endroit...
@@FormationExcelTousNiveaux Bonjour, Avez vous une adresse pour vous envoyer le texte de ma macro?
Toujours le même problème, Erreur de compilation, variable non définie 😞
Bonjour Olivier
garbe.joel@free.fr
Bonjour Joel, tu as changé d'adresse mail?@@FormationExcelTousNiveaux
@@oliviergodart1951bonjour Olivier. Tout dépend par rapport à quand, j'en ai plusieurs en fait, et je ne les lis pas tous les jours... Retraite oblige 🤪
Bonjour Merci pour ces explications cela fonctionne parfaitement ! Toutefois comment est il possible d'attacher un fichier différent pour chaque ligne ?
merci d'avance ^^
Bonjour, pour cela, il serait judicieux de prévoir le chemin avec le nom de fichier dans la base de données, puis, dans la boucle VBA, prendre en compte cette information avec la même logique que pour l'adresse mail
Bon courage
@@FormationExcelTousNiveaux entendu je vais me concentrer là dessus , merci pour votre aide !
Bonjour,
Svp, comment faire pour envoyer un email de rappel à 10j avant échéance à un destinataire, tout en mettant d autres destinataires en CC ou bien CCI
Je vous remercie :)
Bonjour Hinan,
pour la date, prevoir une procédure qui testera la date d'échéance
if date = échéance - 10
avant l'instruction send
Pour destinataires en copie, vous avez. cc
et. cci pour copie cachée
Bon courage
Bonjour Joël,
Merci pour cet excellent travail généreux qui simplifie grandement les choses ;)
Une question, est-il possible d'envoyer plusieurs documents en pièces jointes ?
Bonne journée?
Bonjour Ludovic, merci
Pour envoyer plusieurs fichier, il suffit d'utiliser plusieurs fois la l.'instruction
.Attachments.Add etc
Bonne journée
Bonjour Joël,
Super le tuto !! J'ai la même erreur d'exécution 13 que @mefmosaic ! J'ai repris point par point le code corrigé que vous lui avez retourné dans votre dernière réponse. Il est identique au mien sauf qu'à la fin de cette ligne :
ListeDest = Range("tblBase[Mail]") ; le nom de mon tableau étant "tblBase" et la colonne des adresses étant "Mail", il me manquait le "point Value" que je me suis empressé d'ajouter tout heureux d'avoir déniché l'erreur. Hélas non, j'ai toujours "Erreur d'exécution 13" qui apparait au milieu de mon écran pour "incompatibilité de type". Avez vous d'autres suggestions de corrections pour ce code ?
Bonne fin de journée et merci pour le tuto
Marc
Bonjour Marc,
Le plus sûr edt de m'envoyer le fichief...
joel.garbe@sfr.fr
Bonne soirée
Il faut remblacer Range("tblBase[mail]") par Range("listedest[email]") pour moi ça a résolu mon problème
@@celinececile5194 desole mais pour moi non, j'ai toujours le même message d'erreur.
listeDest() = Range("listedest[Mail]") => il semble qu'il faut un (;) oui ok mais ou??
bonjour svp ! comment envoyé a d'autre email comme yahoo,gmail et bien d'autre svp urgent *
Bonjour, je n'ai pas la réponse à cette question
Très bien ! Y a plus qu'à !! :)
Voici le code avec lequel j'ai l'erreur d'éxécution 13, incompatibilité de type à la ligne :
ListeDest = Range("tblbase[Courriel]")
Où est l'erreur ?
Code :
Option Explicit
Sub envoimail()
'Déclaration des variables
Dim ListeDest()
Dim i As Long
Dim oMsgApp As Object
Dim oMsg As Object
Dim sListeDest As String
Dim sFichier As String
'Fichier que l'on souhaite envoyer
sFichier = Application.GetOpenFilename(, , "Sélectionnez le fichier à envoyer")
If sFichier = "" Then
MsgBox ("Aucun fichier sélectionné, opération annulée")
Exit Sub
End If
Set oMsgApp = CreateObject("outlook.application")
'Gestion de la liste des destinataires (le tableau se remplit automatiquement)
ListeDest = Range("tblbase[Courriel]")
sListeDest = ""
'Mise sous forme d'une chaine de caractères sListeDest
For i = LBound(ListeDest(), 1) To UBound(ListeDest(), 1)
sListeDest = sListeDest & ";" & ListeDest(i, 1)
Next
'Message par lui-même
Set oMsg = oMsgApp.CreateItem(0)
'Contenu du message
With oMsg
.To = sListeDest
.Attachments.Add sFichier
.Subject = "Fichier de la semaine"
.Body = "Veuillez trouver ci-joint le fichier de la semaine" & Chr(10) & Chr(13) & "Bonne journée"
.Send
End With
'Libération de l'espace mémoire de l'application Outlook qui s'est ouverte
oMsgApp.Quit
Set oMsgApp = Nothing
Set oMsg = Nothing
MsgBox "Mail envoyé !!"
End Sub
Bonsoir Jérôme,
Je pensais avoir répondu mais je ne vois pas la réponse...
Essayez aves les parenthèses, sinon, envoyez moi votre fichier...
Joël
joel.garbe@sfr.fr
@@FormationExcelTousNiveaux Bonjour,
Comment faire pour vous envoyer la macro ?
A défaut je la copie colle ci-dessous :
Sub envoimail()
'Déclaration des variables
Dim ListeDest()
Dim i As Long
Dim oMsgApp As Object
Dim oMsg As Object
Dim sListeDest As String
Dim sFichier As String
'Fichier que l'on souhaite envoyer
sFichier = Application.GetOpenFilename(, , "Sélectionnez le fichier à envoyer")
If sFichier = "" Then
MsgBox ("Aucun fichier sélectionné, opération annulée")
Exit Sub
End If
Set oMsgApp = CreateObject("outlook.application")
'Gestion de la liste des destinataires (le tableau se remplit automatiquement)
ListeDest = Range("tblbase[Courriel]").Value
sListeDest = ""
'Mise sous forme d'une chaine de caractères sListeDest
For i = LBound(ListeDest(), 1) To UBound(ListeDest(), 1)
sListeDest = sListeDest & ";" & ListeDest(i, 1)
Next
'Message par lui-même
Set oMsg = oMsgApp.CreateItem(0)
'Contenu du message
With oMsg
.To = sListeDest
.Attachments.Add sFichier
.Subject = "Fichier de la semaine"
.Body = "Veuillez trouver ci-joint le fichier de la semaine" & Chr(10) & Chr(13) & "Bonne journée"
.Send
End With
'Libération de l'espace mémoire de l'application Outlook qui s'est ouverte
oMsgApp.Quit
Set oMsgApp = Nothing
Set oMsg = Nothing
MsgBox "Mail envoyé !!"
End Sub
super tuto merci,
cool! Merci
👍
Bonjour Joël,
J'ai une petite question PAR RAPPORT A VOTRE TUTO.
1) Lorsque je ne sélectionne pas de fichier(bon de commande) et que je clique sur OPEN, RIEN NE SE PASSE !
- Je souhaiterais que le message Box puisse indiquer que rien n'a été sélectionné et rien ne se passe.
2) Lorsque je ferme avec la X ou CANCEL (sans avoir sélectionné le fichier, il m'indique un message box "voulez-vous envoyer cet E-Mail ? si je clique YES, il continue la procédure et m'indique un DEBUG.
Par contre, si je clique NO, la procédure s'arrête.
- Je souhaiterais que lorque le fichier n'est pas sélectionné et que je ferme par la croix X ou cancel, la procédure s'arrête avec un MsgBox rien de sélectionné. Veuillez sélectionner un fichier.
Pouvez-vous m'aider ?
Marc
Merci et belle journée
Trouvé !
Merci, je n'ai pas trouvé le temps de répondre...
Bonjour,
Bonjour 😜
MERCI beaucoup
De rien, c'est cool
👍
Bonjour M. Joel
Tout d’abord merci beaucoup pour les tutos. Tres bien fait et m'aide beaucoup.
Ma question c'est j'ai pas Outlook 13 ou autre dans mon ordi. et pour envoyer des email avec vba il le faut. es qu’il y a autre moyen???
Merci d'avance
Paul Harvey
tobiepaul@hotmail.com
Pour ma part, je ne sais pas faire autrement !!! bon courage 👍
Merci
De rien ! C'est cool !