Donnees email selon ligne grace a formulaire
Bonjour
Ca serait bien si quelqu'un pouvait m'aider: j'ai trouvé un code sur internet qui me convient partiellement mais je voudrais le développer.
Je vais essayer d'expliquer le plus clairement possible ce que je veux faire (la procédure):
J'ai un fichier excel avec 2 onglets:
- onglet "suivi": un tableau de suivi avec à chaque ligne un numéro de dossier, et un nom et d'autres informations à chaque ligne.
REMARQUES: en colonne A il y a un numéro de dossier, en colonne B un nom, en D un email et en G une date.
Ces données doivent faire partie de chaque email envoyé (j'explique plus tard).
- onglet "formulaire" avec un grand tableau vide (que je dois envoyer a chaque client dont le nom et l'email sont indiques dans le tableau de suivi dans le premier onglet).
En appuyant sur un bouton envoi (qui se trouve dans l'onglet "suivi"), un formulaire (UserForm1) s'ouvre et demande pour quel numéro de dossier on veut envoyer un email au client.
On écrit dans le champ du petit formulaire le numéro de dossier et on appuie sur "envoi".
Les actions qui doivent être générées suite au bouton "envoi" de ce formulaire sont les suivantes:
1. l'onglet "formulaire" se sauvegarde sur notre ordinateur (Desktop)
2. un email automatique se génère avec un message automatique et un titre automatique, avec le fichier excel sauvegardé (l'onglet "formulaire" en question, qui est mis en piece jointe à l'email).
IMPORTANT: le sujet de l'email est puisé des données de la colonne A (selon la ligne du dossier que j'ai inscrit dans le formulaire), le nom du fichier joint est puisé des données de la colonne A et B, l'adresse du destinataire est puisée des données de la colonne D, la date qui se trouve dans le corps du mail est puisée de la colonne G.
3. le fichier excel (de l'onglet qui a été sauvegardé pour son envoi en pièce jointe) s'efface du Desktop
4. la date d'envoi (celle où a été exécutée la macro en fait) s'inscrit automatiquement dans la cellule de la colonne F selon la ligne correspondante (selon le numéro de dossier pour lequel la macro a été exécutée).
Je vous joint le fichier en pièce jointe afin que vous puissiez mieux comprendre.
Merci d'avance pour votre aide!!
Eric
Bonjour!
Oui c'est presque cela, merci pour la réponse rapide!!
Mais le problème est que le fichier qui est joint à l'email l'est entièrement... J'ai besoin que seul l'onglet nommé "formulaire" soit joint à l'email et aussi que le nom du fichier soit "Données passeport" & " " & Range("b") & " " & "PNR" & " " & Range("a") & ".xls"
C'est possible?
re,
remplacer
MonMessage.Attachments.Add ActiveWorkbook.FullNamepar
MonMessage.Attachments.Add fichierMerci beaucoup!!
Tout fonctionne très bien!!
Je réécris la macro ci-après et je joins le fichier avec les quelques adaptations que j'y ai fait...
Il juste un petit détail qui me gêne: la macro d'envoi sauvegarde le fichier excel sur mon Bureau., et ne s'efface pas à la fin.
La formule "kill fichier" ne fonctionne pas ...
Sub EnvoiMailavecPJ(pnr As Long)
Dim chemin As String, fichier As String
ligne = Application.Match(pnr, Sheets("suivi").Range("A:A"), 0)
chemin = Environ("USERPROFILE") & "\Desktop"
fichier = chemin & "\" & "Données passeport" & " " & Range("B" & ligne) & " " & "PNR" & " " & Range("A" & ligne) & ".xls"
ThisWorkbook.Sheets("formulaire").Copy
ActiveWorkbook.SaveAs Filename:=fichier
ActiveWorkbook.Close
Dim MonOutlook As Object
Dim MonMessage As Object
Set MonOutlook = CreateObject("Outlook.Application")
Set MonMessage = MonOutlook.CreateItem(0)
MonMessage.To = ThisWorkbook.Sheets("suivi").Range("D" & ligne)
MonMessage.Cc = ""
MonMessage.Subject = "Demande données passeport" & " " & "PNR" & " " & ThisWorkbook.Sheets("suivi").Range("A" & ligne) & " " & "-" & " " & ThisWorkbook.Sheets("suivi").Range("B" & ligne)
MonMessage.body = "A l'attention de:" & " " & ThisWorkbook.Sheets("suivi").Range("C" & ligne) & _
Chr(13) & Chr(13) & "Bonjour," & _
Chr(13) & Chr(13) & "Veuillez trouver, ci-joint, le formulaire dans lequel vous pouvez renseigner les informations concernant les passeports de vos clients." & _
Chr(13) & Chr(13) & "Nous vous saurions gré de bien vouloir nous faire parvenir rempli le formulaire ci-joint au plus tard 5 jours avant le vol, c'est-à-dire au plus tard jusqu'au" & " " & ThisWorkbook.Sheets("suivi").Range("G6") & _
Chr(13) & Chr(13) & "Merci." & _
Chr(13) & Chr(13) & "MON NOM EN GUISE DE SIGNATURE"
MonMessage.Attachments.Add fichier
MonMessage.display
With ThisWorkbook.Sheets("suivi").Range("F" & ligne)
.Value = Date
.NumberFormat = "dd/mm/yyyy"
End With
MsgBox "Le courriel vient d'être envoyé à l'agent."
ActiveWorkbook.Save
ActiveWorkbook.Close
Set MonOutlook = Nothing
Kill fichier
End Sub
j'ai arrange le probleme.