Bonjour à tous !!!
Petite mise au point : J'ai découvert le VBA il y a peu, et il est possible que je passe à côté de grosses erreurs conceptuelles... Merci d'avance de m'éclairer...
Voila mon PB : En gros, j'ai un modèle de document sous word, et je voudrait créer une macro qui enregistre des renseignements pris de ce documents dans un classeur excel de résumé (Par exemple : Nom de fichier, emplacment, auteur, titre, sujet, version, etc... Bref, de quoi faire une base de donnée pour retrouver tous ses documents quand on est bordélique...)
Débutant en VBA, j'ai mis au point la macro sous excel en VBA, pour me faire la main.
Ensuite, je l'ai copiée sous word, en créant l'application Excel, et l'objet WorkBook.
Et le code qui marche très bien sous Excel ne fonctionne pas sous Word...
Voici le code simplifié en question :
Public Sub InscriptionDB()
DimMyFileName
As StringDim Selection
As RangeDim NLigne
As IntegerMyFileName = "c:\MyXls.xls"
'Nom du fichier Excel qui stocke tout. Il contient une feuille appellée "Documents"Dim MonExcel
As Object 'Référence à l'application Excel qui va être instanciéeDim MonWorkBook
As Object'Référence au classeurqui va être ouvertSet MonExcel = CreateObject("Excel.Application")
'On lance l'applicationSet MonWorkBook = MonExcel.Workbooks.Open(MyFileName, ,
False)
'On ouvre le classeur depuis l'applicationMonExcel.Application.Visible =
False'On laisse l'application invisible' DEBUT partie de code fonctionnant sous VBA Excel, mais générant une erreur sous VBA Word'Selectionne l 'ensemble de la colonne jusque la première case videSet Selection = MonWorkBook.Sheets("Documents").Range("A2",MonWorkBook.Sheets("Documents").Range("A2").End(xlDown))
'Recherche si le document est déja enregistré...
For Each Cellule
In Selection.Cells
If Cellule.Value = ActiveDocument.CustomDocumentProperty("Numéro de document DB")
Then MsgBox "Erreur : Document déja enregistré ligne : " & Cellule.Item() & " !!!"
End If
Next'FIN partie de code fonctionnant sous VBA Excel
MonExcel.Workbooks.Close
MonExcel.Quit
End SubEn fait, ç'est la selection qui ne fonctionne pas... Il y a un message d'erreur très explicite :
Erreur d'execution '1004'
Erreur définie par l'application ou l'objet
Lorsque j'écrit la partie de code sous Excel en remplaçant MonExcel.MonWorkBook par ThisWorkBook, cela fonctionne très bien
Je suis passé à coté de quoi ???? Peut on lancer ce type de code depuis une macro word, ou est-ce interdit ???
D'avence, merci !!!