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 :

Microsoft Word XX.0 Object Library et l'erreur d’exécution 429 [Toutes versions]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut Microsoft Word XX.0 Object Library et l'erreur d’exécution 429
    Bonjour à tous,

    J'ai une question concernant la (les) référence(s) Microsoft Word XX.0 Object Library et sa méthode CreateObject("Word.Application"). J'utilise personnellement la 12.0 avec Excel 2007.
    J'ai regardé beaucoup d'éléments traitant du sujet mais je ne suis pas parvenu a gérer le problème.

    Comme stipulé ici : http://support.microsoft.com/kb/244264/fr, je suis bien dans le cas suivant :
    Cette erreur se manifeste sur certains ordinateurs mais pas sur d'autres.
    Sur mon PC, la macro passe sans problème et créer bien l'application Word, ouvre le document souhaité et réalise les actions (récupération des titres et de leur hiérarchie en fonction des tableaux situés dans le document).
    Or sur le PC d'autres personnes à qui est destinée cette macro, le code bloque sur la ligne suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set WordApp = CreateObject("Word.Application")
    Je pense que je n'apprends rien à personne vu mon titre...

    Mon "WordApp" a été défini de plusieurs manières. J'ai essayé :
    - "Dim WordApp As Word.Application"
    - "Dim WordApp As New Word.Application"
    - "Dim WordApp As Object"
    ... rien n'y fait, sur la même version d'Excel que moi j'ai l'erreur d'exécution 429 : Un composant ActiveX ne peut pas créer d'objet.
    Bien entendu, j'ai vérifié que les librairies nécessaires étaient bien cochées.

    Je pense qu'il y a quelque chose qui m'échappe concernant ce problème.

    Je vous place le début de mon code dans lequel j'ai p-e commis une erreur :
    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
    Sub Ouv_Word()
     
        Dim WordApp As Word.Application
        Dim WordDoc As Word.Document
     
        'Autres variables
     
        'Initialisation des variables
        initialisation
     
        ReDim Last_listTitre(0)
     
        With feuilleResult
            Set currentCell = .Range("A7")
        End With
     
        WordChem = feuilleResult.Range(CONST_CHEMIN).Value
     
        On Error Resume Next
        Set WordApp = GetObject(, "Word.Application")
        'Set WordApp = CreateObject("word.application")
        Set WordDoc = WordApp.Documents(WordChem)
        On Error GoTo 0
     
        If WordDoc Is Nothing Then
     
            MsgBox "Le document est fermé"
            Set WordApp = CreateObject("Word.Application")
            Set WordDoc = WordApp.Documents.Open(WordChem)
     
            WordApp.Visible = True
     
        Else
     
            MsgBox "Le document est ouvert"
     
        End If
     
        Set oFind = WordApp.Selection.Find
     
    'suite...
     
        WordDoc.Close 'Fermeture du document Word
        WordApp.Quit 'Fermeture de l'application Word
        Set WordApp = Nothing
     
    End Sub
    En espérant avoir été clair dans la description de mon problème, je reste à votre entière disposition pour tout complément.
    Je vous remercie par avance pour toute piste.

    Cordialement,
    Kimy

  2. #2
    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, si cela peut t'aider, concernant l'Early / Late binding, lire ceci et cela.

    On développe en Early ( références cochées ) et on déploie en Late ( sans références cochées ) .

    Voir également avec ACM.

  3. #3
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut
    Bonjour kiki29,

    Merci tout d'abord pour ta réponse.
    Je me suis déjà fait tirer les oreilles de la part de Marc-L pour une histoire de Early/Late Binding. J'ai compris la leçon !

    Pour autant, je reste confronté à ce problème...

    Quand je lance la macro sur la version d'Excel 2010, la référence devient "Microsoft Word 14.0 Object Library". Or, *j'essaye* de réaliser un late binding... Si ça se trouve, je n'ai rien compris...

    Voici ma macro "Late Binding".
    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
    69
    70
    71
    72
    73
    74
    75
    76
    Sub Ouv_Word()
     
        Dim WordApp As Object
        Dim WordDoc As Object
        Dim WordChem As String
        Dim currentCell As Range
     
        'Dim mergedareas As Range
        Dim i, j As Integer
        Dim Off As Long
        Dim Parag As Long
        'Dim FindRange As Range
        Dim titre As String
        'Dim test As Integer
        'Dim count As Integer
     
        Dim niveauTitre As Integer
        Dim listTitre() As String
        Dim Last_listTitre() As String
        Dim currentFormat As formatTitle
        Dim codeTitre As String
     
        'Dim LastValue(1 To 4) As String
        Dim Value(1 To 4) As String
     
        Dim oFind As Object
     
        'Initialisation des variables
        initialisation
        ReDim Last_listTitre(0)
     
        Application.Visible = False
        Application.Calculation = xlCalculationManual
     
        With feuilleResult
            Set currentCell = .Range("A7")
        End With
     
        Off = 0
     
        WordChem = feuilleResult.Range(CONST_CHEMIN).Value
     
        On Error Resume Next
        Set WordApp = GetObject(, "Word.Application")
        Set WordDoc = WordApp.Documents(WordChem)
        On Error GoTo 0
     
        If WordDoc Is Nothing Then
            MsgBox "Le document est fermé"
            'Set WordApp = CreateObject("Word.Application")
    '        Set WordApp = New Word.Application
    '        Set WordDoc = WordApp.Documents.Open(WordChem)
     
    '        WordApp.Visible = True
     
            Set WordApp = CreateObject("Word.Application")
            WordApp.Visible = True
            Set WordDoc = WordApp.Documents.Open(WordChem)
     
        Else
            MsgBox "Le document est ouvert"
     
        End If
     
        Set oFind = WordApp.Selection.Find
     
    'Mon exécution
     
        WordDoc.Close 'Fermeture du document Word
        WordApp.Quit 'Fermeture de l'application Word
        Set WordApp = Nothing
     
        Application.Visible = True
        Application.Calculation = xlCalculationAutomatic
     
    End Sub
    Quand je l'applique sur Excel 2010, aucun problème. Mais quand je retourne à mon poste... "MANQUANT : Microsoft Word 14.0 Object Library"...
    La macro ne s'exécute plus...

    Je ne sais pas si c'est lié à mon premier problème, à savoir le fait que sur la même version d'Excel que moi, j'ai l'erreur d'exécution 429 : Un composant ActiveX ne peut pas créer d'objet.

    Pour "résumer" :
    1. Sur la même version d'Excel que moi, j'ai l'erreur d'exécution 429 ;
    2. sur la version 2010, cela fonctionne bien... mais en retournant sur 2007, ma référence est perdue et je ne peux plus exécuter la macro...


    Avez-vous des pistes ?

    Je vous remercie par avance et reste à votre disposition pour tout complément.

    Cordialement,
    Kimy

    PS : j'ai essayé de regarder de plus près le lien concernant l'ActiveX Compatibility Manager sans trop de succès...

  4. #4
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Bonjour,

    je ne pense pas t'avoir vraiment tiré les oreilles mais juste passé l'information !

    Quoiqu'il en soit, en déclaration tardive (donc référence de Word non cochée) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        Dim WordApp As Object
        Set WordApp = CreateObject("Word.Application")
    Si l'erreur survient dès la deuxième ligne, c'est un problème lié au PC de librairie non enregistrée
    ou de fichier manquant comme expliqué dans le lien de l'article Microsoft.

    Donc soit regsvr32.exe soit réparation Office / Word ou encore réinstallation …

  5. #5
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut
    Bonjour Marc-L,

    Je plaisantais en parlant de "tirer les oreilles".
    Je prends tout ce qui est bon à prendre des commentaires que la communauté laisse sur le forum, bien entendu ! Merci pour tes différentes remarques qui éclaircissent toujours ma compréhension générale, d'ailleurs.

    Quoi qu'il en soit, je vais utiliser la commande "regsvr32.exe" pour la réparation des DLL du poste qui pose soucis au plus vite et vous tiens au courant.

    Cependant, je ne comprends pas [encore] bien le problème lié aux versions différentes d'Excel. L'exécution de ma macro dans Excel 2010 fait passer la références dans Excel 2007 de cette manière : "MANQUANT : Microsoft Word 14.0 Object Library".

    Si j'ai compris, le Late Binding permet à l'ordinateur d'aller chercher lui même son répertoire pour exécuter la macro. * A peu de chose près, soyez tous indulgent ! *
    Or, pourquoi Excel 2010 set-il la référence à Microsoft Word 14.0 Object Library qui n'est pas présente sur 2007 et empêche ma macro de se ré-exécuter ?

    Merci par avance pour toute réponse.

    Cordialement,
    Kimy

  6. #6
    Membre extrêmement actif
    Avatar de NVCfrm
    Homme Profil pro
    Administrateur Système/Réseaux - Developpeur - Consultant
    Inscrit en
    Décembre 2012
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Administrateur Système/Réseaux - Developpeur - Consultant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 037
    Billets dans le blog
    5
    Par défaut
    bonjour,
    Bien entendu, j'ai vérifié que les librairies nécessaires étaient bien cochées.
    Vu que ton fichier s'exécute dans différentes versions, il est préférable de décocher ces références et laisser COM faire le boulot en late. Auquel cas tu ne dois pas avoir de déclaration du genre dim mavar As Word.Application.

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

Discussions similaires

  1. [XL-2007] Microsoft Word 14.0 Object Library manquante
    Par a.faurie dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/03/2014, 09h31
  2. Réponses: 2
    Dernier message: 10/01/2011, 14h27
  3. [AC-2003] Où trouver Microsoft Office 11.0 Object Library
    Par jbulysse dans le forum VBA Access
    Réponses: 6
    Dernier message: 27/08/2009, 10h30
  4. Réponses: 10
    Dernier message: 07/07/2006, 14h26
  5. Réponses: 1
    Dernier message: 28/06/2006, 12h32

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