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 :

Publipostage - Erreur 4198


Sujet :

VBA Word

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 21
    Points : 13
    Points
    13
    Par défaut Publipostage - Erreur 4198
    Bonjour,

    Je souhaite automatiser le publipostage d'un document Word à partir d'un fichier Excel.


    J'ai utilisé le tutoriel http://silkyroad.developpez.com/Exce...tageWordExcel/ pour la réalisation du publipostage de mon document Word. Jusque là, pas trop de problème.

    Par contre, je coince sur l'automatisation du publipostage à l'aide d'Excel.
    Quand je lance ma macro, j'ai le message d'erreur suivant:
    "4198" "Application-defined or object-defined error"
    D'après le débuggeur, l'erreur vient de la fonction "OpenDataSource" mais j'arrive pas à la débugger.

    J'ai fait une recherche sur l'erreur 4198 et sur la fonction "OpenDataSource" mais j'ai pas trouvé grand chose.

    Si quelqu'un peux m'aider à résoudre ce problème ou me donner un tuyau sa sera avec le plus grand plaisir.

    Dernière information, mon type de connexion est DDE.

    Merci
    Cordialement
    Vincent

    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
    Private Sub CdB_Publipostage_Click()
    Dim docWord As Word.Document
    Dim appWord As Word.Application
    Dim NomBase As String
    Dim MonCheminExcel As String
    Dim MonfichierWord As String
     
     
    'Récupère le chemin de ma spreadsheet
    Chemin = ThisWorkbook.FullName
    NomBase = MonCheminExcel
     
    'Ouverture d'une session Word
    Application.ScreenUpdating = False
    Set appWord = New Word.Application
    appWord.Visible = True
     
    'Récupère le chemin du document Word
    MonfichierWord = Application.GetOpenFilename("*.txt,*.doc", , "Please, selected the design report model.") 'Boite de dialogue personnalisée du type "OUVRIR"
    '    If MonfichierWord = False Then                      'Dans le cas où l'utilisateur click sur le bouton "Annuler"
    '        MsgBox "No file was selected"
    '        Exit Sub
    '    End If
     
    'Ouverture du document Word
    Set docWord = appWord.Documents.Open(MonfichierWord)
     
    'Fonctionnalité de publipostage pour le Design Report
       With docWord.MailMerge
            'Ouvre la base de données
            .OpenDataSource Name:= _
            NomBase, ConfirmConversions:=False, ReadOnly:=False _
            , LinkToSource:=True, AddToRecentFiles:=False, PasswordDocument:="", _
            PasswordTemplate:="", WritePasswordDocument:="", WritePasswordTemplate:= _
            "", Revert:=False, Format:=wdOpenFormatAuto, Connection:="", SQLStatement _
            :="SELECT * FROM [Sheet16]", SQLStatement1:="", SubType:=wdMergeSubTypeOther
     
     
            'Spécifie la fusion vers l'imprimante
            .Destination = wdSendToPrinter
            .SuppressBlankLines = True
     
                'Prend en compte l'ensemble des enregistrements
                With .DataSource
                    .FirstRecord = wdDefaultFirstRecord
                    .LastRecord = wdDefaultLastRecord
                End With
            'Exécute l'opération de publipostage
            .Execute Pause:=False
        End With
        Application.ScreenUpdating = True
     
    'Fermeture du document Word
    docWord.Close False
    appWord.Quit

  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,

    Ton fichier doit être un document principal de fusion.
    Si ce n'est pas le cas, l'objet DataSource n'est pas disponible et une erreur est renvoyée lors de l'exécution du code.
    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
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 21
    Points : 13
    Points
    13
    Par défaut
    Ok,
    Je revérifie, mais il me semble que le document soit bien un document principal de fusion. De mémoire, j'ai utilisé l'assistance de publipostage.

    Dans le cas, où mon fichier n'est pas un document principal de fusion.
    Je peux ré-utiliser l'assistance de publipostage et conserver mes champs?

    Merci Heureux-Oli

    Vincent

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 21
    Points : 13
    Points
    13
    Par défaut
    Logiquement, mon document est bien un document principal de fusion sachant que j'ai utilisé l'assistance de publipostage et selectionné un document dit "Normal Word Document".

    Je peux fusionner mon document vers un document vierge manuellement donc si je comprends bien le fonctionnement de la fonction publipostage j'ai bien un document principal de fusion?

    Arf, j'ai du mal a comprends la logique de cette fonction Word.

    J'ai une autre question, j'ai utilisé une connexion DDE. La feuille utilisée de base de donnée est la feuille n°16. D'après, ton tutoriel, il faut utiliser la feuille n°1. J'ai donc mis l'ensemble des données dans la feuille numéro 1 mais sans succès.

    Vincent

  5. #5
    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,

    Je viens d'essayer ton code, on rencontre le problème, lors de la sélection de la table qui est une feuille de données Excel.

    Si tu vas dans Options de cette boîte de dialogue, tu peux en cochant les objet cachés avoir accès aux feuille de données, mais la clause SQL n'est pas prise en compte.

    Le code doit se trouver dans le module du classeur qui contient les données.
    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 !

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 21
    Points : 13
    Points
    13
    Par défaut
    Merci pour ton aide.

    Je vais mettre mon code dans le module de la feuille contenant les données.
    Espérans que sa fonctionne.

    J'ai des questions,

    La feuille de mon classeur comportant les données doit avoir une position bien précise dans le classeur ? Dans mon cas, ma feuille se trouve en première position dans mon classeur avec comme nom "Sheet16".


    J'ai essayé d'utiliser l'enregistreur de macro sous Word pour obtenir le code utilisé pour la fusion vers un nouveau document. j'ai appellé la macro Word obtenu à partir d'Excel mais sa plante aussi. Autre message d'erreur mais bon.
    J'ai pas compris la logique entre Excel et Word.

    Merci

    Vincent

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 21
    Points : 13
    Points
    13
    Par défaut
    Bonjour,

    J'ai fait un copier-coller du code que tu as proposé sur ton tutoriel de publipostage. Les chemins de mes documents (.xls & .doc) sont en dure (statique) et j'avance un peu en obtenant la boite de dialogue que tu présentes.
    Je sélectionne les différents éléments cachés dans l'option ainsi que le fichier Excel à utiliser mais impossible d'activer le bouton "OK".
    J'ai du loupé une étape dans mon publipostage pour que mon fichier Excel ne soit pas reconnu.

    Entre temps, j'ai utilisé l'enregistreur de macro Word pour obtenir une macro enregistrée de la fusion vers un nouveau document.
    J'ai essayé d'appeler cette macro Word à partir Excel mais là c'est le drame !!!
    ERROR 5852!

    Apparement, c'est un problème de KEY. Microsoft présente une méthode pour résoudre ce problème en ajoutant une nouvelle Clé. Méthode surement efficace mais je ne souhaite pas modifier le Registre.

    GRRRRRR!!!! :

    Finalement, le publipostage se fera manuellement!!
    Publipostage 10- Vincent 0

    Merci pour ton aide

    Vincent

  8. #8
    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
    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 !

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 21
    Points : 13
    Points
    13
    Par défaut
    Oups,

    Autant pour moi!
    J'étais persuadé que le tuto ci-dessous était fait par toi.
    http://silkyroad.developpez.com/Exce...tageWordExcel/

    Autant pour moi.

    Vincent

Discussions similaires

  1. [WD-2013] Publipostage erreur de fusion
    Par Bibimatran dans le forum Word
    Réponses: 1
    Dernier message: 28/11/2014, 15h33
  2. Publipostage Erreurs de fusion
    Par atlasinformatique dans le forum VBA Word
    Réponses: 0
    Dernier message: 11/02/2014, 11h58
  3. [AC-2007] Fusion et publipostage erreur 5852
    Par cocoda dans le forum VBA Access
    Réponses: 2
    Dernier message: 01/10/2012, 14h53
  4. Publipostage erreur VBA
    Par antoine1504 dans le forum VBA Access
    Réponses: 4
    Dernier message: 12/09/2008, 15h15
  5. Réponses: 1
    Dernier message: 09/07/2007, 12h11

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