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 :

Publipostage avec VBA Excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Avril 2020
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Avril 2020
    Messages : 26
    Par défaut Publipostage avec VBA Excel
    Bonjour,

    J'ai créé une VBA afin d'automatiser un processus de Publipostage. Je me retrouve face à deux problèmes:
    - Lorsque je lance la VBA, Word bloque car il attend une réponse au message suivant : "L'ouverture de ce document éxecute la commande SQL suivante : SELECT*FROM 'BASE DE DONEE PUBLIPOSTAGE$' Des données de votre base de données seront insérées dans le document Voulez-vous continuer?"

    Si je ne réponds pas, Excel me renvoie une boite de dialogue m'indiquant qu'il attend une réponse d'une action OLE ("Microsoft Excel attend la fin de l'exécution d'une action OLE d'une autre application");

    - Une fois que je valide manuellement la requête, deux documents sont générés. Un intitulé "Lettre 1 type" qui présente un document tel qu'attendu et un document intitulé "Document 1" qui est vierge.

    Ainsi, mes problèmes sont la boite de dialogue requête SQL et le document 1 que j'aimerais ne plus voir apparaitre.

    Je souhaiterais également enregistré, dans un dossier spécifié, la "lettre type 1" en format PDF sous un nom de document sous le format - Prélèvement en date du "date" sur chantier "numéro de chantier" - (par ex: Prélèvement en date du 061219 sur chantier n°19-186) en fichier PDF

    Ne sachant pas comment faire, si quelqu'un a des idées à me proposer, je suis preneur

    merci d'avance.

    Karim
    Fichiers attachés Fichiers attachés

  2. #2
    Membre averti
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Avril 2020
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Avril 2020
    Messages : 26
    Par défaut
    Ceci dit, j'ai un peu avancé.

    Si quelqu'un pouvait m'aider sur la façon de nommer le fichier, ça m'enlèverait une grosse épine du pied

    Mon code VBA mis à jour:

    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
    Sub Publipostage()
    'Enregistre le fichier au format.pdf
    'N?cessite d'activer la r?f?rence "Microsoft Word xx.x Object Library"
    Dim docWord As Word.Document
    Dim appWord As Word.Application
    Dim NomBase As String
     
    NomBase = ThisWorkbook.FullName
    Application.ScreenUpdating = False
    Set appWord = New Word.Application
    appWord.Visible = True
    'Ouverture du document principal Word
    Set docWord = appWord.Documents.Open("C:\Users\PC\Desktop\ProjetPublipostage\VI\PUBLIPOSTAGE RAPPORT V3.docx")
    'fonctionnalit? de publipostage pour le document sp?cifi?
    With docWord.MailMerge
    'Ouvre la base de donn?es
    .OpenDataSource Name:=NomBase, _
    Connection:="Driver={Microsoft Excel Driver (*.xlsx)};" & _
    "DBQ=" & NomBase & "; ReadOnly=True;", _
    SQLStatement:="SELECT * FROM [BASE DE DONNEE PUBLIPOSTAGE$]"
    With .DataSource
    .FirstRecord = 1
    .LastRecord = 1
    End With
    'Ex?cute l'op?ration de publipostage
    .Execute
    End With
    ' Sauvegarde du document publipost?
    With appWord.ActiveDocument
    .ExportAsFixedFormat OutputFileName:="C:\Users\PC\Desktop\ProjetPublipostage\VI\" & "New_name" & ".pdf", ExportFormat:= _
    wdExportFormatPDF, OpenAfterExport:=False
    End With
    Application.ScreenUpdating = True
    'Fermeture du document Word
    docWord.Close False
    appWord.ActiveDocument.Close False
    appWord.Quit
    End Sub

    Pour l'instant le hic se trouve ici:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    With appWord.ActiveDocument
    .ExportAsFixedFormat OutputFileName:="C:\Users\PC\Desktop\ProjetPublipostage\VI\" & "New_name" & ".pdf", ExportFormat:= _
    Où il doit y avoir une ligne qui manque pour appeler le fichier Excel en cours et appeler les données de cellules AE2 et A2. Ainsi, New_name serait égale à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "Prèlevement n°" & "Range("A2").Value" & "effectué en date du " & "Range (AE2).Value"
    Mais si je rentre la formule tel qu'elle, vu que je commence avec With appWord.ActiveDocument, le VBA ne trouve pas la référence (la feuille excel)

    Une idée?

    Merci d'avance.

  3. #3
    Membre averti
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Avril 2020
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Avril 2020
    Messages : 26
    Par défaut
    J'ai mis à jour ma VBA en suivant l'idée que j'avais dans mon précédent message en présentant la chose comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    New_name = "Prélèvement n° " & Range("B2").Value & " effectué en date du " & Range("AE2") & " sur chantier n? " & Range("A2").Value
        With appWord.ActiveDocument
            .ExportAsFixedFormat OutputFileName:="C:\Users\PC\Desktop\ProjetPublipostage\VI\" & New_name & ".pdf", ExportFormat:= _
            wdExportFormatPDF, OpenAfterExport:=False
            End With
    Cependant ça bug en surlignant cette partie:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     .ExportAsFixedFormat OutputFileName:="C:\Users\PC\Desktop\ProjetPublipostage\VI\" & New_name & ".pdf", ExportFormat:= _
            wdExportFormatPDF, OpenAfterExport:=False
    Et en indiquant dans le message de la boite de dialogue :

    "Erreur d'exécution '-2147467259 (80004005)
    Le nom du dossier est incorrect"

    Quelqu'un pourrait m'aider ?

    Je joins les fichiers concerné

    Merci d'avance.
    Fichiers attachés Fichiers attachés

  4. #4
    Membre averti
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Avril 2020
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Avril 2020
    Messages : 26
    Par défaut
    Finalement j'ai trouvé la solution :

  5. #5
    Nouveau candidat au Club
    Homme Profil pro
    Industrie
    Inscrit en
    Octobre 2022
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Industrie
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2022
    Messages : 2
    Par défaut
    Bonjour,

    J'ai exactement le même problème que vous.
    Je souhaite ouvrir via VBA mon document word incluant du publipostage.

    Problème le message concernant la commande SQL.

    Avez-vous trouver la solution pour valider ce message et ainsi ouvrir Word avec les champs de fusion à jour ?

    Merci d'avance,

Discussions similaires

  1. envoi mail outlook avec vba excel
    Par momolamoto dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 29/09/2010, 10h45
  2. Contrôle d'un document Word avec VBA Excel
    Par wsl1912 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 03/01/2008, 10h06
  3. manipulation des fichiers et dossiers avec VBA excel
    Par GBAGO dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 29/07/2007, 23h30
  4. lien internet avec VBA EXCEL
    Par casefayere dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 19/07/2007, 10h40
  5. Images avec VBA Excel
    Par dorschner dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/09/2006, 23h28

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