Création et envois email
Bonjour,
j'aimerais savoir si il est possible de modifié ce code afin que les destinataires soit ajouté dans le même mail, et non m'ouvrir autant de mail que de destinataire ..
et d'autre part dans ma feuille MAIL B3 j'ai le contenu de mon mail avec des couleurs, souligné qui ne se répercute pas dans le mail si quelqu'un a la solution, dans la colonne "v" au début j'avais mis des "cases check" mais je ne sais pas comment l'interpréter dans cette ligne " If .Cells(i, 22) Like "OUI" Then"
et pour finir si je peux abuser j'aimerais que des pièces jointes soit automatiquement ajouter également, elles se trouverons dans le même dossier que le fichier Excel
je sais pas si il existe un moyen pour l'envois direct sans passer par outlook
Merci Bon week end
Sub mail1()
Dim i As Long, Derlg As Long
Dim OutlookApp As Object, OutlookMail As Object
Dim admail As String
With Sheets("SAISON")
.Activate
Derlg = .Range("M" & .Rows.Count).End(xlUp).Row
For i = 2 To Derlg
If .Cells(i, 22) Like "OUI" Then
admail = .Range("M" & i)
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
With OutlookMail
.To = admail
.Subject = Sheets("MAIL").Range("B2").Value
.Body = Sheets("MAIL").Range("B3").Value
.Display
'.Send
End With
End If
Next i
End With
End SubBonjour,
Pour les destinataires multiples, voir code (non testé) ci-dessous :
Sub mail1()
Dim i As Long, Derlg As Long
Dim OutlookApp As Object, OutlookMail As Object
Dim cListeDest As String
With Sheets("SAISON")
.Activate
Derlg = .Range("M" & .Rows.Count).End(xlUp).Row
cListeDest = ""
For i = 2 To Derlg
If .Cells(i, 22) Like "OUI" Then cListeDest = cListeDest & .Range("M" & i) & "; "
Next
If cListeDest <> "" Then
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
With OutlookMail
.To = cListeDest
.Subject = Sheets("MAIL").Range("B2").Value
.Body = Sheets("MAIL").Range("B3").Value
.Display
'.Send
End With
End If
End With
End SubPour les 2 autres points, il faudrait avoir le fichier (avec des données anonymisées) :
- Les couleurs : il faut utiliser le format de mail HTML (Propriété .Body => .HTMLBody) et gérer les balises Html
- Les pièces jointes : toutes les pièces jointes du dossier ou uniquement certaines ? si uniquement certaines : il faut préciser le critère de sélection.
Cdlt,
Cylfo
Bonjour Cylfo,
J'espere que tu vas bien depuis le temps :)
merci de ton retour je te joint le fichier merci de ton aide a nouveau
Pardon j'ai oublié de te dire que le code pour l'envois a plusieurs membre est fonctionnel
Ok pour le fichier joint mais tu n'as pas répondu à la question concernant les fichiers à attacher au mail ...
Re,
J'ai renommé le tableau de l'onglet "SAISON" en "TSAISON" et j'ai supprimé les lignes vides (dans un TS, il est totalement inutile de prévoir des lignes vides, j'oserai même dire que c'est une hérésie
Pour le mail avec la mise en forme, j'ai créé une procédure "Mail2" (cf Module3) qui exploite les propriétés des TS et qui utilise la propriété "HTMLBody". Analyser le texte pour y intégrer les diverses balises html serait trop complexe / lourd. Il est plus simple de le préparer en amont en mettant les balises nécessaires. Je t'ai fait un exemple dans la cellule B3 de l'onglet mail. La seule transformation opérée dans le code est de remplacer les retours à la ligne (codé Chr(10) dans la cellule) par la balise html de retour à la ligne <br>. Au cas où, à savoir : sauf certaines exceptions (comme <br>), pour la majorité des balises html, quand tu l'ouvres, tu dois la refermer et si tu as ouverts plusieurs balises à la suite, il faut les refermer dans l'ordre inverse. Dans la cellule B3, le "gras et souligné et en italique" est un exemple et je t'ai ajouté une fonctionnalité pour obtenir les codes couleurs à utiliser dans les balises html.
Pour intégrer le code VB dans ton classeur réel, il faudra modifier les noms des colonnes Colonne12 et Colonne21 par leur vrai titre.
Cdlt,
Cylfo
Bonjour Cylfo,
Merci de ton retour, je vais regarder tout cela :)
bonjour Guillaume04350, Cylfo,
Si vous avez beaucoup de destinateurs, c'est souvent une bonne habitude d'envoyer le mail à vous-même comme "TO" et les destinateurs en BCC, comme ça, les destinateurs ne voient pas les adresses des autres, question de confidentialité. Mais cela dépend de votre choix.
Re bonjour a vous,
j'ai enfin réussi a mettre tout en place dans mon fichier que je joint ici trop galère quand j'essai de comprendre et que j'arrive a comprendre que la moitié
merci d'ailleurs pour vos commentaires dans les formules
@BsAlv, je veux bien savoir comment faire concernant ta proposition pour l'envois de mail selon ton post.
@Cylfo, le ou les fichiers seront donc dans le dossier racine et en fonction du mail envoyé, prédéfini, soit déjà dans la formule fichier1.pdf , fichier2.pdf etc que je puisse modifié dans le formule, ou l'ouverture d'une fenêtre pour allez chercher mes fichiers.
@BsAlv, si c'est possible de remettre le classement par points dans la feuille "SAISON" du coup "copie" avez été mis en place pour garder un tableau "propre" avec la même hauteur (comme on peu voir justement dans le tableau sur la feuille "copie" ) mais dans cette version j'ai l'impression que plus rien ne bouge, du coup "COPIE" a toujours lieu d'être la ? j'ose rien supprimé sinon plus rien ne marche
Par la suite, pour l'amélioration du fichier, j'ai créé une forme pour faire un PDF ce qui marche mais pas comme je voudrais ... sinon trop facile ... je pense créée différent boutons en fonction ce dont j'ai besoin d'imprimé ( si je comprend je ferais en fonction des mes besoins)
j'ai créé un nom "IMP_REMISE", qui a pour but lorsque j'appuie sur le "bouton" IMP PDF REMISE" le mise en PDF du nom "IMP_REMISE" ce qui "fonctionne" en ce moment car j'ai créé la zone d'impression correspondante ... et encore le rendu n'est pas "joli" car j'ai tout sur 3 pages différentes ... je n'ai d'ailleurs pas trouvé l'option pour désactiver l'impression de la forme ou je dois faire un bouton plutot pour avoir cette option ? Si cela est possible de prendre la coche MAIL / IMP pour choisir la ou les ligne a mettre en PDF
dernier point (pour le moment
Merci encore :)
Re,
Pour les destinataires, comme indiqué par BsAlv
Pour les fichiers à joindre, je n'ai pas compris "soit déjà dans la formule fichier1.pdf , fichier2.pdf etc que je puisse modifié dans le formule,", où se trouve ou à quoi fait référence la formule ?
Pour ne pas imprimer une forme : sélectionne la forme, clic droit "Format de la forme ...", "Options de la forme" / "Taille et propriétés", décocher "Imprimer l'objet".
Pour l'impression, compte tenu que tu veux imprimer en regroupant des plages disjointes et en filtrant les lignes à imprimer, le plus simple serait de passer par PowerQuery pour constituer un tableau d'impression ne contenant que les colonnes et lignes à imprimer. Tu es d'accord sur ce principe de fonctionnement ?
Concernant le décalage, je ne constate pas ce souci à l'ouverture du fichier.
Pour le classement, je laisse BsAlv œuvrer. Je n'avais pas vu que vous étiez intervenu et j'espère n'avoir rien casser de ce qui avait été fait.
Cdlt,
Cylfo
Re,
Dans la version jointe, je tai ajouté la propriété ".BCC" dans l'envoi de mail. Dans Module3, il faudra que tu définisses la constante "MAIL_EXPEDITEUR" avec l'adresse mail (la tienne ou une générique) qui recevra aussi le mail.
J'ai également mis en place la solution PowerQuery et adapté la procédure "CreatePDF" dans Module2. Pour accéder à l'éditeur PQ => "Données" / "Requêtes et connexions". Le résultat est chargé dans le tableau "TSAISON_Imp" de l'onglet "TSAISON Imp". La requête est rafraichie automatiquement lorsque tu cliques sur le bouton "IMP PDS REMISE" de l'onglet "SAISON". Important, dans les propriétés de la requête "TSAISON", l'option "Activer l'actualisation en arrière plan" est décochée sinon la macro continuerait à s'exécuter avant même que le tableau ne soit rafraichi.
Suite après la réponse concernant les fichiers.
Cdlt,
Cylfo
re, salut Cylfo,
je continue avec le fichier de Cylfo et j'ai supprimé la feuille "Copie" parce que je pense que vous voulez tout faire dans la feuille "TSAISON". à, j'ai ajouté ce bouton avec lequel vous pouvez trier ce tableau suivant la colonne A (votre numérotage) oubien la colonne X (points avec premier chiffre le nombre de correspondences dans ces 4 colonnes et puis les 4 derniers chiffres 0/1 = correspondence pour adresse mail, nom, téléphone et prénom). Je pense que c'est tout que vous m'avez demandé.
PS. j'espère que cette nouvelle colonne X ne causera pas de problèmes.
Re,
@BsAlv, aucun souci, PQ la charge mais comme on ne conserve que certaines colonnes, la nouvelle (ou d'autres, si il y avait d'autres colonnes ajoutées) est ignorée.
@Guillaume, pour l'insertion des pièces jointes, je repartirai du fichier du fichier de BsAlv.
Cdlt
Bonjour,
Merci je regarde :) désolé pas mal de boulot j'ai pas encore regardé, pour les fichiers joints ils seront dans le dossier racine (j'ai pas encore le detail) mais il y aura des fichiers en fonction du mail envoyé avec un nom pré défini ( mail 1 = fichier1.pdf et fichier2.pdf ; mail 2 = fichier1.pdf et fichier3.pdf ... ) le plus simple si je comprend comment cela fonctionne je ferais les modifications en fonction des besoins..
merci encore pour votre aide, j'essai de regarder ce soir le dernier fichier
!Bonjour,
j'ai regardé cela correspond largement a mes attentes merci encore
j'ai quelques "petite" demande pour du confort en plus des fichiers joints a mettre dans le mail, toujours pareil je ne connais pas les limites d'excel ;X
Pour les fichiers à joindre, je n'ai pas compris "soit déjà dans la formule fichier1.pdf , fichier2.pdf etc que je puisse modifié dans le formule,", où se trouve ou à quoi fait référence la formule ?
Elle n'y est pas encore
- lors de l'enregistrement du PDF j'ai en nom "DSD saison 2024" si c'est possible de manière automatique y ajouter année +1 ( DSD saison 2024 2025)
- la tableau du PowerQUERY j'ai compris le fonctionnement qui est parfait, j'ai quand meme cherché mais pas trouvé :c , on peut lui assigné une hauteur de ligne pré défini ?
- lors du passage de la souris sur les cases IMP / MAIL et Sélectionné , c''est possible d'y afficher ce qui se trouve en nom prénom de l'enfant de la ligne correspondante, par exemple en genre de popup ou je ne sais quoi pour être sur des coches, sinon je décalerais l'emplacement des colonnes
merci beaucoup
Bonjour Guillaume04350,
D'après ton1er fichier, il y a 9 boutons d'envoi de mail et 9 valeurs différentes de "Groupe affecté" donc j'imagine que les envois de mail pourraient correspondre à cette donnée. Par contre dans la colonne "Niveau de ski actuel" tu as une liste avec 12 valeurs différentes donc les 3 valeurs valeurs "ETOILE BRONZE / ARGENT et OR" ne déterminent pas le "Groupe affecté" donc j'ai un doute sur la donnée associée aux différents types de mail.
Si l'envoi de mail est associé à une donnée, précises moi laquelle mais cela ne change pas le principe de fonctionnement proposé ci-dessous.
Plutôt que d'avoir N boutons d'envois de mail et éventuellement autant de procédures VB, je te propose une approche différente qui sera plus évolutive et plus facile à maintenir :
- Constituer un tableau structuré dans l'onglet "MAIL" pour paramétrer les différents types de mail à envoyer :
- Une colonne "Type de mail" dont les différentes valeurs constitueront une liste qui sera associée (Données / Validation des données) à une cellule de l'onglet "SAISON" (par exemple à droite du tableau ou ailleurs ou sur un autre onglet) et en dessous de cette cellule, un seul bouton d'envoi de mail associé à une procédure VB qui déterminera l'envoi à faire à partir de cette cellule.
- Une colonne "Mail" dans lequel tu paramètreras le contenu du mail
- Une colonne "Fichiers à joindre" contenant les noms de fichiers à joindre et comme le nombre de fichiers pourrait varier : les différents noms de fichiers seront séparés par un séparateur (proposition ;) ce qui donnerait par exemple "Fichier1.pdf;Fichier3.pdf".
- Si la colonne "Type de mail" est associée à la donnée "Niveau de ski actuel" : l'ajout d'une colonne "Groupe affecté" permettrait de proposer dans le tableau TSAISON une valeur par défaut de la colonne "Groupe affecté" à l'aide d'une formule "RECHECHEV" plutôt que par des SI imbriqués.
Pour le nom du pdf créé : ajout de l'année AA+1 dans le nom du fichier => ok MAIS actuellement le 2024 est lié à la date du jour (je n'ai pas modifié le code de cette partie), donc le 31/12/2024 tu auras 2024-2025 et le lendemain pour le même fichier tu auras "2025-2026"
Pour le tableau d'impression : la hauteur de ligne peut être fixée dans la macro d'impression : indique moi les hauteurs voulues de la ligne de titres et des lignes de donnée.
Pour la pop-up des noms et prénoms : Lors de la saisie des noms et prénoms, une note dans la cellule "IMP / MAIL" contenant le nom et le prénom sera automatiquement ajoutée (via l'évènement Worksheet_Change). Le faire aussi pour la colonne "Sélectionné" me semble un peu "trop"
Cdlt,
Cylfo
Bonsoir :)
Concernant les mails je pense que je pourrais répondre uniquement quand je mettrais le fichier en action, c'est pour cela que pour le moment je coche a qui et apres je choisi le mail a expedier.. il faut que je mette a plat le fonctionnement qui est encore un peu flou :/
Pour le nom du pdf créé : ajout de l'année AA+1 dans le nom du fichier => ok MAIS actuellement le 2024 est lié à la date du jour (je n'ai pas modifié le code de cette partie), donc le 31/12/2024 tu auras 2024-2025 et le lendemain pour le même fichier tu auras "2025-2026" . Ce ne serait pas mieux d'ajouter dans le fichier une cellule contenant l'année de la saison ?
Si si je te fais entièrement confiance, surtout si au 1 er janvier je change d'année :)
Pour le tableau d'impression : la hauteur de ligne peut être fixée dans la macro d'impression : indique moi les hauteurs voulues de la ligne de titres et des lignes de donnée.
Pour la hauteur de ligne, je pense 2 cm c'est pas mal
Pour la pop-up des noms et prénoms : Lors de la saisie des noms et prénoms, une note dans la cellule "IMP / MAIL" contenant le nom et le prénom sera automatiquement ajoutée (via l'évènement Worksheet_Change). Le faire aussi pour la colonne "Sélectionné" me semble un peu "trop" puisque les 2 colonnes sont accolées.
Tout a fait d'accord avec toi ... je réfléchi pas defois :D
mercii beaucoup
Bonjour Guillaume,
Le fichier joint contient les modifications suivantes :
- Onglet "MAIL"
- Ajout du millésime de la saison : cellule nommée "V_SAISON"
- Le TS "TMAILS" de paramétrage des mails. La plage des données de la colonne "Type de mail" est nommée "LST_MAILS" et est utilisée dans l'onglet "SAISON"
- Pour l'instant, la colonne "Type de mail" contient les valeurs "Mail 1" à "Mail 9", tu peux les changer pour avoir des noms plus significatifs
.
- Pour l'instant, la colonne "Type de mail" contient les valeurs "Mail 1" à "Mail 9", tu peux les changer pour avoir des noms plus significatifs
- L'utilitaire pour avoir les codes couleurs html a 2 cellules nommées, tu peux donc déplacer l'ensemble et il continuera de fonctionner (ce n'était pas le cas dans la version précédente).
- Onglet "SAISON"
- J'ai modifié le titre de la colonne "Prénom de l'enfant" pour ôter le retour à la ligne qui figurait à la fin.
- J'ai modifié les plages "COULEUR" et "COCHE" pour les limiter aux plages de données du TS des colonnes référencées. Je me suis fait piéger
, j'ai double-cliquer un peu trop haut dans la 1ère ligne de donnée de "MAIL / IMP" et cela a écrasé le titre par une coche verte . J'envoie un message à BsAlv pour qu'il s'assure que la modif de "COULEUR" n'a pas d'incidence sur le fonctionnement de la procédure "Doublon". - La modification des noms et/ou prénoms alimentent une note dans les colonnes "IMP / MAIL" et "Sélectionné". Si tu copies les données originales dans le tableau, cela alimentera automatiquement les notes des 2 colonnes.
- A droite du tableau, tu trouveras l'édition des mails : tu choisis un type de mail dans la liste (= valeurs de LST_MAILS) et tu cliques sur l'enveloppe. S'il y a des fichiers ils sont ajoutés et s'ils n'existent pas un message t'en informe mais n'empêche pas (du moins dans cette version) la constitution du mail. Tu me diras si tu souhaites bloquer le mail. S'il n'y a aucune donnée sélectionnée, un message est émis. La procédure s'appelle "EnvoiMail" et est dans Module3.
- Le code associé au bouton d'export en pdf est modifié. Dans Module 2, tu as 2 constantes en tête du module qui te permettent de fixer les hauteurs des lignes de titre et des données.
Cdlt,
Cylfo
bonjour le fil,
non, à premier vue, les modifications ne me dérangent pas. La macro lit le contenu des colonnes G:H et M:N et colle son résultat dans la colonne X. Donc, pour moi, c'est okay.
Bonsoir,
je pense que vous êtes au point final sauf si je veux faire plus simple :D mais je verrais avec l'utilisation merci énormément pour votre travail !!
j'ai apporté quelque modification sur le bouton et sur l'impression de pdf
juste un dernier "détail" colonne I TsaisonIMP c'est possible de la mettre plus large ? histoute qu'une signature rentre ...
merciiiiii