Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2021 Macro de création mail de relance avec référence cellules

arnoldbrice19

XLDnaute Nouveau
Bonjour les experts,
J'espère que vous vous portez bien !

Je viens vers vous aujourd'hui trouver un soutien qui m'aidera à terminer ma macro VBA.

En effet, j'ai structuré la macro de telle sorte qu'elle lise les données dans les cellules de ma feuille, plutôt que de les intégrer directement dans le code. Le code est le suivant vous pemettra de prendre connaissance :

VB:
Sub RedigerRelance1()

'Déclaration des variables
Dim objOutlook As Outlook.Application
Dim objMail As Outlook.MailItem
Dim strDateRelance As String

'Récupération des informations de la facture
strDateRelance = Format(Sheets("Etat des factures clients").Range("E68").Value, "yyyy-mm-dd")

'Création de l'objet Outlook
Set objOutlook = CreateObject("Outlook.Application")

'Création de l'objet MailItem
Set objMail = objOutlook.CreateItem(0)

With objMail

Dim rngFacture As Object
'Sélection de la plage de cellules à insérer dans le corps du mail
Set rngFacture = Sheets("Etat des factures clients").Range("A15:L46")

'Définition de l'objet destinataire
.To = Sheets("Etat des factures clients").Range("B71").Value

'Définition de l'objet objet Cc
.CC = Sheets("Etat des factures clients").Range("E71").Value

'Définition du sujet du mail
.Subject = "Situation de paiement pour factures non soldées"

'Le corps du mail contient la plage de cellules
.Body = Sheets("Etat des factures clients").Range("B76").Text

rngFacture.Copy

'Définition du corps du mail
.Body = .Body & rngFacture.Range(0).Paste

End With

'Ouverture de la boite d'édition mail
objMail.Display

End Sub

Intention : Je voudrai joindre au corps du mail (contenu dans la cellule "B7") la plage de cellules "A15:L46", mais l'ajout de cette sélection me casse la tête, vu mon niveau en VBA. Je suis un pur débutant et je compte m'améliorer avec votre aide.
Mon problème se situe au niveau de la variable "rngFacture". Comment structurer le code pour que ça fonctionne efficacement ?

Je précise que je souhaite passer par ma méthode de rédaction du mail, c'est-à-dire, dans une cellule concaténer avec les formules et la lire dans le code. J'y ai joint un extrait de mon fichier.

Merci par avance de votre soutien !
 

Pièces jointes

  • Suivi des paiements clients - Copie.xlsm
    247.7 KB · Affichages: 7
Solution
Le .Body c'est une variable String. Faire un Coller d'un Range dans une chaine ça ne peut pas marcher.
C'est plus compliqué que ça que d'introduire une image ou le HTML représentant un Range dans le corps d'un mail.
Si ce qu'il y a dans ce Range est du texte (qu'y a-t-il au juste dedans ? Un exemple ?), tu auras plus vite fait de juxtaposer le texte de chacune des cellules de ce Range dans le .Body.

Dudu2

XLDnaute Barbatruc
Bonjour,
Si tu n'as pas de réponse, jette un oeil à cette ressource:
Tu peux envoyer un Range soit en image soit en HTML "embbeded" dans le Body du mail.
 

arnoldbrice19

XLDnaute Nouveau
J'ai pris connaissance de la ressource. J'avoue que je ne comprends pas grand chose, à moins de recommencer ma procédure qui n'est pas plus complexe, mais qui me bloque. Si tu peux m'accorder un peu de ton temps pour réagir, pour moi, sur la ligne ".Body = .Body & rngFacture.Range(0).Paste".
 

Dudu2

XLDnaute Barbatruc
Le .Body c'est une variable String. Faire un Coller d'un Range dans une chaine ça ne peut pas marcher.
C'est plus compliqué que ça que d'introduire une image ou le HTML représentant un Range dans le corps d'un mail.
Si ce qu'il y a dans ce Range est du texte (qu'y a-t-il au juste dedans ? Un exemple ?), tu auras plus vite fait de juxtaposer le texte de chacune des cellules de ce Range dans le .Body.
 

Discussions similaires

Réponses
2
Affichages
660
Réponses
7
Affichages
594
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…