Drake59730
Messages postés26Date d'inscriptionmardi 30 octobre 2007StatutMembreDernière intervention27 juin 2012
-
27 juin 2012 à 12:45
Drake59730
Messages postés26Date d'inscriptionmardi 30 octobre 2007StatutMembreDernière intervention27 juin 2012
-
27 juin 2012 à 15:53
Bonjour à tous,
J'ai un petit soucis dans mon application lorsque je ferme 2 fichiers exel 2000 dans mon appli VB6. Une application excel ne ferme pas et reste dans le gestionnaire des tâches.
Voici mon code pour la fermeture:
'Sauvegarde et fermeture du fichier
Trs_Montage.SaveAs FileName:=chemin 'On sauvegarde le classeur Trs_montage a l'adresse contenue dans chemin
Feuille_TRS_2010.Close 'Fermeture de feuille Excel
Feuille_TRS_2011.Close 'Fermeture de feuille Excel
Feuille_TRS_2016.Close 'Fermeture de feuille Excel
Feuille_TRS_2029.Close 'Fermeture de feuille Excel
Feuille_TRS_2555.Close 'Fermeture de feuille Excel
Feuille_Analyse_Production.Close 'Fermeture de feuille Excel
Trs_Montage.ActiveDocument.Close
Trs_Montage.Close 'Fermeture du classeur Excel
wsExcel.Close
planning.Close
appliexcel.quit 'Fermeture des applications Excel
appExcel.quit
'Désallocation mémoire
Set Feuille_TRS_2010 = Nothing
Set Feuille_TRS_2011 = Nothing
Set Feuille_TRS_2016 = Nothing
Set Feuille_TRS_2029 = Nothing
Set Feuille_TRS_2555 = Nothing
Set Feuille_Analyse_Production = Nothing
Set Trs_Montage = Nothing
Set appliexcel = Nothing
Set wsExcel = Nothing
Set planning = Nothing
Set appExcel = Nothing
Set Groupofs_BS2555 = Nothing
J'ai tout essayé, il doit y avoir plein de commandes en doublons...
A cause de ça je ne peux plus ouvrir d'autre fichier excel sur le PC sans aller killer l'appli excel dans le gestionnaire des taches...
bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 novembre 201315 27 juin 2012 à 14:20
Salut,
alors déjà pour éviter de te retrouver prisonnier de ta session "non graphique" tu peux la privatiser en ajoutant la ligne suivante après la création de ta session :
appliexcel.IgnoreRemoteRequests = True
Cela aura pour effet d'obliger windows à ouvrir une nouvelle session excel si un fichier doit être ouvert. Note que cette propriété ne s'applique qu'a la session sur la quelle elle est appliquée.
Ceci étant du bricolage, il faudrait maintenant comprendre ce qui ce passe mais pour cela il faudrait savoir comment tu crées ta session excel !
Drake59730
Messages postés26Date d'inscriptionmardi 30 octobre 2007StatutMembreDernière intervention27 juin 2012 27 juin 2012 à 15:26
En fait maintenant quand j'ouvre un autre fichier excel sur ce pc, j'ai bien excel qui se lance mais il n'ouvre plus de classeur et il faut que j'aille le chercher en faisant fichier/ouvrir...
bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 novembre 201315 27 juin 2012 à 15:40
re,
ok, mais comment est dimensionnée ta variable appExcel ?
En générale ce problème vient du dimensionnement de la variable qui reçoit l'appli excel.
Il faut éviter d'utiliser "Excel.Application" et préférer le dimensionnement en "Object".
Tu peux pendant le développement de ton programme faire ce référencement pour avoir accès au objets, propriétées etc d'excel. Cela facilite la programmation mais supprime la référence avant essai et utilise une variable Object.
Vois l'explication de l'ami steph01190 qui à fait un tuto sur le sujet :
[Manipuler des fichiers excel sous VB6 sans référencer excel et sans laisser de processus dans le gestionnaire des taches Manipuler des fichiers excel sous VB6 sans référencer excel et sans laisser de processus dans le gestionnaire des taches]
A+
Vous n’avez pas trouvé la réponse que vous recherchez ?
Drake59730
Messages postés26Date d'inscriptionmardi 30 octobre 2007StatutMembreDernière intervention27 juin 2012 27 juin 2012 à 15:53
Les variables sont dimensionnées comme suit:
Dim appliexcel As Object 'Déclaration de appliexcel comme un objet (pour ensuite le définir en application Excel)
Dim Trs_Montage As Object 'Déclaration de trs_Montage comme un objet (pour ensuite le définir en Classeur Excel)
Dim Page_active As Object
Dim Feuille_TRS_2010 As Object 'Déclaration de feuille_TRS_2010 comme un objet (pour ensuite le définir en feuille Excel)
Dim Feuille_TRS_2011 As Object 'Déclaration de feuille_TRS_2011 comme un objet (pour ensuite le définir en feuille Excel)
Dim Feuille_TRS_2016 As Object 'Déclaration de feuille_TRS_2016 comme un objet (pour ensuite le définir en feuille Excel)
Dim Feuille_TRS_2029 As Object 'Déclaration de feuille_TRS_2029 comme un objet (pour ensuite le définir en feuille Excel)
Dim Feuille_TRS_2555 As Object 'Déclaration de feuille_TRS_2555 comme un objet (pour ensuite le définir en feuille Excel)
Dim Feuille_Atelier_montage As Object
Dim Feuille_machine_analysée As Object
Dim Feuille_Analyse_Production As Object 'Déclaration de feuille_TRS_2010 comme un objet (pour ensuite le définir en feuille Excel)
'Déclarations pour ouverture du calendrier
Dim appExcel As Object 'Déclaration de app.Excel comme un objet (pour ensuite le définir en application Excel)
Dim planning As Object 'Déclaration de planning comme un objet (pour ensuite le définir en classeur Excel)
Dim wsExcel As Object 'Déclaration de wsExcel comme un objet (pour ensuite le définir en feuille Excel)
Il me semble que ça a l'air conforme à ce qu'explique steph01190.