Vba - Excel - Fenetre

Résolu
jeremie -  
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   -
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

  1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    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 

    0
    1. jeremie
       
      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
      0
    2. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      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...
      0
    3. jeremie
       
      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.
      0
    4. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      S'il y a plus simple, je ne connais pas...
      Mais cela fonctionne alors pourquoi t'en priver?
      0
    5. jeremie
       
      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
      0
  2. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    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

    0
    1. jeremie
       
      Je te remercie beaucoup. J'ai trouvé la solution et la façon d'exploiter le code que tu m'as transmis.

      Je te remercie énormément. Excellente journée.
      0
    2. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      Merci.
      Bonne journée à toi.

      Ps : si ta question est résolue, pense à l'indiquer comme telle. Dans ton premier message, il y a un lien : Marquer comme résolu, juste sous le titre de ta question. Clique dessus...
      0
    3. jeremie > pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention  
       
      J'attends d'être sur à 100% toutefois, il me reste un problème.

      J'appelle la méthode que tu m'as donnée dans le this.workbook.

      Je l'appelle dans workbook_activate et dans workbook_Deactivate.

      Pensant que chaque fois que je vais lancer mon programme, il va me masquer la barre et que par la suite, en le fermant, il va me la réactiver. Malheureusement, ça n'a pas l'air de marché.

      La démarche est elle juste ?
      0
    4. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      qu'entends tu exactement par : chaque fois que je vais lancer mon programme
      0
    5. jeremie > pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention  
       
      Si j'ai bien compris. Mon workbook_activate effectue le code que j'y ai inséré.

      Donc je me dis, si je call ma methode dans l'activate et desactivate il doit exécuter.

      Donc fermér la toolbox au démarrage et ouvrir à la fermeture pour que quand je démarre un autre il y a tjs la toolbox
      0