VBA envoyer un onglet par mail

Arpette

XLDnaute Impliqué
Bonjour à toutes et à tous,
Je souhaiterais avec click un l'onglet ou un bouton, ouvrir ma boite mail et que ça me rattache cet onglet. J'ai trouvé un code qui envoi un mail et l'onglet, mais le problème est que l'adresse est dans le code, donc toujours la même. Moi je veux ouvir ma boite mail.
Merci de votre aide.
@+
 

Arpette

XLDnaute Impliqué
Re : VBA envoyer un onglet par mail

Bonsoir à tous,
j'ai suivi le conseil d'Hasco, je n'ai pas trouvé ce que je voulais, mais j'ai détourné le problème en m'envoyant le mail à ma propre adresse et ensuite je le fais suivre à qui je veux.
Mon deuxième problème, quand j'envoie la feuille active, je souhaiterais quelle contienne aucune macro. Voici mon code
Merci de votre aide
@+
Code:
Sub envoiMailEtFeuilleActive()
    ActiveSheet.Copy ' crée une copie de la feuille active
    Application.ActivateMicrosoftApp (xlMicrosoftMail)
    ActiveWorkbook.SendMail Recipients:="arpette@free.fr", Subject:="Devis" 'envoi Mail
    Application.DisplayAlerts = False
    ActiveWorkbook.Close ' supprime le classeur créé après l'envoi
    Application.DisplayAlerts = True
End Sub
 

Arpette

XLDnaute Impliqué
Re : VBA envoyer un onglet par mail

Rebonsoir, je vois que ce n'est pas facile ou impossible. Moi je pense que c'est possible, je vais faire un petit dodo.... peut-être que demain matin, j'aurais trouvé une solution à mon problème...
Bonne nuit les petits...
 

Victor21

XLDnaute Barbatruc
Re : VBA envoyer un onglet par mail

Bonsoir, Arpette

Ce code sauvegarde une feuille en format .txt :
HTML:
Sub SauveEnTexte()
    'Enregistre Saisies en .xls sous format texte dans un sous-répertoire "Sauvegardes"

    Application.ScreenUpdating = False
    Sheets("Saisies").Select
    Sheets("Saisies").Copy
    Application.DisplayAlerts = False
    ActiveWorkbook.SaveAs Filename:= _
                                    ThisWorkbook.Path & "\Sauvegardes\" & [I1] & ".xls", _
                          FileFormat:=xlText, CreateBackup:=False
    ActiveWorkbook.Close
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
    MsgBox "Les données ont été sauvegardées.", , "PB...                   Sauvegarde"
End Sub
Peut-être pouvez-vous vous en inspirer pour l'inclure dans votre code avant Application.Activate.
A voir s'il y a un XlFileFormat qui conviendrait, parce que xlText ne conservera pas les mises en forme.
Créer auparavant un sous-répertoire "Sauvegardes" dans le répertoire où se trouve votre fichier.
 

Arpette

XLDnaute Impliqué
Re : VBA envoyer un onglet par mail

Bonsoir à tous, j'ai essayé d'imbriquer le code de Patrick, mais ça ne fonctionne pas.
Quelqu'un aurait-il une solution pour supprimer le code VB qui se trouve dans ma feuille rattachée.
Merci pour votre aide.
@+
 

kiki29

XLDnaute Barbatruc
Re : VBA envoyer un onglet par mail

Salut, via Google
ou aussi également Example Code for sending mail from Excel

sinon un bout de code minimaliste
Code:
Option Explicit

Sub Envoi_CDO()
Dim CdoMessage As Object
Dim Fichier As String
    Fichier = ThisWorkbook.Path & "\" & "Essai.pdf"
    Set CdoMessage = CreateObject("CDO.Message" )
    With CdoMessage
        .Subject = "Exemple"
        .From = "xxxxx.fr"
        .To = "yyyyy.fr"
        .TextBody = "Texte dans le corps de message"
        .AddAttachment Fichier
        .Send
    End With
   
    Set CdoMessage = Nothing
   
End Sub
 

Arpette

XLDnaute Impliqué
Re : VBA envoyer un onglet par mail

Bonsoir Kiki, merci pour ton code mais j'ai écrit comme ceci, ça fonctionne. Mon problème est que souhaiterais supprmer dans le fichier attaché le bouton qui lance le module. Si tu as une idée
Merci de ton aide.
@+

Code:
Sub EnvoiFeuilleMail()
  'copie la feuille active
    ActiveSheet.Copy
    Cells.Copy
    Cells.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
      With ActiveWorkbook.VBProject.VBComponents(ActiveSheet.CodeName).CodeModule
      .DeleteLines 1, .CountOfLines
      End With
    Application.DisplayAlerts = True
    'Envoi le classeur créé par mail
    ActiveWorkbook.SendMail "arpette@free.fr", "Devis "
    'Ferme sans sauver
    ActiveWorkbook.Close False
End Sub
 

Arpette

XLDnaute Impliqué
Re : VBA envoyer un onglet par mail

Re, merci kiki ça fonctionne je n'ai plus bouton dans mon mail et plus de macro. Maintenant je souhaiterais à l'envoi du mail, au lieu d'avoir classeur??.xls avoir le non de ma feuille ex :Devis.xls ou Facture.xls.
Merci de ton aide.
@+

Code:
Sub EnvoiFeuilleMail()
Application.ScreenUpdating = False
  'copie la feuille active
    ActiveSheet.Copy
    'supprime le bouton
    ActiveSheet.Shapes("Bouton 12").Delete
    Cells.Copy
    Cells.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Cells(21, 1).Select
      With ActiveWorkbook.VBProject.VBComponents(ActiveSheet.CodeName).CodeModule
      .DeleteLines 1, .CountOfLines
      End With
    Application.DisplayAlerts = True
    'Envoi le classeur créé par mail
[COLOR="red"]'C'est comme ici je souhaiterais choisir si il s'agit d'une facture ou d'un devis    [/COLOR]
ActiveWorkbook.SendMail "arpette@free.fr", "Devis "
    'Ferme sans sauver
    ActiveWorkbook.Close False
Application.ScreenUpdating = True
End Sub
 

kiki29

XLDnaute Barbatruc
Re : VBA envoyer un onglet par mail

Re,un essai vite fait via une UserForm à toi de l'adapter à ton contexte
sinon on pourrait passer par une MsgBox , mais la personnalisation n'est pas permise, à toi de voir
 

Pièces jointes

  • Envoi.zip
    11.4 KB · Affichages: 105
  • Envoi.zip
    11.4 KB · Affichages: 97
  • Envoi.zip
    11.4 KB · Affichages: 99
Dernière édition:

Discussions similaires

Réponses
2
Affichages
233
Réponses
1
Affichages
109
Compte Supprimé 979
C
Réponses
12
Affichages
242
Réponses
1
Affichages
247
Compte Supprimé 979
C

Statistiques des forums

Discussions
312 198
Messages
2 086 153
Membres
103 137
dernier inscrit
Billly