Bonjour,
Avant tout, je suis nouveau sur le forum, ingénieur en informatique depuis longtemps, mais je n'ai jamais vraiment touché au VBA.
Et j'ai l'impression que je passe à coté d'une philosophie de codage qui n'est pas équivalente dans les autres langages que je peux manipuler.
J'ai écris le suivant :
Option Explicit
Sub listefichier()
Dim dossier As String, fichier As String, i As Integer
Dim objWord As Object
Dim objShell As Object
Dim WScript As Object
Dim myCur As String
Dim objDoc As Object
Set objWord = CreateObject("Word.Application")
Set objShell = CreateObject("WScript.Shell")
'WScript.Echo (objShell.CurrentDirectory)
myCur = objShell.CurrentDirectory
dossier = myCur & "\*.docx"
i = 0
fichier = Dir(dossier)
Dim nombre As Integer
Do While fichier <> ""
i = i + 1
Sheets("Feuil1").Range("A" & i) = fichier
Set objDoc = objWord.Documents.Open(myCur & "\" & fichier)
objWord.Visible = True
nombre = objDoc.InlineShapes.Count
traiterFormulaire (objDoc)
Set objDoc = objWord.Document.Close(myCur & "\" & fichier)
fichier = Dir
Loop
End Sub
Function traiterFormulaire(myDocument)
'https://docs.microsoft.com/fr-fr/office/vba/excel/concepts/working-with-other-applications/controlling-one-microsoft-office-application-from-another
Dim nombre As Integer
nombre = myDocument.InlineShapes.Count
'Dim var As InlineShapes
Dim IShape As Object
For Each IShape In myDocument.InlineShapes
Debug.Print IShape.OLEFormat.Object.Selected
Debug.Print "d"
'var = iShape
'var.ConvertToShape
Next IShape
End Function
Si on met un point d'arrêt sur la ligne traiterFormulaire (myDocument), voilà ce que l'on observe :
nombre = 12
objDoc = Watch : : objDoc : <Expression non définie dans le contexte> : Empty : ThisWorkbook.traiterFormulaire
Et si je laisse la souris au dessus de objDoc, il me met dans une info bulle : "b.docx".
Tout cela n'est pas cohérent. Si la valeur 12 est trouvée, c'est que l'objet est bien défini, et que ses variables membres sont bien initialisées. Pourquoi le trouve-t-il empty ensuite, pour finalement dire qu'il contient un string ?
Merci beaucoup pour votre aide !