XL 2010 Ouverture fichier Word : erreur 91

herve62

XLDnaute Barbatruc
Supporter XLD
Bonjour
Je ne comprends pas !! j'ai exactement ce même code dans un autre fichier qui fonctionne
Je l'ai mis dans un fichier ou j'en ai besoin : erreur
Ici je ne mets que cette sub toute seule pour exemple > idem erreur ??
 

Pièces jointes

  • Tempo.zip
    23.6 KB · Affichages: 9

fanch55

XLDnaute Barbatruc
Bonjour,
@Dranreb a raison , le Dim doit avoir un New si vous faites référence à word dans votre Projet,
et n'hésitez pas à faire un Quit par sécurité
Sinon, vous n'êtes pas obligé de faire référence à la library Word :
VB:
Sub facture()
Dim WordApp As Object
Dim i&, j&, pos&, NomDoc$, s As Object
    fic = Worksheets("Feuil1").Range("A1")
    NomDoc = ThisWorkbook.Path & "\" & fic & ".docx" ' définition du chemin et nom du doc au créer
    Set WordApp = CreateObject("Word.Application")
        WordApp.Documents.Open (ThisWorkbook.Path & "\" & "Facture_vierge.docx")
        WordApp.ActiveDocument.SaveAs NomDoc ' On l'enregistre ? là le doc est vide ?
        WordApp.ActiveDocument.Close
        WordApp.Quit
    Set WordApp = Nothing
    MsgBox "Ended"
End Sub
 

herve62

XLDnaute Barbatruc
Supporter XLD
Ok merci bien
Bernard , ton truc marche mais jamais vu avant ??
Mais alors expliquez moi Pourquoi dans le 1er fichier que j'ai fait il y a un mois fonctionne toujours avec ce même code de même que celui d'il y a un an ??
le Dim doit avoir un New si vous faites référence à word dans votre Projet
Ah bon je veux bien , mais donc pourquoi ce code dans l'appli que j'ai terminé il y a 8 j fonctionne très bien ? en plus je boucle x fois et le OPEN marche bien !!
VB:
Sub Fill_Form()
'nécéssite d'activer la référence Microsoft Word xx.x Object Library
Dim WordApp As Word.Application, WordDoc As Word.Document
Dim i&, j&, pos&, NomDoc$, s As Object
Dim chemin As String
...
....
For x = 4 to dg
.......
Set WordDoc = WordApp.Documents.Open(ThisWorkbook.Path & "\" & "BL vierge version HD.docm")
.......etc 
next x

Je viens de relancer mes 2 anciennes Appli avec cette Sub pour vérifier > AUCUN soucis ??

Le seul truc à savoir .. pas évident c'est que en mode DEBUG on lance , on arrête on relance ..etc et que dans ce cas WORD est déjà ouvert et ça plante....car c'est en arrière plan donc : Gestionnaire des tâches > supprimer les Word déjà ouverts ensuite c'est OK ( parfois il faut aussi relance Excel)
 

fanch55

XLDnaute Barbatruc
WordApp.ActiveDocument.Close : je ferme mon document
Wordapp.quit : je ferme Word

SI vous ne faites jamais de fermeture,
c'est sur que vous allez avoir plusieurs instances de Word
La dernière ne peut fonctionner correctement car le fichier sauvegardé est resté ouvert et cela vous bloque Excel ...
 

job75

XLDnaute Barbatruc
Bonjour herve62, Bernard, fanch55,

Je trouve plus simple de préparer d'abord la facture dans Excel :
VB:
Sub Facture_Word()
Dim WApp As Object, WDoc As Object, nom$
On Error Resume Next
Set WApp = GetObject(, "Word.Application")
If Err Then Set WApp = CreateObject("Word.Application")
On Error GoTo 0
WApp.Visible = True
Set WDoc = WApp.Documents.Add 'nouveau document
Sheets("Modèle").UsedRange.Copy 'copier
WDoc.Content.Paste 'coller
Application.CutCopyMode = 0
WDoc.Range.ParagraphFormat.SpaceBefore = 6 'meilleur cadrage
nom = Sheets("Modèle").[B1] & " " & Format(Date, "yyyy-mm-dd") & ".docx"
WDoc.SaveAs ThisWorkbook.Path & "\" & nom
If WApp.Documents.Count = 1 Then WApp.Quit Else WDoc.Close False
MsgBox "Facture '" & nom & "' créée..."
End Sub
A+
 

Pièces jointes

  • Modèle factute(1).xlsm
    21 KB · Affichages: 1

Statistiques des forums

Discussions
312 391
Messages
2 087 941
Membres
103 679
dernier inscrit
yprivey3