Transmettre classeur actif par mail

Résolu
jean300 Messages postés 382 Statut Membre -  
jean300 Messages postés 382 Statut Membre -
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. jean300 Messages postés 382 Statut Membre 14
     
    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. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      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. jean300 Messages postés 382 Statut Membre 14
     
    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
  3. jean300 Messages postés 382 Statut Membre 14
     
    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. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      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
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. jean300 Messages postés 382 Statut Membre 14
     
    Bonjour,
    Merci pour ta réponse, cependant ça bloque à : .Send
    0
    1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Re,

      Sur erreur ou ……..
      Parce que chez moi, ca marche
      0
  6. jean300 Messages postés 382 Statut Membre 14
     
    0
    1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Re
      Faites une recherche sur internet
      0
  7. jean300 Messages postés 382 Statut Membre 14
     
    Re
    J'ai regardé Internet mais rien trouvé de probant
    0
    1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Bonjour,

      Vous pouvez mettre votre fichier a dispo????
      0
  8. jean300 Messages postés 382 Statut Membre 14
     
    Voici en te remerciant
    https://www.cjoint.com/c/IEekDbgLFv6
    0
    1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Bonjour,

      Chez moi, apres modif de votre code , c'est ok pour la partie Outlook: https://mon-partage.fr/f/DnQl3KTM/
      0
  9. jean300 Messages postés 382 Statut Membre 14
     
    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
  10. jean300 Messages postés 382 Statut Membre 14
     
    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
  11. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    en renouvelant mes excuses
    Y a pas d'lezard

    source_file = "chemin sur le disque/MonDossier.zip"
    0
  12. jean300 Messages postés 382 Statut Membre 14
     
    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. jean300 Messages postés 382 Statut Membre 14
       
      .Attachments.Add "C:\%userprofile%\NouvelFiche.zip"
      est surligné en jaune
      0
    2. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      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
  13. jean300 Messages postés 382 Statut Membre 14
     
    Bonjour f894009
    Suivant vos conseils, j'ai mis l'ensemble des fichiers dans C:\ADD\
    0
  14. jean300 Messages postés 382 Statut Membre 14
     
    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. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Bonjour,

      Y a une ligne qui devrait etre en commentaire apres '.HTMLBody!!!!
      0
  15. jean300 Messages postés 382 Statut Membre 14
     
    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. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Bonjour,

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