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,

    Pourquoi ouvres tu plusieurs discussions sur le même sujet, reste sur celui ouvert précédemment
    A+
    Mike-31

    Une période d'échec est un moment rêvé pour semer les graines du savoir.
    0
    1. Re,

      comme tu as fermé l'autre discussion voilà le code pour envoyer la feuille active par mail

      Sub EnvoiMail()
      ActiveSheet.Copy
      ActiveWorkbook.SendMail Recipients:=[A1].Value, _
      Subject:="envoie dossier", _
      ReturnReceipt:=True
      End Sub
      0
      1. ActiveSheet.Copy
        ActiveWorkbook.SendMail Recipients:=[A1].Value, _

        Re,

        [A1] représente la feuil 1 ??
        0
        1. Je suis desolé de te poser tant de question mais merci bcp, ta solution pour le problème precedent est bonne mais je rencontre un petit problème auquel je n'avais pas pensé...

          mon menu déroulement marche trés bien, et l'envoie se fait à la bonne adresse pour la première ligne cependant à la ligne suivante, si je change d'adresse le mail s'envoie à l'adresse précèdente puisque la formule est figée sur la première adresse.

          tu comprends ?
          0
          1. Re,

            tu dois avoir chevauchement de données,

            ta liste d'adresses est dans quelle plage !
            ta liste déroulante dans quelle cellule !
            0
            1. j'ai tout mis sur la meme page, mes adresses sont cellules J12 à J14 et ma liste déroulante est de f4 à f6 mais ca va aller bcp plus loin.

              C'est quoi chevauchement de donnée ?
              0
              1. Re,

                Ta liste d'adresse en J12 à J14 ok, (cela fait que trois adresses)

                ta liste déroulante doit être que dans une cellule exemple F4

                et donc ton code doit faire référence à la cellule F4

                Sub EnvoiMail()
                ActiveSheet.Copy
                ActiveWorkbook.SendMail Recipients:=[F4].Value, _
                Subject:="envoie dossier", _
                ReturnReceipt:=True
                End Sub
                0
                1. Merci, je suis plus à mon bureau j'essayerai demain je te remercie
                  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. 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. 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,

                          je suis pris pour l'après midi, dès ce soir je te fais un modéle
                          0
                          1. Re,

                            Vite fait, deux exemples feuille 1 et 2

                            http://cjoint.com/?1dxwV7vYMGH
                            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,

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

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

                                        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
                                        • 2