Se connecter avec
S'enregistrer | Connectez-vous

Envoyer par mail un onglet

Dernière réponse : dans Programmation

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..

Citation :
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!

Autres pages sur : envoyer mail onglet

Lassé par la pub ? Créez un compte

Meilleure solution

Expert Programmation

Salut,

  1. Sheets("tafeuille" ).Select
  2. 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 !

    1. Dim feuille_a_copier As Worksheet
    2. Dim classeur_a_expedier As Workbook
    3.  
    4. Set feuille_a_copier = ActiveSheet
    5. Set classeur_a_expedier = Workbooks.Add
    6. feuille_a_copier.Copy Before:=classeur_a_expedier.Sheets(1)
    7.  
    8. ' // Notre feuille est la première du nouveau classeur.
    9. ' // On supprime la deuxième tant qu'il en reste une.
    10. Do While classeur_a_expedier.Sheets.Count > 1
    11. classeur_a_expedier.Sheets(2)
    12. Loop
    13.  
    14. classeur_a_expedier.Worksheets(1).Name = "FT_Validés"
    15. classeur_a_expedier.SendMail "destinataire@mail.com", "FT Validés"
    16. classeur_a_expedier.Close SaveChanges:=False

    essai plutot ca :
    1. Sub EnvoiMail()
    2. Workbooks("tonclasseur").SendMail Recipients:="tonmail@mail.com", _
    3. Subject:="intitulé du mail", _
    4. ReturnReceipt:=True
    5. End Sub


    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 ;) 

    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?

    ton code:
    1. Private Sub Envoyer_Mail_Click()
    2. Dim FT_Validés As String
    3. ActiveSheet.Copy
    4. ActiveWorkbook.SaveAs Filename:=FT_Validés
    5. ActiveWorkbook.SendMail Recipients:="mon adresse mail"
    6. ActiveWorkbook.Close savechanges:=False
    7. MsgBox ("l'onglet est pret à être envoyé" )
    8. End Sub



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


    Je ne suis encore une fois pas sur de moi car je ne l'ai pas testé... dis moi :) 
    Lassé par la pub ? Créez un compte