VB6: Ouverture de l'application Excel ! [Résolu]

Signaler
Messages postés
55
Date d'inscription
lundi 3 mars 2008
Statut
Membre
Dernière intervention
17 avril 2008
-
Messages postés
55
Date d'inscription
lundi 3 mars 2008
Statut
Membre
Dernière intervention
17 avril 2008
-
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.

16 réponses

Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
9


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

A+
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
56
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?

<hr size="2" width="100%" />@+: Ju£i?n
Pensez: Réponse
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
56
Salut,
De quelle manière ouvres tu l'application EXCEL?

<hr size="2" width="100%" />@+: Ju£i?n
Pensez: Réponse
Messages postés
55
Date d'inscription
lundi 3 mars 2008
Statut
Membre
Dernière intervention
17 avril 2008

J'ai crée un module de classe pour mes traitement, Voila le code:

DANS MA FORM:
---------------------------------------------------------------------

    Set Excel = New CLS_TraitementExcel

    Excel.Ouverture

----------------------------------------------------------------------

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
----------------------------------------------------------------------
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
56
Salut,
Ah bah la je ne sais pas...
Mais tu peux essayer de diminuer les classeurs à leur ouverture

<hr size="2" width="100%" />@+: Ju£i?n
Pensez: Réponse
Messages postés
55
Date d'inscription
lundi 3 mars 2008
Statut
Membre
Dernière intervention
17 avril 2008

Juste une petite précision, je travail avec Excel 2002 (Windows édition Profesionnal) ... mais je ne pense pas que le problème vienne de là.
Messages postés
55
Date d'inscription
lundi 3 mars 2008
Statut
Membre
Dernière intervention
17 avril 2008

Quesque tu entend par diminué les classeur ?!
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
56
Re,
Et bien faire comme si tu appuyais sur le trait (-) dans les controlBox du classeur

<hr size="2" width="100%" />@+: Ju£i?n
Pensez: Réponse
Messages postés
55
Date d'inscription
lundi 3 mars 2008
Statut
Membre
Dernière intervention
17 avril 2008

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...
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
56
Salut,
Tu peux essayer de rendre Disable les Classeurs, ou bien les protéger pendant le traitement.

<hr size="2" width="100%" />@+: Ju£i?n
Pensez: Réponse
Messages postés
55
Date d'inscription
lundi 3 mars 2008
Statut
Membre
Dernière intervention
17 avril 2008

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 !
Messages postés
55
Date d'inscription
lundi 3 mars 2008
Statut
Membre
Dernière intervention
17 avril 2008

Un grand merci !!

>> J'ai le même problème avec Word, Exite t'il une fonction similaire ?
Messages postés
55
Date d'inscription
lundi 3 mars 2008
Statut
Membre
Dernière intervention
17 avril 2008

Re jrivet,

Je suis justement en train de cherché ^^ ! Pour l'instant je n'ai pas trouver... mais je ne désepére pas.
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
9
...

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 !

A tient !... vois ce que je viens de trouver  ici

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.

Bon courage.

A+
Messages postés
55
Date d'inscription
lundi 3 mars 2008
Statut
Membre
Dernière intervention
17 avril 2008

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.
Messages postés
55
Date d'inscription
lundi 3 mars 2008
Statut
Membre
Dernière intervention
17 avril 2008

"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 !!!