Génération d'un mail avec plusieurs pièces-jointes
Bonjour à vous,
Je souhaite créer une macro qui envoie un mail avec un nombre variable de pièces-jointes (mais 5 dans l'exemple ci-après).
Je vous remercie par avance de votre aide.
Sub Courriel()
Dim MonCorps As String
Dim NbFermage, NumFermage As Integer
NbFermage = 5
For NumFermage = 1 To NbFermage
Repfile & NumFermage = ThisWorkbook.Path & "\" & "Fermage" & NumFermage & ".pdf"
Next
MonCorps = "<p>Bonjour, <br>Vous trouverez en pièce-jointe les fermages de l'année. <br>Cordialement <p>"
fermage = "Fermage 2020"
With CreateObject("Outlook.Application")
With .createitem(0)
.to = "Testmail@gmail.com"
.CC = "TestmailCopie@gmail.com"
.Subject = fermage
.HTMLBody = MonCorps
.Attachments.Add (Repfile1)
.Attachments.Add (Repfile2)
.Attachments.Add (Repfile3)
.Attachments.Add (Repfile4)
.Attachments.Add (Repfile5)
.Display
End With
End With
End Sub
Je rencontre deux soucis :
1- Je ne sais pas comme mettre en variable le repfile
Repfile & NumFermage = ThisWorkbook.Path & "\" & "Fermage" & NumFermage & ".pdf"
2/ Toujours pour les pièces jointes, je voudrais également variabiliser le nombre de pièce-jointe en reprenant les fichiers du point précédent.
.Attachments.Add (Repfile1)
.Attachments.Add (Repfile2)
.Attachments.Add (Repfile3)
.Attachments.Add (Repfile4)
.Attachments.Add (Repfile5)
Je vous remercie de votre aide,
Merci de ne pas utiliser de terme trop technique, je n'ai jamais suivi de cours d'informatique. Mais je sais me servir d'un copier coller quand je vois des lignes qui m’intéresse sur des forums ^^.
Belle soirée à vous
Vincent LO
Bonjour Abbé Vincent et
Une petite présentation ICI serait la bienvenue
Si vous ne l'avez pas encore fait, je vous invite à lire la charte du forum [A LIRE AVANT DE POSTER]
qui vous aidera dans vos demandes et réponses sur ce forum
Concernant votre demande, voici le code corrigé
Sub Courriel()
Dim MonCorps As String
Dim NbFermage, NumFermage As Integer
Dim RepFile As String
' Nombre de fermage
NbFermage = 5
'
MonCorps = "<p>Bonjour, <br>Vous trouverez en pièce-jointe les fermages de l'année. <br>Cordialement <p>"
fermage = "Fermage 2020"
'
With CreateObject("Outlook.Application")
With .createitem(0)
.Display
.To = "Testmail@gmail.com"
.CC = "TestmailCopie@gmail.com"
.Subject = fermage
.HTMLBody = MonCorps
For NumFermage = 1 To NbFermage
RepFile = ThisWorkbook.Path & "\" & "Fermage" & NumFermage & ".pdf"
.Attachments.Add (RepFile)
Next
End With
End With
End Sub
Reste le nombre de fermage à définir avec une cellule peut-être
Merci de votre participation
Cordialement
Bonjour BrunoM45 et merci de ce retour,
Le code de mon fichier est en réalité plus long, mais pour éviter de vous perturber pour rien (code pas forcément efficace qui pourrait faire défriser des habitués, mais qui pour moi est satisfaisant), j'ai réduit aux éléments que j'ai identifié comme problématique. Et visiblement, cela a été.
En l'occurrence, le nombre de fermage est défini préalablement par :
NbFermage = 0
NbLigne = 1
While Sheets("Fermage").Cells(NbLigne, 2) <> ""
If Sheets("Adresse").Cells(bailleur, 2) = Sheets("Fermage").Cells(NbLigne, 2) Then
NbFermage = NbFermage + 1
End If
NbLigne = NbLigne + 1
Wend
Je connais une formule plus élégante du style :
.Range("G4").End(xlDown).Row
Mais dans mon cas, je rencontre des problèmes liés à des lignes masqués.
C'est pour cela dans l'exemple que je vous ai communiqué, j'ai remplacé par un nombre. Je n'ai pas mis de valeur venant d'une cellule afin d'éviter de vous obliger à saisir un nombre pour lancer la macro, ni avec des feuilles à nommer.
Pour une fois je comprends la solution ! Elle était à mon niveau de compétence, mais il fallait être plus méthodique...
Je tente petit à petit de faire un petit facturier de fermage. Et je pense que j'arrive bientôt au bout, il suffit maintenant de tout rassembler : calcul des fermages, génération des factures en pdf, et envois par mail ou impression papier.
J'ai vu qu'il était possible de publier des fichiers, cela pourrait être mon premier quand j'aurai terminé. Mais l'hiver se terminant et la nature reprenant son activité, je vais avoir mon de temps dans les mois à venir.
Merci et bon week-end !