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 :
- Fermeture d'un constat après enregistrement (l'instance Excel reste ouverte)
- 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 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
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
Malgré toutes mes recherches auprès de mon ami
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, 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!
Partager