Bonjour à tous,

Je développe actuellement un programme sous Excel qui permet de mettre en forme un constat de test après la création d'un fichier *.csv par un automate.
Le principe est que lorsque l'on ouvre le classeur modèle "nouveau constat" un UserForm s'affiche et permet d'importer le fichier *.csv, après renseignement de quelques données l'utilisateur valide. La macro enregistre alors le classeur sous un chemin spécifique, l'exporte en PDF et ouvre un nouveau UserForm apparait. Il demande si l'utilisateur veux créer un nouveau constat (ou non) et fermer le classeur (ou non). A noter que :
  • la macro ferme le classeur et non l'instance
  • lors de la création d'un nouveau constat, une nouvelle instance est créée
  • Tout mes codes sont dans ThisWorkbook et les Userforms

Et jusque la tout fonctionne (enfin j'ai l'impression ) !

L'erreur "Erreur d'accès Chemin/Fichier" apparait, après cet enchainement d'action :
  1. Fermeture d'un constat après enregistrement (l'instance Excel reste ouverte)
  2. Ouverture d'un nouveau constat


L'erreur n'apparait pas si :

  • Je ferme Excel
  • L'instance ouverte soit "héritée" d'un classeur quelconque


A noter que pendant le bogue :

  • Le débogueur m'indique " Erreur d’exécution '75': Objet spécifique introuvable" et la ligne affichant le UserForm d'importation de constat ou, si je clique sur "fin" fait crasher Excel
  • Dans la fenêtre d'édition des macros, à l'emplacement de l'arbre permettant de naviguer entre les modules, formulaires et feuilles, rien n'est affiché


Code d'ouverture automatique :

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
 
Sub Workbook_Open()
    ThisWorkbook.Activate
    '----------Affichage de la bonne feuille----------
    ThisWorkbook.Worksheets("CONSTAT").Visible = True
    ThisWorkbook.Worksheets("CONFIGURATION").Visible = Hidden
    ThisWorkbook.Worksheets("MODEL").Visible = Hidden
    ThisWorkbook.Worksheets("CONSTAT").Select
 
    '----------Récupération de la racine du fichier----------
    Call Recuperation_Source
 
    '----------Mise en place des dossiers----------
    Dim Dossier(3) As String
    Dossier(0) = "Resultats Etalonnage Debitmetre\"
    Dossier(1) = "Excel\"
    Dossier(2) = "PDF\"
    Dossier(3) = "CSV\"
 
    Call Verifier_Dossier(Source_Mere, Dossier(0))
    Source_Mere = Source_Mere & Dossier(0)
 
    For i = 1 To 3
        Call Verifier_Dossier(Source_Mere, Dossier(i))
        Next
    BDD_Nouveau_Constat.Show
 
    End Sub
 
Sub Recuperation_Source()
    '----------Récupération de la racine du fichier----------
 
    If Worksheets("CONFIGURATION").Range("C2") = "" Then
            Source_Mere = ThisWorkbook.Path & "\"
            Worksheets("CONFIGURATION").Range("C2") = Source_Mere
        Else 
            Source_Mere = Worksheets("CONFIGURATION").Range("C2").Value
        End If
    End Sub
 
Sub Verifier_Dossier(Source As String, Dossier As String)
    '----------Verificaton de la présence des dossier & création----------
    If Dir(Source & Dossier, 16) = "" Then
 
        On Error Resume Next
        MkDir Source & Dossier
        On Error GoTo 0
        End If
    End Sub
Code permettant la fermeture du fichier :

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
Private Sub UserForm_QueryClose(Cancel As integer, CloseMode As Integer)
    If CloseMode = 0 Then Cancel = True
    End Sub
'Réponse oui/ non à la question "créer un nouveau constat ?"
'CB_Fermer : option permettant de fermer le constat 
Private Sub B_Oui_Click()
    Unload BDD_Fermer
 
    Call ThisWorkbook.Recuperation_Source
    Call ThisWorkbook.Verifier_Dossier(ThisWorkbook.Source_Mere, "Resultats Etalonnage Debitmetre\")
    ThisWorkbook.Racine = ThisWorkbook.Source_Mere & "Resultats Etalonnage Debitmetre\Nouveau constat"
 
    If Dir(ThisWorkbook.Racine & ".xltm") = "" Then
        MsgBox "Impossible d'ouvrir un nouveau constat," & Chr(13) & Chr(10) & _
            "il n'existe pas de modèle ""Nouveau constat.xltm"" à l'adresse suivante : " & Chr(13) & Chr(10) & _
            Left(ThisWorkbook.Racine, Len(ThisWorkbook.Racine) - 15)
        Else
            Dim App As Excel.Application
            Dim wb As Excel.Workbook
 
            Set App = New Excel.Application
            App.Visible = True
            Set wb = App.Workbooks.Add(ThisWorkbook.Racine & ".xltm")
        End If
 
    If CB_Fermer = True Then
        With ThisWorkbook
            .Save
            .Close
            End With
        End If
    End Sub
 
Private Sub B_Non_Click()
    Unload BDD_Fermer
    If CB_Fermer = True Then
        With ThisWorkbook
            .Save
            .Close
            End With
        End If
    End Sub
Malgré toutes mes recherches auprès de mon ami , dans le forum, dans les , etc... je n'ai pas trouvé l'ombre d'une piste de solution... Alors merci infiniment d'avance pour vos réponses!