Envoyer par mail un seul onglet du classeur (XL ou VBA)


Il arrive parfois qu'on souhaite envoyer par mail un seul onglet d'un classeur.
Souvent, on ne souhaite pas envoyer les formules, mais seulement un tableau de valeurs (soit que les formules soient secrètes, soit qu'elles renvoient à des données inscrites dans un autre onglet).
(Dans les versions les plus récentes d'Excel, il suffit de faire Fichier / envoyer vers...)



Sans macro, il suffit de faire un clic droit sur le titre de l'onglet à envoyer, puis "déplacer ou copier" puis "Dans le classeur : (nouveau classeur)", cocher la case "Créer une copie" et cliquer sur "OK".
L'onglet est recopié dans un nouveau classeur ne comprenant qu'un seul onglet.

Pour figer les données (remplacer les formules de calcul par des valeurs), sélectionner toutes les cellules de l'onglet en cliquant à l'intersection des entêtes de lignes et de colonnes, Edition / Copier puis Edition / Collage Spécial / Valeurs.

Enfin, pour envoyer le fichier onglet, Fichier / Envoyer vers / Destinataire du message...



Pour automatiser ces opérations en VBA :

Sub envoie_une_page()
Sheets("Feuil2").Copy
Cells.Copy
Cells.PasteSpecial (xlPasteValues)
ActiveWorkbook.SendMail "toto@free.fr", "bonjour"
End Sub


Sheets("Feuil2").Copy recopie l'onglet "Feuil2" dans un nouveau classeur
Cells.Copy copie toutes les cellules de l'onglet actif (le nouvel onglet)
Cells.PasteSpecial (xlPasteValues) effectue le collage spécial (valeurs)
Et la dernière ligne envoie le nouveau fichier à toto@free.fr