Transmettre classeur actif par mail

Résolu
Bonjour à chacun,
Je souhaiterai envoyer le classeur actif (2 feuilles), lors de la validation d'une fiche de renseignements lorsque clic sur le bouton Valider saisie
L'adresse mail de l’expéditeur se trouvant en A49 et les destinataires de A51 à A55.
Je ne maîtrise pas du tout le Vba.
En vous remerciant.

https://www.cjoint.com/c/IEbnNAzV1p6

16 réponses

  1. Bonjour f894009
    Je te remercie de me répondre, mais je ne parle pas l'anglais
    Aurais-tu la gentillesse de me mettre le code Stp
    En te remerciant
    0
    1. Re,
      Outlook, pas possible de preciser des adresses expéditeurs autres que celle du compte sur le PC

      Faut passer par CDO. Ce classeur devrait vous rappeler kake chose
      https://mon-partage.fr/f/903I8aaj/

      Pour les destinataires, les mettre dans une variable avec un point-virgule+espace de separation
      0
  2. Bonjour cher ami
    Je ne me souviens pas du tout de ce classeur, certainement du à l'AVC de noël dernier, mais reçoit tous mes remerciements pour ta bonne mémoire
    Au plaisir
    0
    1. Bonjour f894009
      Dans la macro ci-dessous il y a un problème à Set Plage erreur 13
      Je te remercie de bien vouloir me corriger

      Sub Envoi_Mail()
      Dim ol As Object, myItem As Object
      Dim ListDest As String
      Set ol = CreateObject("outlook.application")
      Set myItem = ol.CreateItem(olMailItem)
      Set OutApp = CreateObject("Outlook.Application")
      Set OutMail = OutApp.CreateItem(0)
      'Propriétés de l'e-mail
      With OutMail
                Liste = ""
      'Plage Nommée "Dest"     
                Set Plage = Dest      ' ????
      'Récupération de la liste des destinataires
                For Each Cell In Plage.Cells
                     If Liste = "" Then
                         Liste = Liste & Cell
                     Else
                         Liste = Liste & ";" & Cell
                     End If
               Next Cell
      .To = Liste
      myItem.Subject = "envoi d'un fichier attaché"
      myItem.Body = "Veuillez trouver ci-joint le fichier pour mise à jour de la Base"
      'fichier en cours d'utilisation envoyé en attaché:
      myItem.Attachments.Add ActiveWorkbook.FullName
      myItem.Send
      End With
      Set ol = Nothing
      End Sub
      0
      1. Bonjour,

        Si Dest est une plage nommee, pas besoin de la transferer dans une variable

        Sub Envoi_Mail()
            Dim OutApp As Object, OutMail As Object
            Dim ListDest As String
            
            Set OutApp = CreateObject("Outlook.Application")
            Set OutMail = OutApp.CreateItem(0)
            'Propri?t?s de l'e-mail
            With OutMail
                  Liste = ""
                'Plage Nomm?e "Dest"
                'R?cup?ration de la liste des destinataires
                  For Each Cell In Range("Dest")
                       If Cell <> "" Then
                           Liste = Cell & ";" & Liste
                       End If
                 Next Cell
                .To = Liste
                .Subject = "envoi d'un fichier attach?"
                .Body = "Veuillez trouver ci-joint le fichier pour mise ? jour de la Base"
                'fichier en cours d'utilisation envoy? en attach?:
                .Attachments.Add ActiveWorkbook.FullName
                '.display
                .Send
            End With
            Set OutApp = Nothing
            Set OutMail = Nothing
        End Sub
        
        0
    2. Bonjour,
      Merci pour ta réponse, cependant ça bloque à : .Send
      0
      1. Re,

        Sur erreur ou ……..
        Parce que chez moi, ca marche
        0
    3. 0
      1. Re
        Faites une recherche sur internet
        0
    4. Re
      J'ai regardé Internet mais rien trouvé de probant
      0
      1. Bonjour,

        Vous pouvez mettre votre fichier a dispo????
        0
    5. Voici en te remerciant
      https://www.cjoint.com/c/IEekDbgLFv6
      0
      1. Bonjour,

        Chez moi, apres modif de votre code , c'est ok pour la partie Outlook: https://mon-partage.fr/f/DnQl3KTM/
        0
    6. Bonsoir f894009
      Je te prie de bien vouloir m'excuser car je m'aperçois que je me suis planté dans ma demande
      Je reviendrai vers toi lundi ou mardi car j'ai de grosses difficultés pour raisonner
      Je te remercie de ta patience et de ton indulgence
      0
      1. Désolé pour cette perte de temps mon ami
        Ce n'est pas le dossier actif que je souhaite envoyer mais "MonDossier.zip" qui se trouve sur le bureau l'écran.
        Que ce dossier soit transmis direct sans affichage de Outlook
        En te remerciant et en renouvelant mes excuses
        0
        1. Bonjour,

          en renouvelant mes excuses
          Y a pas d'lezard

          source_file = "chemin sur le disque/MonDossier.zip"
          0
          1. Re
            Je te remercie f894009
            J'ai modifié comme suit :
                    'fichier envoyé en attache :
                    'source_file = "chemin sur le disque/NouvelFiche.zip"
                    .Attachments.Add "E:\Utilisateurs\Castor\Desktop\NouvelFiche.zip"
                    '.display
                    .Send

            Mais, car il y a un mais, je ne connais pas le chemin des personnes qui enverront cette fiche, la seule chose certaine c'est que le dossier s'appellera NouvelFiche.zip
            Merci de m'éclairer
            0
            1. .Attachments.Add "C:\%userprofile%\NouvelFiche.zip"
              est surligné en jaune
              0
            2. Bonjour,

              Pas vraiment simple a faire car en plus il semblerait (vu votre code post 18) que le disque serait aussi inconnu
              Faudrait "imposer" un disque, un repertoire ou que les fichiers Excel avec le code et le zip soient dans au meme endroit: disque et repetoire
              0
          2. Bonjour f894009
            Suivant vos conseils, j'ai mis l'ensemble des fichiers dans C:\ADD\
            0
            1. Re
              Dans cette macro, le mail est envoyé deux fois, pourquoi ?
              
              Sub TransMail()
                  Dim OL As Object
                      If StrComp(Application, "Outlook", vbTextCompare) = 0 Then
                          Set OL = Application
                      Else
                          Set OL = CreateObject("outlook.application")
                      End If
              
                  Dim MESSAGE As Object
                  Dim objRecipient As Object
              
              'en LATEBINDING on doit déclarer les constantes Outlook utilisées
                  Const olFormatPlain = 1
                  Const olFormatHTML = 2
                  Const olTo = 1
                  Const olCC = 2
                  Const olBCC = 3
              
                  Set MESSAGE = OL.CreateItem(0)
                  With MESSAGE
                      .Subject = "Mise a jour Annuaire_APEM"
              
                  'Soit on ajoute un Corps en TEXTE BRUT
                  .BodyFormat = olFormatPlain
                  .Body = "Veuillez trouver ci-joint un dossier pour la mise à jour de l'annuaire." & vbCr & "Jean"
              
                      'Soit on ajoute un Corps en HTML
                      '.BodyFormat = olFormatHTML
                      '.HTMLBody = "<html><body> <font face=""arial""><p>Bonjour,</p><p>Ceci est un exemple de Message HTML</p><p>Il faut utiliser des balises HTML pour formater le texte.</p><p>En <strong>gras</strong>, <em>Italic</em>, <u>Souligné</u></p><BR><p>Je suis passé à la ligne</p><p>Voici un lien hypertexte.</p>" _
                       &                    "<a href=""mailto:Joe.User@MyCompany.com"">Joe User</a></font></body></html>"
              
              'Ajout des destinataires zone nommée : "DestMail"
              Dim cellule As Range
                  For Each cellule In Worksheets("FR").Range("DestMail")
                      If InStr(1, cellule.Value, "@") > 0 Then
                      Set objRecipient = .Recipients.Add(cellule.Value)
                          objRecipient.Type = olTo    'olBCC, olCC, olOriginator ou olTo.
                          objRecipient.Resolve
                      End If
                  Next
              'Ajout d 'une PJ
                      Dim MaPJ
                      'Nom du dossier a joindre : "NouvelFiche.zip"
                      
              Dim strFolder As String, WshShell, leFichier
              Set WshShell = CreateObject("WScript.Shell")
              strFolder = WshShell.SpecialFolders("Desktop")
              
                      MaPJ = "NouvelFiche.zip"
                      'on vérifie d'abord qu'il existe.
                      If Dir(strFolder & "\" & MaPJ) <> "" Then
                      '.Attachments.Add MaPJ  "NouvelFiche.zip"
                      .Attachments.Add (strFolder & "\" & MaPJ)
                      Else
                          MsgBox "Fichier : " & MaPJ & vbCr & "Non trouvée sur:" & vbCr & strFolder, vbCritical
                          .display
              'on affiche le mail et fin
                          End
                      End If
              'ajout pour lecture
              '        .ReadReceiptRequested = True
              
              'envoi selon adresse mail en :
                       .SentOnBehalfOfName = Worksheets("FR").Range("J13")
                      'Display   'Soit je l'affiche
                      .Send   'Soit je l'envoi
                  End With
              End Sub
              0
              1. Bonjour,

                Y a une ligne qui devrait etre en commentaire apres '.HTMLBody!!!!
                0
            2. Bonsoir
              J'ai fais :

                  'Soit on ajoute un Corps en HTML
                  '.BodyFormat = olFormatHTML
                  '.HTMLBody = "<html><body> <font face=""arial""><p>Bonjour,</p><p>Ceci est un exemple de Message HTML</p><p>Il faut utiliser des balises HTML pour formater le texte.</p><p>En <strong>gras</strong>, <em>Italic</em>, <u>Souligné</u></p><BR><p>Je suis passé à la ligne</p><p>Voici un lien hypertexte.</p>" _
                  '     &                    "<a href=""mailto:Joe.User@MyCompany.com"">Joe User</a></font></body></html>"
              
              'Destinataires de la zone nommée : "DestMail"

              Mais pareil 2 mail sont envoyés, vraiment mystérieux
              0
              1. Bonjour,

                Ben, chez moi, une seule fois. Par hazard, la procedure ne serait pas appelee deux fois!!!!
                0
            3. J'ai trouvé, il y a 2 fois transmail 1-en compresser 2-en envoyer
              Merci à toi et bonne continuation
              0