Envoi par mail d'une feuille sélectionnée à partir

  • Initiateur de la discussion Initiateur de la discussion Jean-Pierre
  • Date de début Date de début

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 !

J

Jean-Pierre

Guest
Bonjour à tous, bonjour le forum,

La macro suivante me permet d'envoyer rapidement une ou plusieurs feuilles sélectionnées par mail. Elle fonctionne à merveille. Le problème c'est que je l'ai enregistrée dans mon classeur personnel et quand je l' éxecute c'est la feuille active du classeur personnel qui est sélectionnée et pas la feuille que je souhaite envoyer. Qui peux me dire comment modifier cette macro pour obtenir l'envoi de la feuille désirée et non la feuille du classeur perso.


Sub MacroMail()

ThisWorkbook.Windows(1).SelectedSheets.Copy
AccuseReception = True
Sujet = 'Titre au choix'
ActiveWorkbook.SendMail (''), Sujet, AccuseReception
ActiveWorkbook.Close False

End Sub

Merci à tous
 
Bonjour

Tu peux le faire a l'aide de boucle basé sur le nombre de fichier excel ouvert, qui vont etre liste dans un listbox par leur nom de fichier. Une fois le choix de l'utilisateur fait, tu peux refaire le meme principe pour que l'utilisateur face le choix de l'onglet ou feuille désiré.

Tu dois d'abord te faire un ' Userform ' ou tu insere un ' ListBox '
Ensuite tu copie ces deux procédures (*fonction*):

Ex:

Private Sub Copy_Liste()
Dim bytNbw As Byte, isheet As Byte, iWorkbook

With UserForm1
For bytNbw = 1 To Workbooks.Count
.ListBox1.AddItem Workbooks(bytNbw).Name
Next bytNbw
.Show
iWorkbook = Boucle_ListeBox ' Vous avez le numero du fichier excel
For bytNbw = 1 To Workbooks(isheet).Worksheets.Count
.ListBox1.AddItem Workbooks(isheet).Worksheets(bytNbw).Name
Next bytNbw
.Show
isheet = Boucle_ListeBox ' Vous avez le numero de la feuille
End With
End Sub

Public Function Boucle_ListeBox()
Dim bytNbw As Integer

With UserForm1
For bytNbw = 0 To .ListBox1.ListCount - 1
If .ListBox1.Selected(bytNbw) = True Then
Boucle_ListeBox = bytNbw + 1
Exit For
End If
Next bytNbw
For bytNbw = .ListBox1.ListCount - 1 To 0 Step -1
.ListBox1.RemoveItem (bytNbw)
Next bytNbw
End With
End Function


Philippe
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
3
Affichages
3 K
E
Réponses
1
Affichages
1 K
S
Réponses
6
Affichages
2 K
soNZOOO
S
M
Réponses
0
Affichages
1 K
M
Retour