IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Word Discussion :

Envoi du document actif en PJ [WD-2010]


Sujet :

VBA Word

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 8
    Points : 4
    Points
    4
    Par défaut Envoi du document actif en PJ
    Bonjour,

    Je souhaite envoyer un document word via le répertoire CDO (en utilisant Gmail). L'objectif est de pouvoir utiliser cette macro sur n'importe quelle ordinateur car le document sera envoyé à beaucoup de monde.
    Je n'arrive pas à envoyer ce document en PJ, et les solutions proposées ne sont possibles qu'avec des documents différents du document actif. Si je supprime la ligne "pièce jointe", le code fonctionne mais et un message...
    Je débute en VBA, et ne suis pas très doué !

    Voici mon code (récupéré ailleurs et modifié) avec les essais que j'ai déjà tentés :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
     
    Private Sub Bt_Envoyer_Mail_Click()
     
        Dim NewMail As CDO.Message
     
        Set NewMail = New CDO.Message
     
        'Enable SSL Authentication
        NewMail.Configuration.Fields.Item _
        ("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
     
        'Make SMTP authentication Enabled=true (1)
     
        NewMail.Configuration.Fields.Item _
        ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
     
        'Set the SMTP server and port Details
        'To get these details you can get on Settings Page of your Gmail Account
     
        NewMail.Configuration.Fields.Item _
        ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com"
     
        NewMail.Configuration.Fields.Item _
        ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
     
        NewMail.Configuration.Fields.Item _
        ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
     
        'Set your credentials of your Gmail Account
     
        NewMail.Configuration.Fields.Item _
        ("http://schemas.microsoft.com/cdo/configuration/sendusername") = "adresse gmail"
     
        NewMail.Configuration.Fields.Item _
        ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "code perso"
     
        'Update the configuration fields
        NewMail.Configuration.Fields.Update
     
        'Set All Email Properties
     
     
        With NewMail
          .Subject = "Test"
          .From = "adresse gmail"
          .To = "destinataire"
          .CC = ""
          .BCC = ""
          .textbody = "test gmail"
          '.AddAttachment ThisDocument.Path & "\" & ThisDocument.Name
          '.AddAttachment = ActiveDocument
          '.AddAttachment ActiveDocument.FullName
          '.Attachments.Add Doc.FullName
     
        End With
     
        NewMail.Send
        MsgBox ("Mail envoyé avec succès")
     
        'Set the NewMail Variable to Nothing
        Set NewMail = Nothing
     
    End Sub
    Je vous remercie par avance de votre aide !

  2. #2
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Bien que ce ne soit pas du Word.

    Il faut que le document soit sauvegardé, sans sauvegarde, il n'est pas possible de le joindre en tant que fichier.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  3. #3
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Salut Heureux Oli,

    Merci pour la rapidité de ta réponse !
    " ce n'est pas du word" : désolé si je me suis trompé de rubrique. Je peux mettre ce message ailleurs ? (c'est pourtant bien un document word)

    Pour résoudre mon problème, il faut que j'enregistre le fichier sous ? Si oui, quel chemin dois je spécifier sachant que n'importe quel utilisateur y aura accès, avec les droits administrateurs ou pas. Je ne peux donc pas mettre le code suivant car un message d'erreur apparait (impossible d'enregistrer, vérifié que le disque n'est pas plein ou protégé)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    Sub enregist()
     
    ChangeFileOpenDirectory "C:\"
    ActiveDocument.SaveAs FileName:="doc_temporaire.docm"
     
    End Sub
    De plus, je souhaite que le fichier copié ne se conserve pas.

    Bref, je suis pénible ! Désolé de t’embêter, mais je galère vraiment !!

  4. #4
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Il faut le sauver dans un dossier temporaire et lorsque le traitement est terminé, tu dois le supprimer si tu ne souhaites pas le garder. Comme tu as le chemin complet.

    Par contre, pour sauver un document ou ouvrir un document , il n'est pas utile d'utiliser le ChangeFileOpenDirectory

    Si tu renseignes le chemin complet dans le SaveAs c'est pareil, mais sans perturber l'utilisateur.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  5. #5
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Merci beaucoup pour ton aide ! Après de nombreux essais, voici le code que j'ai pu construire et qui fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
     
    Private Sub Bt_Envoyer_Mail_Click()
     
    Dim NewMail As CDO.Message
     
    'création d'1 copie PDF sur le bureau
    ActiveDocument.ExportAsFixedFormat OutputFileName:=Environ$("USERPROFILE") & "\Bureau\testpdf.pdf", _
    ExportFormat:=wdExportFormatPDF, OpenAfterExport:=False, OptimizeFor:= _
    wdExportOptimizeForPrint, Range:=wdExportAllDocument, From:=1, To:=1, _
    Item:=wdExportDocumentContent, IncludeDocProps:=True, KeepIRM:=True, _
    CreateBookmarks:=wdExportCreateNoBookmarks, DocStructureTags:=True, _
    BitmapMissingFonts:=True, UseISO19005_1:=False
     
    'MsgBox "Une copie PDF a été créée sur votre bureau..." & Chr(10) & "Merci de patienter :" & Chr(10) & "elle est en cours de transfert vers xxxxxx"
     
        Set NewMail = New CDO.Message
     
        'Enable SSL Authentication
        NewMail.Configuration.Fields.Item _
        ("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
     
        'Make SMTP authentication Enabled=true (1)
     
        NewMail.Configuration.Fields.Item _
        ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
     
        'Set the SMTP server and port Details
        'To get these details you can get on Settings Page of your Gmail Account
     
        NewMail.Configuration.Fields.Item _
        ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com"
     
        NewMail.Configuration.Fields.Item _
        ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
     
        NewMail.Configuration.Fields.Item _
        ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
     
        'Set your credentials of your Gmail Account
     
        NewMail.Configuration.Fields.Item _
        ("http://schemas.microsoft.com/cdo/configuration/sendusername") = "xxxxxxxxxxx@xxxx"
     
        NewMail.Configuration.Fields.Item _
        ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "xxxxxxx"
     
        NewMail.Configuration.Fields.Update
     
        'Set All Email Properties
     
        With NewMail
          .Subject = "xxxx"
          .From = "xxx"
          .To = "xxx"
          .CC = "xxxxxx"
          .BCC = "xxxxxxx"
          .textbody = "xxxxxx"
          .AddAttachment Environ$("USERPROFILE") & "\Bureau\testpdf.pdf"
     
        End With
     
        NewMail.Send
        MsgBox ("Le formulaire a été envoyé")
     
        'Set the NewMail Variable to Nothing
        Set NewMail = Nothing
     
    End Sub
    J'ai eu du mal à créer une copie en raison des droits d'utilisateurs. J'ai donc fait une copie en utilisant un chemin variable (userprofil). Le pdf peut donc s'enregistrer sur n'importe quel PC, avec n'importe quelle utilisateur. Et le document original est ainsi envoyé en PJ ....

    Bonne journée à tous !

    N'hésitez pas à me signaler si vous constatez des erreurs ou des améliorations !!!

    Je mets quand même résolu car pour moi, ça fonctionne...

  6. #6
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Une dernière chose : le processus est assez long... Si quelqu'un à une solution pour raccourcir le temps, qu'il n'hésite pas !

  7. #7
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    C'est inhérent à la transformation.
    Sans envoyeer un document, ça prend du temps pour le transformer en PDF.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Imprimer le document actif dans une appli MDI
    Par Kemanke dans le forum MFC
    Réponses: 2
    Dernier message: 15/05/2007, 12h03
  2. [VBA-W]Envoyer le document actif par mail
    Par zemeilleurofgreg dans le forum VBA Word
    Réponses: 6
    Dernier message: 13/04/2006, 11h59
  3. [Système] Remplacement texte dans document actif
    Par tom06440 dans le forum Langage
    Réponses: 5
    Dernier message: 08/01/2006, 11h43
  4. Réponses: 7
    Dernier message: 31/08/2005, 14h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo