Envoyer seulement 1 feuille !

Résolu
Bonjour,

J'ai cherché sur bcp de discussions la réponse mais je ne l'ai jamais trouvée, pouvez vous m'expliquer comment dois-je faire pour n'envoyer qu'une feuille ou deux de mon classeur avec cette macro :

Sub EnvoiMail()
Workbooks("Classeur2.1").SendMail Recipients:=[A1].Value, _
Subject:="envoie dossier", _
ReturnReceipt:=True
End Sub

Il doit y avoir une écriture spécifique pour mentionner seulement une feuillle au lieu du "classeur2.1"

Merci à tous

27 réponses

Résumé de la discussion

La problématique centrale porte sur comment envoyer uniquement une feuille d'un classeur Excel via une macro, sans joindre l'ensemble du classeur et avec la possibilité d'inclure le destinataire et le sujet dynamiquement. Parmi les solutions, il est suggéré de copier la feuille active dans un nouveau classeur puis d'envoyer ce classeur via SendMail, ou d'adresser une macro qui cible explicitement une feuille nommée. Des exemples montrent aussi l'utilisation d ActiveSheet.Copy avant SendMail pour attacher uniquement la feuille, et des variantes où la pièce jointe et le destinataire sont définis dynamiquement. Certaines réponses évoquent aussi des limites comme Excel générant malgré tout un classeur lors de l'envoi et des ajustements nécessaires pour adresser les adresses successives dans un menu déroulant.

Bobot (l’IA à votre service)
  1. RE,

    Je suis pas mal pris en ce moment, récupéres le fichier, j'ai agrandi deux de tes boutons pour les assocer à deux codes Envoi_1 et Envoi_mail
    dans chaque code tu trouveras une série de x
    "xxxx.xxxxxx@xxxx.xxx"
    remplace les par une adresse mail valide entre guillemets

    http://cjoint.com/?1dzthVauUjW

    A+
    Mike-31

    Une période d'échec est un moment rêvé pour semer les graines du savoir.
    0
    1. Merci pour le lien je vais regarder dis moi je fais juste une parenthèse comment je fais sur cette macro pour supprimer l'ajout d'une pièce joite et ajouter un corps de message ?

      Sub Macro1()
      Workbooks("Classeur3.1").SendMail Recipients:="", _
      Subject:="Rappel ", _
      ReturnReceipt:=True
      End Sub

      merci
      0
      1. Re,

        Je ne sais pas si c'est la fin de semaine, mais je ne vois pas du tout ce que tu veux dire ! sinon je peux te l'envoyer sur ton mail si tu veux (donne moi ton adresse).

        Dsl
        0
        1. https://www.cjoint.com/?0dzlhDaSYn voila je crois que c'est bon je t'ai mit le classeur
          Mince il faut Java script je peux pas l'activer... je peux te l'envoyer par mail ?
          0
        2. c'est bon j'ai résolu l'affaire !
          0
      2. Re,

        Tu clic sur ce lien, Parcourir pour sélectionner le fichier à envoyer/Créer le lien et colle le lien généré dans un post
        0
        1. Comment fait on pour envoyer un document dans ce forum ?
          0
          1. Re,

            tu peux nous poster ton fichier sans notes confidentielles que l'on voit sa structure, mais si on envoi une feuille Excel en pièce jointe, Excel génère automatiquement un classeur avec une ou plusieurs feuilles, là n'est pas le problème.
            Par contre si tu veux que le classeur se nomme Feuille 2 ou autrement, c'est possible mais le code sera différent et plus complexe
            0
            1. Oui voilà c'est ça par contre je souhaite que lorsque la fenetre s'ouvre il y a déjà la feuille 2 de mon classeure en pièce jointe et seulrment la feuille2 !
              0
              1. Re,

                Si je comprends bien, tu veux que la fenêtre d'envoi s'ouvre sans destinataire

                Private Sub CommandButton1_Click()
                Sheets("Feuil2").Copy
                ActiveWorkbook.SendMail Recipients:="", _
                Subject:="envoie dossier", _
                ReturnReceipt:=True
                ActiveWorkbook.Close False
                Application.DisplayAlerts = False
                [F4].ClearContents
                End Sub
                0
                1. re, je viens de voir ton document ça ressemble fortement à ce que je te demande et je t'en remercie.

                  J'ai du changer un peu mon idée de base ( la simplifier), désormais j'appuye sur le bouton "envoyer" situé feuille1.
                  Ensuite la fenetre outlook message s'ouvre (sans destinataire) avec en pièce jointe la feuille 2 du classeur.

                  Tu as compris ?
                  0
                  1. Re,

                    sur le lien ci dessous deux exemples feuille1 et 3, le code envoi la feuille 2 soit depuis le feuille 1 ou 3 mais peut être envoyé directement depuis la feuille 2 en modifiant le code

                    http://cjoint.com/?1dyktvFrLZn
                    0
                    1. tu as raison, je débute dans la macro je manque de précision.

                      Oublions l'adresse mail ! j'ai une maco sur la feuille 1 qui créer un message et insère une pièce jointe. Idéalement cette pièce jointe est la feuille 2 de mon classeur cependant je n'arrive pas à envoyer que la feuille 2, donc j'envoie tout le classeur à chaque fois.

                      C'est plus compéhensible ??
                      0
                      1. Re,

                        Avec le VBA, il faut être très précis,

                        le bouton de commande macro est sur quelle feuille (donne le numéro ou le nom)

                        l'adresse mail en F4 est sur quelle feuille (donne le numéro ou le nom) (éventuellement, tu peux nommer la plage ex. Adress)

                        pour envoyer la feuille 2 ou tout autre feuille n'est pas un problème
                        0
                        1. Merci, tu as l'air d'avoir trouvé la solution, mais j'aimerai comprendre la macro,

                          Private Sub CommandButton1_Click()
                          ActiveSheet.Copy
                          ActiveWorkbook.SendMail Recipients:=[F4].Value, _
                          Subject:="envoie dossier", _
                          ReturnReceipt:=True
                          ActiveWorkbook.Close False
                          Application.DisplayAlerts = False
                          [F4].ClearContents
                          End Sub

                          Parce ce que dans ton exemple tu envoie une valeur de la feuille1 mais moi je cherche envoie une toute la feuill2 (puisque j'aurai une grande plage de valeur)
                          0
                          1. Re,

                            Vite fait, deux exemples feuille 1 et 2

                            http://cjoint.com/?1dxwV7vYMGH
                            0
                            1. Re,

                              je suis pris pour l'après midi, dès ce soir je te fais un modéle
                              0
                              1. non ca ne marche, le mail est toujours envoyé au premier contact ( [f4] ) de la formule.

                                tu comprends mon problème ?

                                Sub EnvoiMail()
                                Workbooks("Classeur2.1").SendMail Recipients:=[F4].Value, _
                                Subject:="envoie dossier", _
                                ReturnReceipt:=True
                                End Sub

                                voila ma macro
                                0
                                1. Re,

                                  Le code à planté parce qu'une erreur s'est produite causé certainement par un erreur lors de la modification. pour réactiver le code deux solutions

                                  redémarre Excel
                                  ou
                                  dans le visual basic editor fais
                                  Exécution/Réinitialiser

                                  si ton code plante poste ta macro ou le fichier sinon je te ferai un modéle
                                  0
                                  1. Bonjour j'ai modidié ma macro en rejoutant ce que tu m'a mis mais un message d'erreur s'affiche " impossible d'executer le code en mode arret "
                                    0
                                    1. Merci, je suis plus à mon bureau j'essayerai demain je te remercie
                                      0
                                      • 1
                                      • 2