Envoi d'une feuille "non active" par mail

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

stich02

XLDnaute Occasionnel
Bonjour à toutes et à tous,

En piochant à droite et à gauche, j'ai adapté cette macro (voir ci-dessous). Toutefois j'ai un problème.
En effet je lance ma macro (via un bouton) dans une feuille mais avec "ActiveWorkbook.SaveCopyAs "K:\HH 804.xls" c'est cette feuille qui est copiée et non la feuille que je voudrais.
De plus j'en profite pour vous demander si vous savez comment je pourrais faire des retours à la ligne dans le texte que je joins à mon mail parceque pour l'instant tout est à la suite.

Merci d'avance.

Sub HH804()
Dim Subj As String
Dim EmailAddr As String
Dim Recipient As String
Dim RecipientCC As String
Dim RecipientBCC As String
Dim HLink As String
Dim Texte As String
Dim copie As String
Dim Fichier As String


ActiveWorkbook.SaveCopyAs "K:\PS 702 LHP.xls"
Subj = Range("c8")
Fichier = "K:\HH 804.xls"
RecipientCC = Range("c4") '(A VOIR)
RecipientBCC = Range("c6") '(A VOIR)
EmailAddr = Range("c2")
Texte = "Bonjour ," & vbCrLf & vbCrLf _
& "Veuillez trouver ci-joint, le HH 804 de cette semaine merci de nous le retourner. " & vbCrLf & vbCrLf _
& "Cordialement. " & vbCrLf & vbCrLf _
'

HLink = "mailto:" & EmailAddr & "?" & "cc=" & RecipientCC & "&" & "bcc=" & RecipientBCC & "&"
HLink = HLink & "subject=" & Subj & "&"
HLink = HLink & "body=" & Texte

ActiveWorkbook.FollowHyperlink HLink
Application.Wait (Now + TimeValue("0:00:02"))
SendKeys "%i", True
Application.Wait (Now + TimeValue("0:00:02"))
SendKeys "p", True
Application.Wait (Now + TimeValue("0:00:02"))
SendKeys Fichier, True
Application.Wait (Now + TimeValue("0:00:02"))
SendKeys "{enter}", True
Application.Wait (Now + TimeValue("0:00:02"))
SendKeys "%s", True

End Sub
 
Re : Envoi d'une feuille "non active" par mail

Bonsoir Said,

Merci pour ta réponse mais pour l'instant je n'y arrive toujours pas (bon j'avoue je ne suis pas doué 🙁...) Enfin je continue.

Sinon c'est :

ActiveWorkbook.SaveCopyAs "K:\HH 804.xls"

que j'ai mis dans ma macro.
 
Re : Envoi d'une feuille "non active" par mail

Bonjour Stich02, Berrached 🙂,
Je ne comprends pas tout... Tu parles de feuille et d'un autre côté, tu utilises ActiveWorkbook... Si ton classeur n'est pas sur la bonne feuille, as-tu testé Sheets("MaFeuille").Activate ? Sinon, fait un Activate sur ton classeur.
Chez moi,vbCrLf fonctionne parfaitement. Mais je passe via OutLook. Ton envoi de mail est peut-être codé dans un autre format pour le corps de message.
Bon courage 😎
 
Re : Envoi d'une feuille "non active" par mail

Bonjour Stich02, Berrached 🙂,
Je ne comprends pas tout... Tu parles de feuille et d'un autre côté, tu utilises ActiveWorkbook... Si ton classeur n'est pas sur la bonne feuille, as-tu testé Sheets("MaFeuille").Activate ? Sinon, fait un Activate sur ton classeur.
Chez moi,vbCrLf fonctionne parfaitement. Mais je passe via OutLook. Ton envoi de mail est peut-être codé dans un autre format pour le corps de message.
Bon courage 😎

Bonjour 😀,

En fait j'utilise ActiveWorkbook et effectivement c'est tout le classeur qui est copié alors que moi c'est seulement une des feuilles de ce classeur que j'aimerais copier. En plus je lance la macro depuis ce classeur mais dans une feuille qui n'est pas celle que je veux copier. Sinon moi aussi j'utilise Outlook.
J'espère avoir être clair. J'essaie de suivre vos conseils mais je n'arrive à rien. Vu le niveau de mes connaissances en VBA ce n'est du reste pas étonnant.
Sinon pour les retours à la ligne dans le texte du corps de mail vous avez une idée?
 
Re : Envoi d'une feuille "non active" par mail

Re 🙂,
As-tu testé Sheets("MaFeuille"). Activate (Remplacer MaFeuille par le nom de ta feuille) ?
Au lieu de MailTo, essaie ce code de Thierry :
Code:
' Thierry (XLD)
Dim OLApplication As Outlook.Application, OLMail As Outlook.MailItem
Set OLApplication = CreateObject("Outlook.Application")
Set OLMail = OLApplication.CreateItem(OLMailItem)
' Avec pièce jointe
If CheminDestination <> "" Then
    With OLMail
          .To = MailTo ' Destinataire
          .CC = MailCC ' Copie
          .Importance = olImportanceNormal
          .Subject = ObjetMessage ' Sujet
          .Body = CorpsMessage ' Message
          .Attachments.Add CheminDestination & NouveauNomFichier ' Pièce jointe
          .Categories = "Daily"
          .OriginatorDeliveryReportRequested = True ' Accusé de dépôt
          .ReadReceiptRequested = True ' Accusé de lecture
'          .Send '<<<<<<<<<<<<<<<Pour envoyer directement
          .Display '<<<<<<<<<<<<<Pour voir le mail avant envoi
    End With
' Sans pièce jointe
Else
    With OLMail
          .To = MailTo
          .CC = MailCC
          .Importance = olImportanceNormal
          .Subject = ObjetMessage
          .Body = CorpsMessage
'          .Attachments.Add Chemin
          .Categories = "Daily"
          .OriginatorDeliveryReportRequested = True
          .ReadReceiptRequested = True
'          .Send
          .Display
    End With
End If
Set OLApplication = Nothing
Set OLMail = Nothing
Les vbCrLf fonctionnent très bien avec. En oubliant pas bien sûr de déclarer les variables et de les renseigner
Code:
' Pour l'envoi mail
Public CorpsMessage As String, ObjetMessage As String, MailTo As String, MailCC As String, _
    Chemin As String
Bon courage 🙂
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
177
Réponses
4
Affichages
461
Retour