VB6: Ouverture de l'application Excel !

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

16 réponses

bigfish_le vrai
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
12
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

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

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

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

16 avril 2008 à 20:07
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
----------------------------------------------------------------------
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jrivet
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
59
16 avril 2008 à 20:15
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
0
Lunikmarty
Messages postés
55
Date d'inscription
lundi 3 mars 2008
Statut
Membre
Dernière intervention
17 avril 2008

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

16 avril 2008 à 20:17
Quesque tu entend par diminué les classeur ?!
0
jrivet
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
59
16 avril 2008 à 20:20
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
0
Lunikmarty
Messages postés
55
Date d'inscription
lundi 3 mars 2008
Statut
Membre
Dernière intervention
17 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...
0
jrivet
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
59
16 avril 2008 à 20:35
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
0
Lunikmarty
Messages postés
55
Date d'inscription
lundi 3 mars 2008
Statut
Membre
Dernière intervention
17 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 !
0
Lunikmarty
Messages postés
55
Date d'inscription
lundi 3 mars 2008
Statut
Membre
Dernière intervention
17 avril 2008

16 avril 2008 à 22:38
Un grand merci !!

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

16 avril 2008 à 22:49
Re jrivet,

Je suis justement en train de cherché ^^ ! Pour l'instant je n'ai pas trouver... mais je ne désepére pas.
0
bigfish_le vrai
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
12
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 !

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