XL 2021 Taille de fenêtre à l'ouverture

jcpamart

XLDnaute Occasionnel
Salut,
Une question peut être idiote, mais je la pose quand même :
Peut on fixer la dimension de la fenêtre d'un fichier excel à l'ouverture ?

Alors pourquoi je pose cette question ? Tout simplement parce que j'ai un écran de 49'' et que dernièrement, mes fichiers s'ouvraient à quelques mm de la surface totale de l'écran.
Du coup, si j'ouvrais un fichier par erreur, j'avais tendance à clicker juste derrière, se qui fermait mon navigateur et non le fichier excel.

J'ai donc repris mon (mes) fichier(s) en question pour les modifier à l'équivalent d'un 1/3 de l'écran.

Mais peut on fixer la tailler d'ouverture d'une fichier, en tout cas celui d'un XLSX ?

Merci et bon WE !
 

TooFatBoy

XLDnaute Barbatruc
Et bien le fichier Excel que j'utilise. un .xlsx.....
OK, donc il s'agit d'un seul classeur.
Du coup c'est facile, tu lui ajoutes une macro et tu l'enregistres en .xlsm. ;)

La macro en question peut être celle-ci :
VB:
Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long

Private Sub Workbook_Open()
'
    ActiveWindow.WindowState = xlNormal

    MaLargeur = GetSystemMetrics(0) / 4
    MaHauteur = GetSystemMetrics(1) / 4

    Application.Width = MaLargeur
    Application.Height = MaHauteur

    Application.Left = MaLargeur
    Application.Top = MaHauteur

End Sub
 

patricktoulon

XLDnaute Barbatruc
Bonjour à tous
juste en passant
me semble t il
la fonction getsystemmetric( 0 ou 1) renvoie les dimensions en pixel si je me trompe pas

donc (/4) c'est le quart toujours en pixel
hors le .width ou .heigth de l'application s'applique en points
donc si on l'applique le code post#34 comme tel la fenêtre ne peux pas faire le quart de l’écran
en tout cas si c'est bien l'intention dans le code proposé en post#34
il vous faut la convertir cette mesure en point
 

TooFatBoy

XLDnaute Barbatruc
la fonction getsystemmetric( 0 ou 1) renvoie les dimensions en pixel si je me trompe pas
C'est exact.


si on l'applique le code post#34 comme tel la fenêtre ne peux pas faire le quart de l’écran
en tout cas si c'est bien l'intention dans le code proposé en post#34
Non, le but n'est pas de faire le quart de l'écran mais le tiers. 😉

C'est vrai que tu n'aimes pas les simplifications, donc je détaille rien qu'exprès pour toi 😉 :
(1/3) / (4/3) = 1/4
 
Dernière édition:

TooFatBoy

XLDnaute Barbatruc
OK merci, je maitrise pas trop mais j'essaie dès que j'ai un petit moment
Voir pièce jointe (et dis-mois si chez toi ça fait bien un tiers de l'écran comme demandé).



A la limite c'est mieux que rien, mais mon écran fait 49'' car je dois en temps que chef d'entreprise gérer des plans de trésorerie, ce qui suppose d'avoir à droite mon plan de tréso et à gauche mes comptes en banque.
Ce n'est pas la taille qui compte ! ;)

Si c'est un téléviseur, je suppose qu'il accepte du 3840x2160.
Tu as donc configuré ta CG pour qu'elle sorte en 3840x2160.
Non ?

As-tu pensé à utiliser deux écrans ?

Je ne sais pas comment ça fonctionne sous W11, mais sous W10 quand tu es au bon endroit, le fond de la croix de fermeture d'une fenêtre passe en rouge, et si à ce moment-là on clique ça ferme la fenêtre.
Si le fond de la croix n'et pas rouge, c'est qu'on est à côté et donc si on clique ça ne ferme pas la fenêtre.
 

Pièces jointes

  • Taille-fenetre_un-tiers-de-l-ecran.xlsm
    17.6 KB · Affichages: 3

jcpamart

XLDnaute Occasionnel
Salut @TooFatBoy ,
Alors non ce n'est pas un écran de TV, mais bien un moniteur pour PC. Samsung C49HG9x, et en résolution je suis en 3840x1080 144 HZ.
Quand j'ai lancé ton fichier ça m'a mis ça en message d'erreur....
Je pense que W11 ne réagit pas du tout pareil que 10 en fait....
 

Pièces jointes

  • 2023_07_17_13_41_19_Microsoft_Visual_Basic_pour_Applications.jpg
    2023_07_17_13_41_19_Microsoft_Visual_Basic_pour_Applications.jpg
    30.1 KB · Affichages: 14

TooFatBoy

XLDnaute Barbatruc
L'erreur vient du fait que tu utilises une version 64 bits d'Excel.
Il me semblait bien qu'il suffisait d'ajouter un "PtrSafe" quelque part, mais je ne sais jamais où exactement dans la déclaration de la fonction...
Donc j'ai vérifié sur le site de Microsoft, et c'est juste avant le mot "Function", ce qui donne (comme l'a déjà donné Zon) :
Enrichi (BBcode):
Private Declare PtrSafe Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long
 

patricktoulon

XLDnaute Barbatruc
bonjour
perso sans api on a le même résultat
test1--> api(vba7/6)
test2 sans api
VB:
#If VBA7 Then
Private Declare PtrSafe Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long
#Else
Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long
#End If
Sub test1()
'
    ActiveWindow.WindowState = xlNormal

    MaLargeur = GetSystemMetrics(0) / 4
    MaHauteur = GetSystemMetrics(1) / 4

    Application.Width = MaLargeur
    Application.Height = MaHauteur

    Application.Left = MaLargeur
    Application.Top = MaHauteur

End Sub

Sub test2()'sans api
    ActiveWindow.WindowState = xlMaximized

    MaLargeur = Application.Width / 3
    MaHauteur = Application.Height / 3

    ActiveWindow.WindowState = xlNormal

    Application.Width = MaLargeur
    Application.Height = MaHauteur

    Application.Left = MaLargeur
    Application.Top = MaHauteur

End Sub
 

Gégé-45550

XLDnaute Accro
Il me semblait bien qu'il suffisait d'ajouter un "PtrSafe" quelque part, mais je ne sais jamais où exactement dans la déclaration de la fonction...
Donc j'ai vérifié sur le site de Microsoft, et c'est juste avant le mot "Function", ce qui donne (comme l'a déjà donné Zon) :
Enrichi (BBcode):
Private Declare PtrSafe Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long
Hello l'ami @TooFatBoy, la déclaration, selon Crosoft :
VB:
Declare PtrSafe Function GetSystemMetrics Lib "user32" Alias "GetSystemMetrics" (ByVal nIndex As Long) As Long
 

Pièces jointes

  • VBA - Déclarations API et constantes pour Office64.docx
    680.4 KB · Affichages: 3

Discussions similaires

Statistiques des forums

Discussions
315 168
Messages
2 116 925
Membres
112 916
dernier inscrit
jujhu90