Bonjour,

Aujourd'hui, je me confronte à un problème à première vue assez basique mais dont je ne trouve pas la solution, le voici :

J'ai pour objectif de créer une fonction permettant de récupérer un nombre important d'informations sur l'une des machines de mon entreprise et de les inscrire dans un fichier excel.
Le cheminement que j'effectue est le suivant :

-Je récupère les informations de la machine dans des variables
-Je lance la création du fichier excel
-Je remplis ce fichier avec les informations récupérées dans mes variables
-Je l'affiche à l'utilisateur puis le sauvegarde automatiquement à un emplacement fixe et avec un nom fixe.

Cependant, j'aimerai vérifier que le fichier créé plus tôt ne soit pas encore ouvert si l'on ré exécute la fonction, chose logiquement assez simple :

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
Private Sub donnee()
 
 If EstClasseurOuvert(App.Path & "\XXX\XXX.xlsx") Then
            Workbooks(App.Path & "\XXX\XXX.xlsx").Close
 End If
 
end Sub
 
Public Function EstClasseurOuvert(MonClasseur As String)
 
    Dim NumeroFichier As Long
    Dim NumeroErreur As Long
 
    On Error Resume Next
        NumeroFichier = FreeFile()
        Open MonClasseur For Input Lock Read As #NumeroFichier
        Close NumeroFichier
        NumeroErreur = Err
    On Error GoTo 0
 
    Select Case NumeroErreur
        Case 0:    EstClasseurOuvert = False
        Case 70:   EstClasseurOuvert = True
        Case Else: Error NumeroErreur
    End Select
 
End Function
Mais je tombe sur une erreur qui me dit que l'indice est en dehors de la plage lors du workbooks.close alors que je suis sûr que le chemin indiqué est correct !

Si quelqu'un a une idée d'où peut venir le problème, merci d'avance .