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 erreurs avec l'AutoOpen [XL-365]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    amateur débutant
    Inscrit en
    Août 2019
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : amateur débutant

    Informations forums :
    Inscription : Août 2019
    Messages : 8
    Par défaut Publipostage erreurs avec l'AutoOpen
    Bonjour à tous,

    Réel amateur débutant en VBA, j'ai réussi à créer un publipostage de ma base de données Excel vers Word à l'aide de macros.
    (de mon fichier "données.xls", je crée une copie "Excel_FUSION.xls" (puis fermerture automatique du répertoire EL)/(ouverture physique de Word), référence à mon programme "Word PUBLIPOSTAGE.doc" via la macro)

    En voulant "automatiser" le passage d'excel à Word, j'ai inclus un programme d'ouverture de mon projet Publipostage de Word dans Excel ... puis une fonction autoopen dans Word.

    Programme dans Excel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    '-----pour ouvrir le document à fusionner
    Dim doc, wordapp                           
    Set wordapp = CreateObject("Word.application")  
    wordapp.ShowMe
    wordapp.Visible = True
    Set doc = wordapp.documents.Open("C:\Users\bibi\Trame word-PUBLIPOSTAGE.doc")
    wordapp.Activate
    Application.Quit
     
    Workbooks("Excel_FUSION.xls").Save
    Workbooks("Excel_FUSION.xls").Close
     
    End Sub
    Programme de l'autoopen dans Word :

    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
    Sub Autoopen()
    Dim docDP As Document
    Set docDP = ActiveDocument
     
    ActiveDocument.Activate
        With ActiveDocument.MailMerge
            .Destination = wdSendToNewDocument
            .SuppressBlankLines = True
            With .DataSource
                .FirstRecord = ActiveDocument.MailMerge.DataSource.ActiveRecord
                .LastRecord = ActiveDocument.MailMerge.DataSource.ActiveRecord
            End With
            .Execute Pause:=False
        End With
     
    docDP.Close wdDoNotSaveChanges
    End Sub
    C'est là que les problèmes apparaissent... avec notamment :
    1- une annonce d'erreur d'incompatibilité de type 13
    2 - un surlignage en jaune systématique dans excel de la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set doc = wordapp.documents.Open("C:\Users\bibi\Trame word-PUBLIPOSTAGE.doc")
    3- l'impossibilité de fermer le fichier "source.xls", qui semble "tourner sans arrêt" et sans passer par une boite de dialogue "voulez enregistrer les modif..."*

    4- Dans Word ensuite : après avoir fermé physiquement Excel, un surlignage en jaune de la ligne : .Destination = wdSendToNewDocument.
    5- enfin, un message d'excel annonçant qu'il "attend la fin de l’exécution d'une action OLE d'une autre application"

    Mes codes sont certainement truffés d'erreurs et de choses inutiles... merci de vos lumières.

    Je me pose également la question dans de savoir s'il faut cocher dans les "Réferences VBA- Project" la case "Microsoft Word 16.0 Objet Library" dans Excel... et "Excel 16.0 Objet Library" dans word ?
    d'autres questions à venir je pense avec ce post..
    Merci par avance de vos contributions

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 171
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Ce que je vais écrire ne répond pas à ta question mais mon expérience t'aidera peut-être à changer de méthode.
    Un de mes premiers développement en VBA a été de créer une interface avec le publipostage. C'est long et depuis les nouvelles sécurités inventées par Microsoft, c'est un véritable cauchemar (depuis la version 2003).

    J'ai opté depuis longtemps sur l'usage des signets (objet Bookmark en VBA) pour faire du publipostage et également pour transférer des données d'excel vers Word soit pour résumer : Cellule ou plage nommée vers signet

    Désolé si j'ai pollué ta demande par mon intervention.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre du Club
    Homme Profil pro
    amateur débutant
    Inscrit en
    Août 2019
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : amateur débutant

    Informations forums :
    Inscription : Août 2019
    Messages : 8
    Par défaut signet (Objet Bookmark)
    Merci ++ Philippe de ta réponse qui est la bienvenue,
    Oui, je suis tout à fait de ton avis avec ces multiples versions, évolutions, sécurités, compatibilités, etc...

    Je ne connais pas ce principe de signet et je vais me renseigner... mais en quelques mots, quel est le principe et son mode, en résumé, de sa mise en application ?

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 171
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Le principe est relativement simple on a d'une part des cellules ou des plages de cellules nommées côté Excel et des signets (qui ont un nom) dans Word.
    Si ce sont des cellules Excel je place leurs valeurs à la place du signet, si ce sont des plages de cellules, j'utilise la méthode Copy de l'objet Range pour Excel que je colle par un collage spécial à la place du signet côté Word

    Voir discussions sur le même sujet
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Membre du Club
    Homme Profil pro
    amateur débutant
    Inscrit en
    Août 2019
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : amateur débutant

    Informations forums :
    Inscription : Août 2019
    Messages : 8
    Par défaut
    merci, je vais regarder cela dans l'attente de ma résolution de problème...

    En décochant "Microsoft Word 16.0 Objet Library" dans Excel, j'ai déjà réglé mes erreurs 4 et 5

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

    Je serais plutôt d'avis que tu oublies auto_open. C'est là juste pour des raisons de compatibilité. Tu devrais plutôt regarder du côté de des événements

    Nom : wordVBa1.jpg
Affichages : 760
Taille : 116,7 Ko


    Nom : WordVBa2.jpg
Affichages : 754
Taille : 122,0 Ko

    ET quand tu parles de publipostage, est-ce un publipostage "pur et dur" (plusieurs lettres) ou juste un seul document avec avec plusieurs informations ? Parce que les deux sont possibles. Et c'est surtout parce que l'on peut utiliser des champs de base de données faisant référence au fichier Excel directement dans le document Word. Et pour un document unique, c'est plus simple que de passer par le publipostage.

    P.S. Surtout ne ferme pas tes fichiers Excel avant que la fusion ne soit effectivement terminée "physiquement" si on peut dire, dans le document Word. Si tu les fermes trop tôt, tu perds ton lien OLE et ta fusion ne sera pas complète. VBA est encore plus rapide que OLE, et c'est OLE qui s'occupe du transfert des données.

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

Discussions similaires

  1. [VBA-E]erreur d'éxécution 9 avec userform
    Par heavenly dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 02/05/2007, 15h53
  2. [VBA] Erreur avec fonction Dcount
    Par Virgile59 dans le forum Access
    Réponses: 6
    Dernier message: 15/06/2006, 09h56
  3. [VBA-E]Erreur avec une combobox qui liste le contenu de cell
    Par Tartenpion dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 08/03/2006, 12h01
  4. [VBA-E] erreur avec listbox.rowsource
    Par repié dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 14/02/2006, 10h55
  5. [VBA][EXCEL]Erreur '1004' avec "Application.Run"
    Par Ania dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 16/01/2006, 10h50

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