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

Macros et VBA Excel Discussion :

Problème de sauvegarde Word et Pdf depuis macro excel [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Lycéen
    Inscrit en
    Novembre 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2014
    Messages : 8
    Par défaut Problème de sauvegarde Word et Pdf depuis macro excel
    Bonjour,

    Je débute dans le VBA et je coince depuis un petit bout de temps sur la fin de ma macro :
    J'ai un document word de référence dans lequel j'intègre les données d'une feuille excel via les signets.
    Je souhaite conserver le document word original et enregistrer la version modifiée séparément (en word et en pdf).
    Les titres de ces nouveaux fichiers sont identiques entre eux et j'aimerais intégrer dedans des informations issues des cellules de l'excel.

    Mais j'ai un message d'erreur vide au moment de l'enregistrement. Je n'ai pas réussi à faire une sauvegarde en pdf simple malgré les différents posts du forum.
    Pouvez-vous m'aider ? (certaines explications dans mon code sont très simplistes et s'adressent à des utilisateurs sans expérience si des modifications devaient être apportées). Merci !

    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
    Sub creationcertifdestru()
        Dim WordApp As Word.Application
        Dim WordDoc As Word.Document
        Dim A As String, B As String
        Dim i As Byte
     
        A = ActiveWorkbook.Path & "\Certif Destruction vierge avec signature - copie" 'mettre le nom exact du fichier vierge, ce fichier doit être placé dans le même répertoire que le fichier excel où la macro est présente
        B = ActiveWorkbook.Path & "\certificat de destruction - " & Range("G2").Value & " " & Range("D2").Value & " - " & Range("E2").Value & " - " & Range("F2").Value & ".doc" 'permet d'écrire le titre du certificat de destruction créé par la macro
     
            Set WordApp = CreateObject("word.application")    'ouvre une session Word
            Set WordDoc = WordApp.Documents.Open(A)  'ouvre le document Word vierge pour réaliser les modifications
            WordApp.Visible = False    'Word est affiché pendant l'opération, pour le masquer il faut écrire FALSE
     
            For i = 1 To 9 'on fait ici une boucle pour mettre dans les repères de word le contenu des cellules du fichier excel
                'les signets du document Word sont nommés Signet1 , Signet2 , Signet3...
                WordDoc.Bookmarks("Signet" & i).Range.Text = Cells(2, i)
            Next i 'la boucle s'arrête au bout de 9 tours
     
            WordDoc.Bookmarks("signet10").Range.Text = Format(Now, "dd/mm/yyyy") 'la date du jour est écrite dans le signet 10
     
     
            WordApp.Visible = False
            WordDoc.SaveAs2 B 'sauvegarde le fichier dans un nouveau word, dont l'emplacement et le nom sont indiqués au début du programme (B)
            WordDoc.Close 'ferme le document word
            WordApp.Quit 'ferme la session Word
            'WordDoc.Close True ' en sauvegardant les données
    End Sub

  2. #2
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Il te manque la constante du format de sauvegarde sans ton saveas2. Si tu veux enregistrer en Word et en PDF, tu dois utiliser saveas2 deux fois et modifier la constante en conséquence.

    Clique sur saveas2 et appuie sur

    Mets un espion sur B et un point d'arrêt sur

    et vérifie la valeur de B dans la fenêtre espion

  3. #3
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, et une fois de plus un mélange entre Early binding et Late binding : Early ou Late Binding

  4. #4
    Membre habitué
    Homme Profil pro
    Lycéen
    Inscrit en
    Novembre 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2014
    Messages : 8
    Par défaut
    Bonjour et merci pour vos réponses.

    Je me suis rendu compte que mon code initial marchait parfaitement, mais en rajoutant les données dans le titre ça bloquait à cause d'un anti-slash dans une cellule (caractère interdit dans les titres de documents).

    Et en cherchant dans les recoins de l'aide F1 j'ai trouvé la constante pdf! Merci clementmarcote !

    En revanche kiki29 je ne comprends pas où j'ai merdé dans le binding... (désolé c'est la première fois que je fais du VBA et j'ai grillé la théorie pour mettre en pratique sans avoir fait mes armes). J'avais mis le B trop tôt? ou dans la définition de mes variables j'aurais pu être plus précis?

    le nouveau code!
    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
     
    Sub creationcertifdestru()
        Dim WordApp As Word.Application
        Dim WordDoc As Word.Document
        Dim A As String, B As String
        Dim i As Byte
     
        A = ActiveWorkbook.Path & "\Certificat de destruction" 'mettre le nom exact du fichier vierge, ce fichier doit être placé dans le même répertoire que le fichier excel où la macro est présente
     
            Set WordApp = CreateObject("word.application")    'ouvre une session Word
            Set WordDoc = WordApp.Documents.Open(A)  'ouvre le document Word vierge pour réaliser les modifications
            WordApp.Visible = False    'Word est affiché pendant l'opération, pour le masquer il faut écrire FALSE
     
            For i = 1 To 9 'on fait ici une boucle pour mettre dans les repères de word le contenu des cellules du fichier excel
                'les signets du document Word sont nommés Signet1 , Signet2 , Signet3...
                WordDoc.Bookmarks("Signet" & i).Range.Text = Cells(2, i)
            Next i 'la boucle s'arrête au bout de 9 tours
     
            WordDoc.Bookmarks("signet10").Range.Text = Format(Now, "dd/mm/yyyy") 'la date du jour est écrite dans le signet 10
            B = A & " - " & Range("G2").Value & " " & Range("D2").Value & " - " & Range("E2").Value & " - " & Range("F2").Value 'permet d'écrire le titre du certificat de destruction créé par la macro
     
            WordApp.Visible = False
            WordDoc.SaveAs2 B, wdFormatDocument 'sauvegarde le fichier dans un nouveau word, dont l'emplacement et le nom sont indiqués au début du programme (B)
            WordDoc.SaveAs2 B, wdFormatPDF 'sauvegarde le fichier en format pdf
            WordDoc.Close 'ferme le document word
            WordApp.Quit 'ferme la session Word
            'WordDoc.Close True ' en sauvegardant les données
    End Sub

  5. #5
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, cela saute aux yeux si tu as lu et assimilé ce qui est dit dans le lien donné plus haut.

  6. #6
    Membre habitué
    Homme Profil pro
    Lycéen
    Inscrit en
    Novembre 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2014
    Messages : 8
    Par défaut
    Désolé mais moi ça ne me parait pas si évident, je le répète je suis nouveau dans la prog quelle quelle soit.
    J'ai pris des bouts de codes à droite à gauche donc reproduit les erreurs de ces personnes.
    Je suppose après deuxième lecture du lien que tu reproches à ce code d'utiliser des variables WordDoc et Wordapp comme raccourcis ?
    Sinon je suis perdu.

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

Discussions similaires

  1. [XL-2007] Enregistrer un document Word en PDF depuis une macro EXCEL 2007
    Par davr971 dans le forum Excel
    Réponses: 3
    Dernier message: 13/06/2014, 16h36
  2. [XL-2007] Affichage doc Word depuis macro Excel
    Par KekeStreet dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 27/11/2012, 11h52
  3. [XL-2003] Problème de transformation Word to PDF via Excel
    Par Tweelight dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 11/06/2012, 09h31
  4. Démarrer macro Word depuis macro Excel
    Par nashiboy dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/12/2009, 20h02
  5. Comment ouvrir word depuis macro excel ?
    Par megapacman dans le forum VBA Word
    Réponses: 4
    Dernier message: 15/11/2006, 15h59

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