Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2010 VBA - Erreur de compilation

toud

XLDnaute Nouveau
Bonjour
je suis relativement novice avec VBA et mon besoin est de renseigner un fichier Word existant avec des signets en les remplacant par des cellules dans EXCEL.
Pour cela, voici le code que j'ai dans un module VBA mais la compilation ne passe pas.
JE dois avoir une option ou autres car le même code avec un autre fichier EXCEL que j'ai récupéré fonctionne !

Merci pour votre aide:
J'ai le message
Erreur de compilation
Type défini par l'utilisateur non défini.
Ceci sur la ligne : Dim WordApp As Word.Application

Sub Client_Word()

Dim WordApp As Word.Application
Dim WordDoc As Word.Document
Dim i As Byte

Set WordApp = CreateObject("Word Application")
WordApp.Visible = True 'Word n'est pas masqué pendant l'opération

Set WordDoc = WordApp.Documents.Open("C:\Users\phili\OneDrive\CONTACTO\DOSSIERS PATIENTS\CS VIERGE.docx") 'ouvre le document Word

For i = 1 To 5
'les signets du document Word sont nommés Signet1 , Signet2 , Signet3, Signet4, Signet5
WordDoc.Bookmarks("Signet" & i).Range.Text = Cells(i, 1)
Next i

WordApp.Visible = True 'affiche le document Word
'WordDoc.PrintOut 'Pour imprimer le doc obtenu

'WordDoc.Close True 'ferme le document word en sauvegardant les données
'WordApp.Quit 'ferme la session Word

End Sub
 
Solution
@toud

Oui, mais relis les posts #8 et #9 : c'est plus simple avec New !

Donc tu peux supprimer cette ligne :

Set WordApp = CreateObject("Word.Application")

et ajouter New comme suit :

Dim WordApp As New Word.Application

➯ optimisation du code VBA et résultat identique,
grâce à l'info de Dranreb.

soan

Dranreb

XLDnaute Barbatruc
Bonjour.
Ça ne peut pourtant pas être autre chose.
À moins bien sûr que, tout en étant cochée elle y est portée MANQUANT !
Alors il faut la dé-cocher et la re-cocher.
Vous pouvez aussi vérifier dans l'explorateur d'objet si la bibliothèque Word est connue du projet VBA de votre classeur et a bien une classe Application.
 
Dernière édition:

soan

XLDnaute Barbatruc
Inactif
Bonjour toud, Dranreb,

Lis d'abord le post de Dranreb, puis celui-ci.

Quand le problème actuel sera résolu, il y aura un autre problème ici :

Set WordApp = CreateObject("Word Application")

Ça compile, mais ensuite, il y a :
«
Erreur d'exécution '429':
Un composant ActiveX ne peut pas créer d'objet
»

C'est parce qu'il manque un point ; il faut mettre :

Set WordApp = CreateObject("Word.Application")

soan
 

soan

XLDnaute Barbatruc
Inactif
Avec CreateObject, c'est la méthode que j'utilise habituellement (et qui marche très bien) ;
je viens d'essayer ta méthode avec New ; ça marche très bien aussi et c'est plus simple !

Merci pour cette info super pratique ! (et j'adopte ta méthode avec New !)

soan
 
Dernière édition:

toud

XLDnaute Nouveau
Bonjour Soan, Dranreb

j'ai dé-coché et re-coché ...Word 16... et ça fonctionne. Très bizarre ça .
J'ai ensuite rajouté le . manquant et ça roule.

Merci beaucoup à vous 2 pour votre aide
 

soan

XLDnaute Barbatruc
Inactif
@toud

Oui, mais relis les posts #8 et #9 : c'est plus simple avec New !

Donc tu peux supprimer cette ligne :

Set WordApp = CreateObject("Word.Application")

et ajouter New comme suit :

Dim WordApp As New Word.Application

➯ optimisation du code VBA et résultat identique,
grâce à l'info de Dranreb.

soan
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…