Bonjour,
en fait voile j'aimerais trouver une fonction qui me ferme certains processus en enregistrant si possible.C'est pr le cas de EXCEL.EXE qui tourne souvent dans le vide malgré une fermeture correcte dans le VBA.
Merci
Bonjour,
en fait voile j'aimerais trouver une fonction qui me ferme certains processus en enregistrant si possible.C'est pr le cas de EXCEL.EXE qui tourne souvent dans le vide malgré une fermeture correcte dans le VBA.
Merci
Je précise que j'ai déjà une fonction qui termine les processus mais sans sauver et j'aimerais vraiment sauver le travail en cours.
Merci
bjr,
Désolé de te contredire mais la fermeture de excel n'est manifestement pas correcte.Envoyé par tedparker
Terminer un processus n'est pas recommandé, et il n'est certainement pas possible de sauvegarder comme ça.
Il faut revoir ton code VBA...
Voila mon code.
Dc voila si tu peux m'aider c super
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 Dim XlApp As Excel.Application Dim XlWorkSource As Excel.Workbook Dim XlWorkSortie As Excel.Workbook Dim XlSheetSource As Excel.Worksheet Dim XlSheetSortie As Excel.Worksheet Set XlApp = New Excel.Application XlApp.Visible = False Set XlWorkSortie = XlApp.Workbooks.add XlWorkSortie.SaveAs fic_sortie XlWorkSortie.Close Set XlWorkSortie = Nothing 'ici jvoulais juste créer le fichier 'plus tard je l'ouvre Set XlWorkSortie = XlApp.Workbooks.Open(fic_sortie) Set XlSheetSortie = XlWorkSortie.Worksheets(1) 'et je le sauve en fin de traitement XlWorkSortie.Save XlWorkSortie.Close Set XlWorkSortie = Nothing 'je recommence plusieurs fois cette ouverture (+traitement) et fermeture 'ensuite j'appelle une fonction et je passe XlApp ByRef 'j'ouvre mes fichiers à nouveau dans cette fonction Set XlWorkSortie = XlApp.Workbooks.Open(fic_sortie) Set XlSheetSortie = XlWorkSortie.Worksheets(num_sheet_sortie) Set XlWorkSource = XlApp.Workbooks.Open(fic_source) Set XlSheetSource = XlWorkSource.Worksheets(num_sheet_source) 'je ferme ensuite et cela termine la procédure XlWorkSortie.Save XlWorkSortie.Close 'jre reviens à ma procédure d'appel Set XlSheetSource = Nothing Set XlSheetSortie = Nothing 'Xlapp.Quit ' si je mets cette ligne j'ai erreur du type Variable ou objet de bloc With non définie Set XlWorkSortie = Nothing Set XlWorkSource = Nothing Set XlApp = Nothing
Merci
C'est le XlApp.Quit qu'il faut laisser.
Il faut trouver la cause de l'erreur.
Jsuis d'accord que le XlApp.Quit est logiquement la mais ca plante sur cette ligne si jle mets. Ca veut donc dire que le bug est sur cette variable et jvois vraiment pas ou ?
Et si tu le mets avant l'appel de tes proc, ça plante aussi sur le Quit ?
C'est bon finalement fallait juste inverser le nothing et le quit.
J'ai un autre souci du même style.
Jdois faire une ouverture de fichier Excel (modifiable par l'utilisateur) et sur fermeture j'importe ce fichier dans une table ACCESS.
Quand j'importe il me dit que le fichier est déjà ouvert alors que si j'enlève l'import, on voit bien que le processus EXCEL.EXE n'existe plus.
Jsuis donc quasiment sur que c'est un pb de synchro. Excel doit pas être encore fermé quand il fait l'import (seulement 2 lignes de code après).
Comment faire pour faire patienter le programme 2-3 secondes ou attendre la fin d'Excel ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 Sub Attendre(pStr_Secondes As Integer) ' Cette procédure temporise pendant le nombre de secondes qu'on lui transmet en argument Dim iLng_Debut As Long Dim iLng_Fin As Long iLng_Debut = Timer iLng_Fin = iLng_Debut + pStr_Secondes Do Until Timer >= iLng_Fin DoEvents Loop End Sub
Ca marche pas non plus.
J'ai l'impression que ca interrompt aussi la fermeture d'Excel c bizarre.
Parce que ca bugge tjs sur la ligne d'import et quand le message d'erreur arrive, on voit bien que Excel est tjs ouvert. Et dès que je clique sur "Débugage", jvais voir ds les process et Excel est fermé.
ca bugge sur l'import
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 oExcelApp.Quit Set oExcelWorkBook = Nothing Set oExcelApp = Nothing Attendre (2) DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "MaTable", MonFichier, True
J'ai peut être une idée sur la cause du bug mais jvois pas trop comment le résoudre.
Ce code est ds une procédure BeforeClose du Workbook.Ca peut donc paraitre logique qu'il ne ferme lui même le classeur qu'à la fin de la procédure et dc qu'il se fiche de ma fermeture par le code.
Il faudrait donc que je puisse avoir accès à la procédure AfterClose et que j'arrive à récupérer le nom de fichier.
Ca semble logique ou pas ?
C'est faisable ?
Salut!
Tu as essayé un "DoEvents" ? (entre la fermeture et l'import)
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager