Lunikmarty
Messages postés55Date d'inscriptionlundi 3 mars 2008StatutMembreDernière intervention17 avril 2008
-
16 avril 2008 à 19:55
Lunikmarty
Messages postés55Date d'inscriptionlundi 3 mars 2008StatutMembreDernière intervention17 avril 2008
-
16 avril 2008 à 23:58
Programmeur et programmeuse, Bonjour à tous !
Voila, j'ai un petit problème que je n'arrive pas à resoudre. Ma source VB6 lance une application Excel sans l'afficher : le traitement des différents classeurs tourne pendant 2 minutes environs (le temps de faire quelques statistiques) puis je quitte mon application Excel. Le problème est que pendant ce laps de temps, si l'utilisateur ouvre un nouveau classeur Excel tous mes autres classeurs s'affichent !!!
Comment faire pour que mes classeur ne s'affiche pas, c'est à dire qu'une autre application Excel se lance si l'utilisateur ouvre un nouveau classeur ?
Merci pour vos réponses et bonne soirée à tous.
bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 novembre 201314 16 avril 2008 à 22:12
Salut,
si je ne me trompe pas ton probleme n'existe que dans le cas ou un utilisateur double clique sur un fichier excel. Dans ce cas le fichier s'ouvre dans la session deja existante. Par contre si tu ouvres excel a partir de l'exe via un racourci une nouvelle session excel sera créée et dans ce cas tes fichier reste cahés dans la session deja existante.
Donc ceci devrait t'aider :
Application.IgnoreRemoteRequests = True
la propriete IgnoreRemoteRequests permet de privatiser ton instance ce qui oblige windows a relancer un nouvelle instance lors d'un double clique sur un fichier lier a l'exe . Attention de ne pas oublier de repasser a false avant fermer ton instance
jrivet
Messages postés7393Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201259 16 avril 2008 à 22:40
Re
>[auteur/BIGFISHLEVRAI/510670.aspx bigfish_le vrai] :je la connaissais pas celle ci merci j'en apprendrai tout les jours (j'adore l'info pour cela)
>[auteur/LUNIKMARTY/1330946.aspx Lunikmarty] :Le mieux c'est encore d'essayer non?
DANS MA CLASSE
----------------------------------------------------------------------
Private W_FichierExcelEntree As Excel.Application
Private W_xlBookCalib As Excel.Workbook
Private W_xlBookPassP As Excel.Workbook
Private W_xlBookStat As Excel.Workbook
Private W_xlSheetCalib As Excel.Worksheet
Private W_xlSheetPassP As Excel.Worksheet
Private W_xlSheetStat As Excel.Worksheet
Public Function Ouverture()
On Error GoTo Ouverture_Error
' Ouverture de l'Application EXCEL
Set W_FichierExcelEntree = New Excel.Application
' Chagement d'Excel plus rapide
W_FichierExcelEntree.ScreenUpdating = False
'Ouverture du classeur Calibration
Set W_xlBookCalib = W_FichierExcelEntree.Workbooks.Open(G_cheminCalib)
Set W_xlSheetCalib = W_xlBookCalib.Worksheets(1)
'Ouverture du fichier PassPredict
Set W_xlBookPassP = W_FichierExcelEntree.Workbooks.Open(G_cheminPass)
Set W_xlSheetPassP = W_xlBookPassP.Worksheets(1)
' Creation d'un nouveau classeur Excel (statistique)
Set W_xlBookStat = W_FichierExcelEntree.Workbooks.Add
Set W_xlSheetStat = W_xlBookStat.Worksheets(1)
On Error GoTo 0
Exit Function
Ouverture_Error:
MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure Ouverture of Module de classe CLS_TraitementExcel"
G_AnnulerTraitement = True
End Function
----------------------------------------------------------------------
Vous n’avez pas trouvé la réponse que vous recherchez ?
Lunikmarty
Messages postés55Date d'inscriptionlundi 3 mars 2008StatutMembreDernière intervention17 avril 2008 16 avril 2008 à 20:34
Ah, d'accord! Mais le prob c'est qu'ils seront tous de même visible dans la barre des tâches... L'utilisateur peut y touché alors que le traitement est en cours >> cela engendre des erreurs à la création de mes histogrammes un peut plus loin dans mon application...
Lunikmarty
Messages postés55Date d'inscriptionlundi 3 mars 2008StatutMembreDernière intervention17 avril 2008 16 avril 2008 à 20:39
Re,
Oui, sa serait parfait. Je ne sais pas trop comment faire: Il y a une méthode pour cela ? Je vais essayé de voir sur le net si je trouve des tutaux ou des sources sur le sujet. Merci du conseil !
bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 novembre 201314 16 avril 2008 à 23:48
...
jrivet : heureux d'avoir pu t'apprendre quelque chose.
Lunikmarty :
effectivement pour word y a pas. J'ai rarement utiliser le vba dans word mise a par pour aider, donc je ne peux pas beaucoup aider la dessus. Par contre je viens d'essayer de lancer plusieur instance word et ce que je ne comprend pas bien c'est que j'ai bien plusieur fenetres word, apparament independentes, mais dans un seul process !
pas sur que cela reponde completement a ta question mais peut etre un debut de piste.
Sinon apres ca il te faudrat peut etre trouvé une solution par les API.
Lunikmarty
Messages postés55Date d'inscriptionlundi 3 mars 2008StatutMembreDernière intervention17 avril 2008 16 avril 2008 à 23:50
Bonsoir,
En faite, le problème ne se pose pas avec Word: l'instance est systématiquement isoler (autrement dit, c'est comme si la propriété IgnoreRemoteRequests - qui n'existe pas sous Word - est automatiquement mise à True ). Le problème dans mon cas est que j'avais mis la ligne " G_RapportWord.ScreenUpdating = False " pour charger mon application plus rapidement >> la page du document ne s'affichait donc pas.
Merci encore pour ta réponse Big_Fish, Bonne soirée à tous.
Lunikmarty
Messages postés55Date d'inscriptionlundi 3 mars 2008StatutMembreDernière intervention17 avril 2008 16 avril 2008 à 23:58
"ce que je ne comprend pas bien c'est que j'ai bien plusieur fenetres word"
>> En faite ceci est tous à fais normal: Une seul application Word est lancé, chaque document est indépendant (accès en lecture uniquement). La preuve, pour Word des fichiers temporaire sont crée (~$DocEnCours) mais pas sous Excel. Dans mon cas, la propriété ScreenUpdating s'appliquer à l'application Word ... est donc à l'enssemble des documents ouvert. Merci encore pour ton aide !!!