Résolu Envoyer par mail un onglet

chouki60

Nouveau membre
Bonjour à tous,

J'essaye de coder, c'est tout nouveau pour moi donc j'ai besoin de votre aide.
Ce que j'essaye de faire dans ce code c'est envoyer par mail l'onglet qui est actif dans mon classeur.
Voici mon code, mais ça ne fonctionne pas..

Private Sub Envoyer_Mail_Click()
Dim FT_Validés As String
ActiveSheet.Copy
ActiveWorkbook.SaveAs Filename:=FT_Validés
ActiveWorkbook.SendMail Recipients:="mon adresse mail"
ActiveWorkbook.Close savechanges:=False
MsgBox ("l'onglet est pret à être envoyé")
End Sub

Merci de votre aide!
 

la_lvlouche

Grand Maître
essai plutot ca :
[cpp]Sub EnvoiMail()
Workbooks("tonclasseur").SendMail Recipients:="tonmail@mail.com", _
Subject:="intitulé du mail", _
ReturnReceipt:=True
End Sub[/cpp]

Ca t'envoi donc le classeur "tonclasseur" a l'adresse tonmail@mail.com
Dis moi si cela fonctionne je ne suis pas un pro mais je peux essayer de t'aider au mieu ;)
 

chouki60

Nouveau membre
Merci beaucoup pour ta réponse.

En fait mon code marche, il envoie bien l'onglet par mail.

J'ai rajouté cette ligne "ActiveWorkbook.SaveAs Filename:=FT_Validés" pour qu'en plus je puisse renommer le fichier avant de l'envoyer. Et c'est ici que tout ce complique..

Sais-tu comment je peux faire?
 

la_lvlouche

Grand Maître
ton code:
[cpp]Private Sub Envoyer_Mail_Click()
Dim FT_Validés As String
ActiveSheet.Copy
ActiveWorkbook.SaveAs Filename:=FT_Validés
ActiveWorkbook.SendMail Recipients:="mon adresse mail"
ActiveWorkbook.Close savechanges:=False
MsgBox ("l'onglet est pret à être envoyé" )
End Sub[/cpp]


mon code:
[cpp]Private Sub Envoyer_Mail_Click ()
Dim FT_Valides As String, Dest As String, Sujet As String 'eviter les accents en programmation
Sheets("tafeuille").Select 'Saisir le nom exact la feuille que tu veux copier et envoyer
ActiveSheet.Copy 'crée une copie de la feuille active
ActiveWorkbook.SaveAs Filename:=FT_Validés
Sheets("FT_Validés").Select
Dest = "tonmail@mail.com" 'Saisir l'adresse mail
Sujet = "le sujet qui va bien"
ActiveWorkbook.SendMail Dest, Sujet, True
ActiveWorkbook.Close 'ferme la copie de la feuille active
Application.DisplayAlerts = True
End Sub [/cpp]

Je ne suis encore une fois pas sur de moi car je ne l'ai pas testé... dis moi :)
 

zeb

Modérateur
Et l'indentation, bordel [:zeb:4] <-- Programmeur pas content (attention, il est modo, aussi :o )
 

zeb

Modérateur
Meilleure réponse
Salut,

Code:
Sheets("tafeuille" ).Select 
ActiveSheet.Copy 'crée une copie de la feuille active
Argggg !!!!! x_x
Pourquoi sélectionner la feuille (c'est nul), puis ensuite la mettre dans le presse-papier (c'est mal - de quel droit t'arroges-tu le pouvoir de changer le contenu du presse-papier ?)

Ensuite, on jongle avec les feuilles et les classeurs ouverts ou pas, actifs ou pas. C'est très risqué.

Voilà ce que je propose :
■ Définir la feuille à envoyer. On peut dire que c'est la feuille courante, mais c'est parce qu'on n'a pas encore commencé à en ouvrir/fermer...
■ Créer un classeur vierge
■ Y copier notre feuille
■ Virer les autres feuilles inutiles
■ Nommer notre feuille comme on veut
■ Expédier le classeur
■ Fermer le classeur

Allez !

Code:
Dim feuille_a_copier As Worksheet
Dim classeur_a_expedier As Workbook

Set feuille_a_copier = ActiveSheet
Set classeur_a_expedier = Workbooks.Add 
feuille_a_copier.Copy Before:=classeur_a_expedier.Sheets(1)

' // Notre feuille est la première du nouveau classeur.
' // On supprime la deuxième tant qu'il en reste une.
Do While classeur_a_expedier.Sheets.Count > 1
	classeur_a_expedier.Sheets(2)
Loop

classeur_a_expedier.Worksheets(1).Name = "FT_Validés"
classeur_a_expedier.SendMail "destinataire@mail.com", "FT Validés"
classeur_a_expedier.Close SaveChanges:=False
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 098
Messages
6 717 063
Membres
1 586 286
Dernier membre
petitangebleu1977
Partager cette page
Haut