Fenetre agrandie au demarrage de classeur

R@chid

XLDnaute Barbatruc
Bonjour @ tous,
je veux bien démarrer un classeur Excel avec fenêtre agrandie et en désactivant l’icône de restauration de la fenêtre..
Classeur.jpg

Merci
 

Pièces jointes

  • Classeur.jpg
    Classeur.jpg
    18.5 KB · Affichages: 126
  • Classeur.jpg
    Classeur.jpg
    18.5 KB · Affichages: 125

david84

XLDnaute Barbatruc
Re : Fenetre agrandie au demarrage de classeur

Bonjour,
pour la fenêtre agrandie :
Code:
Application.WindowState = xlMaximized

Pour le reste :
Code:
Option Explicit' Origine : fred - chapeaux.ronds@wanadoo.fr


Private Declare Function DeleteMenu Lib "user32" (ByVal _
                hMenu As Long, ByVal nPosition As Long, _
                ByVal wFlags As Long) As Long
Private Declare Function GetSystemMenu Lib "user32" (ByVal _
                hwnd As Long, ByVal bRevert As Long) As Long
Private Declare Function GetWindowLong Lib "user32" Alias _
                "GetWindowLongA" (ByVal hwnd As Long, ByVal _
                nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias _
                "SetWindowLongA" (ByVal hwnd As Long, ByVal _
                nIndex As Long, ByVal dwNewLong As Long) As Long


Private Const GWL_STYLE = (-16)
Private Const MF_BYCOMMAND = &H0&
Private Const SC_MINIMIZE = &HF020
Private Const SC_MAXIMIZE = &HF030
Private Const WS_MAXIMIZEBOX = &H10000


Private Sub Désactiver_Maximiser()
Dim hMenu As Long, k As Long
hMenu = GetSystemMenu(Application.hwnd, False)
k = DeleteMenu(hMenu, SC_MAXIMIZE, MF_BYCOMMAND)
k = GetWindowLong(Application.hwnd, GWL_STYLE)
k = k Xor WS_MAXIMIZEBOX
SetWindowLong Application.hwnd, GWL_STYLE, k
End Sub


Private Sub Réactiver_Maximiser()
Dim hMenu As Long, k As Long
hMenu = GetSystemMenu(Application.hwnd, True)
k = DeleteMenu(hMenu, SC_MAXIMIZE, MF_BYCOMMAND)
k = GetWindowLong(Application.hwnd, GWL_STYLE)
k = k Xor WS_MAXIMIZEBOX
SetWindowLong Application.hwnd, GWL_STYLE, k
End Sub
A+
 

R@chid

XLDnaute Barbatruc
Re : Fenetre agrandie au demarrage de classeur

Bonsoir @ tous,
Salut Tentative, Salut David84,
@ Tentative :
Appartement c'est pas çà ce que je cherche à faire.

@ David84 :
J'ai pas pu utiliser le code, car je ne sais pas où devrai-je le mettre ? :confused: ;)

@ + +
 

david84

XLDnaute Barbatruc
Re : Fenetre agrandie au demarrage de classeur

Bonsoir,
tu le colles dans un module de feuille et tu affectes 2 boutons sur ta feuille (l'un pour la désactivation et l'autre pour l'activation) pour tester.
Ci-joint une autre version plus compacte à tester de ton côté :
Code:
Option Explicit

  Declare Function GetWindowLong Lib "user32" Alias _
                  "GetWindowLongA" (ByVal hwnd As Long, ByVal _
                  nIndex As Long) As Long
  Declare Function SetWindowLong Lib "user32" Alias _
                  "SetWindowLongA" (ByVal hwnd As Long, ByVal _
                  nIndex As Long, ByVal dwNewLong As Long) As Long

Sub Désactiver()
Application.WindowState = xlMaximized
SetWindowLong Application.hwnd, -16, GetWindowLong(Application.hwnd, -16) And Not &H10000
End Sub

Sub Activer()
Application.WindowState = xlMaximized
SetWindowLong Application.hwnd, -16, GetWindowLong(Application.hwnd, -16) Or &H10000
End Sub
A+
 

Tentative

XLDnaute Occasionnel
Re : Fenetre agrandie au demarrage de classeur

Bonjour,

J'ai placé le code de David84 (post #3) dans le module5 d'un projet; mais j'ai dû enlever la mention "Private" devant les noms de macro.

J'ai placé l'appel dans ThisWorkbook

Code:
Private Sub Workbook_Open()
    Module5.Desactiver
    Application.WindowState = xlMaximized
End Sub

Sub Workbook_BeforeClose(Cancel As Boolean)
   Module5.Activer
End Sub

Par contre, le double clique sur la barre du haut continue à fenêtrer ou à maximiser à fenêtre.


Tentative
 
Dernière édition:

R@chid

XLDnaute Barbatruc
Re : Fenetre agrandie au demarrage de classeur

Bonsoir David84,
tout d'abord merci pour tes interventions, pour le premier code, j'ai supprimé les "Private" pour que je puisse l'affecter à des boutons, alors j'ai intégré Désactiver_Maximiser à Workbook_Open() mais rien ne se passe.

pour le deuxième, aussi la même chose :confused:

je suis sous Excel2010

@ te relire
 

david84

XLDnaute Barbatruc
Re : Fenetre agrandie au demarrage de classeur

Bonsoir David84,
tout d'abord merci pour tes interventions, pour le premier code, j'ai supprimé les "Private" pour que je puisse l'affecter à des boutons, alors j'ai intégré Désactiver_Maximiser à Workbook_Open() mais rien ne se passe.

pour le deuxième, aussi la même chose :confused:

je suis sous Excel2010

@ te relire

Bonjour,
vois le classeur joint (testé sous Excel 2007 et 2010 64 bits).
Après si cela fonctionne tu peux placer le code de désactivation dans le Workbook_open et celui de réactivation dans le Workbook_beforeclose.
Par contre, le double clique sur la barre du haut continue à fenêtrer ou à maximiser à fenêtre.
Exact mais la question initiale est
je veux bien démarrer un classeur Excel avec fenêtre agrandie et en désactivant l’icône de restauration de la fenêtre
et là c'est le cas...ce qui ne veut pas dire qu'il n'y a pas d'échappatoire...dont cette possibilité.
Pour l'instant je n'ai pas cherché plus loin.
A+
 

Pièces jointes

  • test_rachid.xls
    34 KB · Affichages: 56
  • test_rachid.xls
    34 KB · Affichages: 59
  • test_rachid.xls
    34 KB · Affichages: 59

david84

XLDnaute Barbatruc
Re : Fenetre agrandie au demarrage de classeur

Bonjour,
une autre possibilité en affichage plein écran :
Code:
Option Explicit 

Declare Sub GetClientRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT)
Declare Sub ClientToScreen Lib "user32" (ByVal hwnd As Long, lpPoint As POINT)                                      
Declare Sub ClipCursor Lib "user32" (lpRect As Any)
Declare Sub OffsetRect Lib "user32" (lpRect As RECT, ByVal x As Long, ByVal y As Long)

Type RECT
  Left As Long
  Top As Long
  Right As Long
  Bottom As Long
End Type

Type POINT
  x As Long
  y As Long
End Type
                
Sub Désactiver2()
Dim hwnd As Long
Dim Zone As RECT
Dim Pos As POINT

  hwnd = Application.hwnd
  Application.DisplayFullScreen = True
  Application.OnKey "{ESC}", ""
  
  GetClientRect hwnd, Zone

  Pos.x = Zone.Left
  Pos.y = Zone.Top

  ClientToScreen hwnd, Pos
  OffsetRect Zone, Pos.x, Pos.y
  ClipCursor Zone
 End Sub
 
Sub Réactiver2()
 Application.DisplayFullScreen = False
 Application.OnKey "{ESC}"
 ClipCursor ByVal 0&
End Sub
A+
 

R@chid

XLDnaute Barbatruc
Re : Fenetre agrandie au demarrage de classeur

Bonsoir @ tous,
@ david84 :
merci pour le fichier, mais encore ça marche pas sur mon PC, je lance le fichier, j'active les macros, je clique sur Désactiver, et quand je restaure la fenêtre elle répond..
c'est bizarre que ça marche pas sur mon PC, je suis sous XL2010 et WinXP :confused:
 

Tentative

XLDnaute Occasionnel
Re : Fenetre agrandie au demarrage de classeur

Bonjour

Sur ma machine, l'effet s'applique si je modifie le code ainsi. I.E., j'oblige la fenêtre en normal, puis en grand. Ça fait scintiller l'écran. Mais ça fonctionne.
Code:
Sub Désactiver()
 SetWindowLong Application.hwnd, -16, GetWindowLong(Application.hwnd, -16) And Not &H10000
 Application.WindowState = xlNormal
 Application.WindowState = xlMaximized
 
 End Sub
 
Sub Activer()
 SetWindowLong Application.hwnd, -16, GetWindowLong(Application.hwnd, -16) Or &H10000
 Application.WindowState = xlNormal
 Application.WindowState = xlMaximized

 End Sub


Tentative
 

david84

XLDnaute Barbatruc
Re : Fenetre agrandie au demarrage de classeur

Voilà ce que cela doit donner :
screenshot.25.png

Et si tu essaies le dernier code tu verras que tu n'obtiens pas cela, par contre essaie d'atteindre les 3 icônes ou de cliquer dans la barre de titre et tu comprendras.
A+
 

Discussions similaires

Réponses
1
Affichages
115
Réponses
19
Affichages
600
Réponses
16
Affichages
698

Statistiques des forums

Discussions
312 334
Messages
2 087 384
Membres
103 530
dernier inscrit
dieubrice