XL 2010 double clic barre de titre

cajuba

XLDnaute Nouveau
Bonjour,
J'ai un fichier qui au démarrage modifie l'affichage normal, bloque la touche ECHAP et le clique droit sur la feuille TEST
J'ai récupéré les codes sur le net, si modifs à apporter n'hésitez pas ….

Je voudrais que lorsqu'on clique 2 fois dans la barre de titre, l'affichage de démarrage ne se modifie pas

J'ai également un bouton "Ecran normal " qui remet l'écran à la normal
et un bouton "écran au démarrage"qui ne fonctionne pas (si vous avez une idée, je prends)
Merci de votre aide
 

Pièces jointes

  • double clic barre de titre.xlsm
    33.3 KB · Affichages: 19
Solution
bonsoir tout les deux
quand je pense qu'avec ceci plus besoins de s'occuper de touche ou menu ou quoi que ce soit
un bouton dans la feuille ou ce même code dans une sub (la même pour les deux modes )
et roulement de tambour SANS API!!!!!! SANS DISPLAYFULLSCREEN !!!!!
VB:
Private Sub CommandButton2_Click()

    With ActiveWindow
        .DisplayHeadings = Not .DisplayHeadings
        .DisplayWorkbookTabs = Not .DisplayWorkbookTabs
        .DisplayVerticalScrollBar = Not .DisplayVerticalScrollBar
        .DisplayHorizontalScrollBar = Not .DisplayHorizontalScrollBar
    End With

    With Application
        .DisplayStatusBar = Not .DisplayStatusBar
        .DisplayFormulaBar = Not .DisplayFormulaBar
        .ExecuteExcel4Macro...

patricktoulon

XLDnaute Barbatruc
allez je sais que tu a la flemme mais..
je te propose d’être un voyou et de ne pas déclarer les api :p :p :p :p

toujours une seule api mais sans la déclarer compatible 32/64
VB:
Option Explicit

Sub opening()

'Dim hwnd&' on vire!!!!
'hwnd = FindWindowA(vbNullString, Application.Caption)' on vire!!!
    ExecuteExcel4Macro ("CALL(""user32"",""SetWindowLongA"",""JJJJJ""," & Application.hwnd & ", " & -16 & ", " & &H16070000 & ")")     'api SetWindowLongA
 With Application
        '.DisplayFullScreen = True' on vire!!!!
        .ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",false)"    'voila comment on vire le ruban
        .DisplayStatusBar = False
        .DisplayFormulaBar = False
        .WindowState = xlMaximized  'si tu veux plein ecran
    End With

    With ActiveWindow    ' vire les display
        '.DisplayHeadings = False
        .DisplayWorkbookTabs = False
        .DisplayVerticalScrollBar = False
        .DisplayHorizontalScrollBar = False
    End With
  
   End Sub
Sub normal()
    With Application
        '.DisplayFullScreen = False'on vire!!!
        .ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",true)"    'voila comment on récupere  le ruban
        .DisplayStatusBar = True
        .DisplayFormulaBar = True
        .WindowState = xlNormal    ' mode fenetre
    End With

    With ActiveWindow
        .DisplayHeadings = True
        .DisplayWorkbookTabs = True
        .DisplayVerticalScrollBar = False
        .DisplayHorizontalScrollBar = False
    End With

End Sub
là pour le coup t'tranquille ;)
 

fanch55

XLDnaute Barbatruc
Bien vu Pat,
cela fonctionne mais... ;) (trop boooo)
Les classeurs qu'on ouvre après celui-ci tant qu'il est actif, héritent de l'état applicatif ( pas de ruban,etc... mais titre de fenêtre quand même)

Un autre effet collatéral si on a la barre des taches en masquage automatique fait que celle-ci n'est visible qu'en appuyant sur la touche Windows (scrogneugneu, je chipote ...)

Mais je pense que ta solution est à conseiller.
Maintenant je vais à la Pétanque, à plus.:cool:
 

patricktoulon

XLDnaute Barbatruc
a ben oui tout ce que tu fait sur l'application a partir d'un classeur et valable sur tout les classeur de l'instance a moins d'y ajouter le deactivate dans le thisworkbook

et maintenant une seule api une seule sub sans déclaration

tu la lance pour les deux modes ;)
VB:
Sub trucbidulechouette()
    With Application
        If CommandBars("Ribbon").Visible Then
            ExecuteExcel4Macro ("CALL(""user32"",""SetWindowLongA"",""JJJJJ""," & Application.hwnd & ", " & -16 & ", " & &H16070000 & ")")     'api SetWindowLongA
        End If
        .ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon""," & Abs(Not CommandBars("Ribbon").Visible) & ")"    'voila comment on vire le ruban
        .DisplayStatusBar = Not .DisplayStatusBar
        .DisplayFormulaBar = Not .DisplayFormulaBar
        .WindowState = IIf(.WindowState <> xlNormal, xlNormal, xlMaximized)   'si tu veux plein ecran
    End With

    With ActiveWindow    ' vire les display
        .DisplayWorkbookTabs = Not .DisplayWorkbookTabs
        .DisplayVerticalScrollBar = Not .DisplayVerticalScrollBar
        .DisplayHorizontalScrollBar = Not .DisplayHorizontalScrollBar
    End With

End Sub
tu voulais du pas trop invasif
ben là t'servi :p :p :p :p :p
bonne partie pétanque;)
j’arrête moi aussi si ça continue je vais coder a blanc :p:p:p:D:D:D:D
 

cajuba

XLDnaute Nouveau
De retour …...
Juste une remarque avec la dernière proposition : "une seule api une seule sub sans déclaration"
ça cache la barre de tache de Windows, c'est possible d'avoir tout pareil avec la barre de tache apparente pour pouvoir jongler entre applications ?
 

patricktoulon

XLDnaute Barbatruc
bonsoir en fait ca depend si la fentre est maximisée au depart ca le fait aussi avec displayfullscreen
VB:
Sub trucbidulechouette()
    With Application
        If CommandBars("Ribbon").Visible Then
            ExecuteExcel4Macro ("CALL(""user32"",""SetWindowLongA"",""JJJJJ""," & Application.Hwnd & ", " & -16 & ", " & &H16070000 & ")")     'api SetWindowLongA
        End If
        .DisplayFullScreen = Not .DisplayFullScreen
        If .DisplayFullScreen Then .OnKey ("{ESC}"), "keyvide" Else .OnKey ("{ESC}")
        CommandBars("cell").Controls(CommandBars("cell").Controls.Count - 1).Enabled = Not .DisplayFullScreen
    End With
    With ActiveWindow    ' vire les display
        .DisplayWorkbookTabs = Not .DisplayWorkbookTabs
        .DisplayVerticalScrollBar = Not .DisplayVerticalScrollBar
        .DisplayHorizontalScrollBar = Not .DisplayHorizontalScrollBar
    End With
End Sub
Sub keyvide(): End Sub
 

patricktoulon

XLDnaute Barbatruc
re
VB:
Sub trucbidulechouette()
    With Application
        If CommandBars("Ribbon").Visible Then
            ExecuteExcel4Macro ("CALL(""user32"",""SetWindowLongA"",""JJJJJ""," & Application.Hwnd & ", " & -16 & ", " & &H16070000 & ")")     'api SetWindowLongA
        End If
        .DisplayFullScreen = Not .DisplayFullScreen
        If .DisplayFullScreen Then .OnKey ("{ESC}"), "keyvide" Else .OnKey ("{ESC}")
        'CommandBars("cell").Controls(CommandBars("cell").Controls.Count - 1).Enabled = Not .DisplayFullScreen
    CommandBars("cell").Enabled = Not .DisplayFullScreen
    
    End With
    With ActiveWindow    ' vire les display
        .DisplayWorkbookTabs = Not .DisplayWorkbookTabs
        .DisplayVerticalScrollBar = Not .DisplayVerticalScrollBar
        .DisplayHorizontalScrollBar = Not .DisplayHorizontalScrollBar
    End With
End Sub
Sub keyvide(): End Sub
 

patricktoulon

XLDnaute Barbatruc
bonjour @cajuba
Bonjour,
Après essayage, on peut toujours faire un clic droit sur l'onglet dans la barre de tache …..
????????????????????????????????????????????? o_O
de quoi tu me parles là o_O
la barre des taches n'a rien a voir avec excel
pour bloquer les events sur la barre des taches, il te faut utiliser pour cela d'autres api mais c'est un bordel sans nom
tu disais plus haut vouloir garder la barre des taches justement ;)
ne saurais tu pas ou tu a mal toi ???:D;)

avec la version sans displayfullscreen tu n'a plus la barre des taches il te suffit de taper sur la touche "Windows" pour la retrouver

il y a quand même des restrictions, tu pense bien que Windows ne peut pas te laisser la main libre d’accès a tous sinon nous serions plus d'un!!!! a éteindre le pc brutalement par ce qu'il y a eu un bug et on a plus accès a rien :D:D:D:p:p ce qui est arrivé a certains déjà( moi même au début des années folles)
réfléchi 1 seconde va ;)
je pense que tu es comme beaucoup a vouloir transformer excel en logiciel perso (éliminer tout ce qui est visible d'excel, le rendre méconnaissable ) mais..... excel et Vba ont leurs limites ;)
d'autant plus que tu me parais pas très a l'aise avec les api Windows
peut être devrais tu te tourner alors vers vb.net avec visualstudio et te faire tes propres interfaces et masquer ceci ou cela de Windows a tes risques et périls bien sur ;)
A méditer ;)
on t' a donné 4 méthodes , a toi de t'en accommoder
je n'ai pas donné la 5 eme qui consiste a agrandir la fenêtre en mode windowstate xlnormal a la taille du windowstate xlmaximized - top caption
si tu prends la peine de chercher un peu sur ce forum voir les contributions aussi, je suis sur que tu trouvera LOL
 

patricktoulon

XLDnaute Barbatruc
tiens comme ca vite fait un hersât de celle que tu trouvera si tu cherche bien
sans api pour couper la caption et la tu peux y aller mon ami pour la bouger

un bouton dans la feuille et ...
VB:
Private Sub CommandButton2_Click()

    With ActiveWindow
        .DisplayHeadings = Not .DisplayHeadings
        .DisplayWorkbookTabs = Not .DisplayWorkbookTabs
        .DisplayVerticalScrollBar = Not .DisplayVerticalScrollBar
        .DisplayHorizontalScrollBar = Not .DisplayHorizontalScrollBar
    End With

    With Application
        .DisplayStatusBar = Not .DisplayStatusBar
        .DisplayFormulaBar = Not .DisplayFormulaBar
        .ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon""," & IIf(CommandBars("Ribbon").Visible, "false", "true") & ")"  'voila comment on vire le ruban
        etat = CommandBars("Ribbon").Visible
        .WindowState = xlMaximized
        w = .Width: h = .Height
        .WindowState = xlNormal
        .Width = IIf(etat, 600, w): .Height = IIf(etat, 500, h + 12): .Left = 0: .Top = IIf(etat, 0, -21)
    End With
End Sub
le principe est tres simple
comme je n'utilise pas displayfulscreen la fenêtre n'est même pas maximisée
tout les contraintes qu'exigent ces deux etats ne sont plus nécessaires

pas de touche esc a gérer
pas de barre de titre a gérer
pas d'item menu contextuel a gérer
etc..etc..
 

fanch55

XLDnaute Barbatruc
Salut à tous,

Vu que la barre des taches peut être un peu partout (de chaque côté de l'écran) et que sa taille est dépendante du bon vouloir de l'utilisateur, il est assez utopique de prendre en compte celle-ci dans le calcul de l'affichage de la fenêtre Excel ( à moins de passer par une usine à gaz avec des API lourdes :eek:)

Pour afficher la barre des taches telle qu'elle a été customisée par l'utilisateur ou son service de maintenance, il suffit d'appuyer sur la touche Window ( y'a pas plus simple )
Pour pouvoir basculer rapidement entre les applications en cours ce sont les touches Windows + Tabulation ( le plus rapide )

Sinon, on peut prévoir un bouton affichant la barre des taches :
VB:
#If VBA7 Then
    Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" ( _
        ByVal lpClassName As String, ByVal lpWindowName As String) As LongPtr
    Declare PtrSafe Function SetWindowPos Lib "user32" ( _
        ByVal hwnd As LongPtr, ByVal hWndInsertAfter As LongPtr, _
        ByVal x As Long, ByVal y As Long, _
        ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
#Else
    Declare Function FindWindow Lib "user32" Alias "FindWindowA" ( _
        ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    Declare Function SetWindowPos Lib "user32" (_
        ByVal hwnd As Long, ByVal hWndInsertAfter As Long, _
        ByVal x As Long, ByVal y As Long, _
        ByVal cx As Long, ByVal cy As Long,ByVal wFlags As Long) As Long
#End If
Sub Show_Taskbar()
    SetWindowPos FindWindow("shell_traywnd", ""), 0, 0, 0, 0, 0, &H40
End Sub

Pour ma part, j'aime bien la version du post #18 mais je maintiendrai l'affichage des scrollbars pour se déplacer plus rapidement dans la feuille ( question de goûts ;) ).
 

cajuba

XLDnaute Nouveau
Bonjour,
de retour ….déjà !
J'ai 2 fichiers 1 et 2, j'ai utilisé sur chacun des fichiers la macro pour tout cacher
J'ouvre le fichier 1, dessus il y a un lien pour aller dans le fichier 2.
Je ferme le fichier 2
Il reste donc le fichier 1. Si par erreur je fais ECHAP, le fichier 2 s'ouvre ! et la mise en page de l'écran se modifie .....au secoursssssss SVP
 

Pièces jointes

  • FICHIER 1.xlsm
    88.4 KB · Affichages: 7
  • FICHIER 2.xlsm
    35.3 KB · Affichages: 7

Discussions similaires

Réponses
21
Affichages
1 K