Vba - Excel - Fenetre

[Résolu/Fermé]
Signaler
-
Messages postés
12257
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 septembre 2021
-
Bonjour,

Après des longues recherches sur le net, je n'ai trouvé aucun passage relatant mon interrogation.

Je me balade dans mon fichier Excel via des boutons. Leur code est très basique. Il ouvrela fiche ou je désire me rendre et masque celle sur laquelle j'étais.

J'y ai rajouté "Application.WindowState = xlNormal" dans certain afin de me retrouver avec un écran réduit.

Ma première question intervient. Sur windows7, en coulissant une fenêtre contre le bord, elle se place automatiquement. Est-il possible de le faire également avec vba ? Actuellement ma fenêtre se retrecit mais ne se place pas tout au bord.

De plus, je navigue en "pleine ecran". Une fois retrecit, le pleine écran se désactive. J'ai essayé à l'aide de : "Application.displayfullscreen = true" de remettre le pleine écran.

Voici ma seconde et dernière question, peut on lui demander de ce mettre en pleine écran tout en restant dans une fenêtre réduite ?

En vous remerciant d'avance de votre aide, je vous souhaite une excellente journee

2 réponses

Messages postés
12257
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 septembre 2021
2 657
Bonjour,

Voici quelques codes qui pourront vous aider :

With Application
    .WindowState = xlNormal
    'place à gauche de l'écran
    .Left = 0
End With

With Application
    'plein écran
    .WindowState = xlMaximized
    'largeur de l'écran
    Dim largeur As Double
    largeur = .Width
End With

With Application
    'place à droite de l'écran.
        'nécessite d'avoir d'abord remplit largeur (cf ci-dessus)
    .WindowState = xlNormal
    .Left = largeur - .Width
End With 

Bonjour,

Avant tous merci pour ta réponse. Le left = 0 répond parfaitement à une de mes questions.

Toutefois, je connaissais déjà l'astuce pour mettre en pleine écran, mon problème est que je désire mettre un pleine écran dans un fenêtre réduit (xlNormal). Si je suis en pleine écran et que j'execute une macro de déplacement qui réduit également l'ecran(windowstate) il me fait quitter le mode pleine écran. Ce que je ne veux pas.

Aurais tu une idée ?

Merci d'avance
Messages postés
12257
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 septembre 2021
2 657
Une simulation de plein écran; trouvée ICI

Private Declare Sub keybd_event Lib "user32" ( _
    ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, _
    ByVal dwExtraInfo As Long)
 
Sub Masquer_Afficher_Ruban()
    'Simule Ctrl+F1 (à lancer depuis la feuille de calcul)
    Const VK_CONTROL = &H11
    Const VK_F1 = &H70
    Const KEYEVENTF_KEYUP = &H2

 With Application
    .WindowState = xlNormal
End With

    keybd_event VK_CONTROL, 0, 0, 0
    keybd_event VK_F1, 0, 0, 0
    keybd_event VK_F1, 0, KEYEVENTF_KEYUP, 0
    keybd_event VK_CONTROL, 0, KEYEVENTF_KEYUP, 0
   
End Sub


Ne te reste plus qu'une barre à masquer...
J'etais déjà tombé la dessus.

N'y a t il pas plus simple ? Je t'avouerai ne pas comprendre grand chose sur ce bout de code.
Messages postés
12257
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 septembre 2021
2 657
S'il y a plus simple, je ne connais pas...
Mais cela fonctionne alors pourquoi t'en priver?
Tout simplement car je ne sais pas où mettre et comment utiliser ce code. Enlevé t il l'a barré que quand j'ouvre mon sheet ou la barre doit être remis après manuellement ?
Je'ai appris sur le tas à programmer en vba il me manque encore pas mal de connaissance pour cela je crois XD
Messages postés
12257
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 septembre 2021
2 657
Pour l'utiliser :

Private Declare Sub keybd_event Lib "user32" ( _
    ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, _
    ByVal dwExtraInfo As Long)

Doit être absolument en haut de ton module, au dessus de ta première Sub ...()

Ensuite, tu insères, dans ton module, la macro :
Sub Masquer_Afficher_Ruban()
    'Simule Ctrl+F1 (à lancer depuis la feuille de calcul)
    Const VK_CONTROL = &H11
    Const VK_F1 = &H70
    Const KEYEVENTF_KEYUP = &H2
    keybd_event VK_CONTROL, 0, 0, 0
    keybd_event VK_F1, 0, 0, 0
    keybd_event VK_F1, 0, KEYEVENTF_KEYUP, 0
    keybd_event VK_CONTROL, 0, KEYEVENTF_KEYUP, 0
End Sub


Ne te reste plus qu'à l'appeler, dans tes codes de boutons, lorsque tu veux masquer ou afficher le ruban.

Exemple :
Sub Passage_En_Mode_Normal_et_plein_Ecran()
 With Application
    .WindowState = xlNormal
End With
Call Masquer_Afficher_Ruban
End Sub

Messages postés
12257
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 septembre 2021
2 657
Salut,

En fait, cela ne fonctionne pas bien.
Quelque soit l'événement choisi, j'ai l'impression (vérifiée) que le ruban ne se remet pas en place avant la fermeture du classeur.
J'ai essayé avec les événements BeforeClose et deactivate du classeur et également avec deactivate d'une feuille, même résultat.
Par conséquent, si on agit ainsi, tous tes classeurs seront ouverts sans ruban...

J'ai bien peur que ce que tu souhaites ne soit pas possible comme cela.
Je regarde s'il existe une autre méthode, peut être plus "violente" pour masquer les barres d'excel.

Le code donné précédemment ne fait que simuler la combinaison de touches Ctrl+F1. Il existe forcément autre chose avec les application.StatutBar.Visible ou du genre.
Je regarde et te fais un retour.
Salut,

Je te remercie beaucoup. Je vais également chercher de mon côté.

Si je trouve je le mentionnerai ici.

Excellente journée.

Merci encore
Messages postés
12257
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 septembre 2021
2 657
Et bien, je viens de trouver ton bonheur.
Ces procédures de Misange fonctionnent parfaitement.

Le code :
Private Sub Workbook_Open()
    Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",False)"
    Application.DisplayFormulaBar = False
    Application.DisplayStatusBar = Not Application.DisplayStatusBar
    ActiveWindow.DisplayWorkbookTabs = False
End Sub

Private Sub Workbook_Activate()
    Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",False)"
    Application.DisplayFormulaBar = False
    Application.DisplayStatusBar = Not Application.DisplayStatusBar
    ActiveWindow.DisplayWorkbookTabs = False
End Sub

Private Sub Workbook_Deactivate()
    Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",True)"
    Application.DisplayFormulaBar = True
    Application.DisplayStatusBar = True
    ActiveWindow.DisplayWorkbookTabs = True
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",True)"
    Application.DisplayFormulaBar = True
    Application.DisplayStatusBar = True
    ActiveWindow.DisplayWorkbookTabs = True
End Sub
Top ca marche merveilleusement bien.

Je te remercie beaucoup.

Je clos le sujet.
Messages postés
12257
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 septembre 2021
2 657
PArfait.
A+ donc