Mon fichier tout seul dans sa fenêtre Excel ^^

GeoTrouvePas

XLDnaute Impliqué
Coucou amis Exceliens !

Voilà un petit moment que je gratte sur le net sans trouver ce qui me convient vraiment alors je me permets de poster.

Pour une question d'esthétique, je souhaiterais qu'à l'ouverture de mon application vba, ma fenêtre Excel soit réduite pour que seul mon Userform apparaisse. Jusque là pas de soucis puisque j'utilise :

Code:
Application.WindowState = xlMinimized

Toutefois, je ne voudrais pas que l'utilisateur soit bloqué et ne puisse pas utiliser d'autre fichier excel en même temps. Je souhaiterai donc connaître la marche à suivre pour que mon fichier Excel s'ouvre dans une fenêtre indépendante, qui soit masquée à l'ouverture et dans laquelle on ne pourrait pas ouvrir d'autres fichiers excel.

Existe - t - il une telle procédure ?

Merci d'avance à tous et bon week end à tout le monde.
 

tototiti2008

XLDnaute Barbatruc
Re : Mon fichier tout seul dans sa fenêtre Excel ^^

Bonjour GeoTrouvePas,


Toutefois, je ne voudrais pas que l'utilisateur soit bloqué et ne puisse pas utiliser d'autre fichier excel en même temps.

mon fichier Excel s'ouvre dans une fenêtre indépendante, qui soit masquée à l'ouverture et dans laquelle on ne pourrait pas ouvrir d'autres fichiers excel.

L'utilisateur doit pouvoir ouvrir d'autres classeurs Excel en même temps, ou pas ? Je ne comprend pas bien

Edit :Bon j'ai relu et peut-être comme ça :
Code:
Application.Visible = False
 
Dernière édition:

YANN-56

XLDnaute Barbatruc
Re : Mon fichier tout seul dans sa fenêtre Excel ^^

Bonjour GeoTrouvera, tototiti, et à ceux qui passeront par ici.

Tu peux utiliser:

Code:
Application.Visible = False

Mais pour l'ouverture d'un autre Classeur, et le visualiser,
tu seras obligé de créer un évènement pour remettre en place Excel par:

Code:
Application.Visible = True

A noter qu'à la fermeture de ta boite de dialogue, il ne faudra
pas oublier ce dernier ordre; sinon risque de surprises.

Amicalement

Yann
 

GeoTrouvePas

XLDnaute Impliqué
Re : Mon fichier tout seul dans sa fenêtre Excel ^^

L'utilisateur doit pouvoir ouvrir d'autres classeurs Excel en même temps, ou pas ? Je ne comprend pas bien

Bon ok Toto, en me relisant, j'avoue que c'était pas forcément très explicite. En fait je voudrais que mon application reste seule dans une instance Excel.

Pour illustrer ça, je n'ai que cet exemple :

- Tu ouvres Excel. Tu as alors un fichier "Classeur1".
- Tu fais "Fichier/Nouveau" et tu as alors un nouveau fichier appelé "Classeur2"
- Tu réouvres Excel. Tu as alors un nouveau fichier "Classeur3" qui est dans une instance Excel à part.

Tu t'en rends compte quand tu veux basculer d'un fichier à un autre en utilisant le menu "Fenêtre".

Classeur1 et Classeur2 apparaissent dans ce menu dans la première instance. Par contre Classeur3 n'apparaît que dans le menu de la seconde instance.

Je sais pas si j'ai été suffisament clair dans mon explication. Je l'espère.

Bon week end à tous et merci d'avance.
 

Pierrot93

XLDnaute Barbatruc
Re : Mon fichier tout seul dans sa fenêtre Excel ^^

Bonjour à tous

A priori si tu ouvres un classeur à partir d'une instance Excel, ce même classeur restera dans la même instance.... D'autre part, perso, je ne trouve pas que cela soit top de travailler sur plusieurs instances d'une même appli... Fonction des codes utilisés et de ce que l'on fait, cela peut provoquer des erreurs qu'il est difficile de cerner... De plus si tu veux distribuer ton appli à d'autres... Enfin c'est juste mon avis...

bonne journée
@+
 

PMO2

XLDnaute Accro
Re : Mon fichier tout seul dans sa fenêtre Excel ^^

Bonjour,

Une piste compliquée avec la démarche suivante

CLASSEUR 1 CONTENANT LE PROGRAMME
1) créez un classeur "toto.xls" et mettez le dans C:\
2) créez un UserForm1 et un Label1
3) dans la fenêtre de code du UserForm, copiez le code suivant
Code:
Dim Stopper As Boolean

Private Sub UserForm_Activate()
Dim MyTime As SYSTEMTIME

'--- pseudo traitement (votre traitement) ---
Do Until Stopper
  DoEvents
  GetLocalTime MyTime
  With MyTime
    Label1.Caption = .wHour & ":" & .wMinute & ":" & .wSecond & "  " & .wMilliseconds
  End With
Loop
'-------------------------

End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Dim rep
rep = MsgBox("Voulez-vous arréter le programme ?", vbYesNo)
If rep = vbNo Then
  Cancel = True
  Exit Sub
End If
Stopper = True
Application.Quit
End Sub
4) dans un module standard, copiez le code suivant
Code:
Declare Sub GetLocalTime Lib "kernel32" (lpSystemTime As SYSTEMTIME)
Declare Function ShowWindow& Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long)

Type SYSTEMTIME
  wYear As Integer
  wMonth As Integer
  wDayOfWeek As Integer
  wDay As Integer
  wHour As Integer
  wMinute As Integer
  wSecond As Integer
  wMilliseconds As Integer
End Type
  
Const SW_HIDE As Long = 0

Sub Masque()
ShowWindow Application.hwnd, SW_HIDE
End Sub
5) dans la fenêtre de code de ThisWorkbook, copiez le code suivant
Code:
Private Sub Workbook_Open()
Call Masque
UserForm1.Show vbModeless
End Sub



CLASSEUR 2 lançant le classeur contenant le programme
1) créez un classeur "Ouvre toto dans une nouvelle instance Excel.xls" (par exemple) et mettez le sur le Bureau
2) dans la fenêtre de code de ThisWorkbook, copiez le code suivant
Code:
Const MON_FICHIER As String = "c:\toto.xls" 'à adapter

Private Sub Workbook_Open()
Dim XL As Application
Dim NbWB&
NbWB& = Workbooks.Count
Set XL = CreateObject("Excel.Application")
XL.Workbooks.Open MON_FICHIER
If NbWB = 1 Then Application.Quit
ThisWorkbook.Close False
End Sub
3) adaptez éventuellement la constante MON_FICHIER du chemin et du nom réels du classeur 1 "toto.xls"


Le classeur 2 se contente de créer une nouvelle instance Excel et d'y ouvrir l'autre classeur ; puis il se ferme.
a) Aucune instance d'Excel n'est présente
b) Un ou des classeurs sont dans une instance préexistante
Pour les 2 cas, je n'ai pas connu de problème d'utilisation ???

RESTRICTION
Si l'utilisateur veux ouvrir un fichier xls en double cliquant sur son icône et ceci durant l'exécution du programme,
le fichier ne s'ouvre pas et je ne sais pas pourquoi ???
Pour contourner le problème : ouvrir une nouvelle instance d'Excel et soit utiliser le menu Fichier/Ouvrir...
soit faire glisser l'icône du fichier xls. dans la fenêtre d'Excel.

Cordialement.

PMO
 

GeoTrouvePas

XLDnaute Impliqué
Re : Mon fichier tout seul dans sa fenêtre Excel ^^

Et bien merci à Toto, Yann pour leur aide !

Merci également à PMO2 pour ta solution qui m'a l'air bien sympathique. Je vais étudier ça de près. Malheureusement, Pierrot m'a un peu refroidi de procéder comme ça ^^. Merci à lui pour ses conseils que je risque de suivre à la lettre ^^.

Bon début de semaine à tous !
 

Discussions similaires

Réponses
9
Affichages
118
Réponses
2
Affichages
239