Microsoft 365 InputBox : ne pas afficher le haut

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour à toutes et à tous, re-le Forum,

Casse-neurones du dimanche lol
Peut-être (salaud que je suis lol), une question pour notre cher mapomme,
( 🤒j'en ai tout plein d'autres pour les dimanches matin à venir)

Sans passer par un UserForm, est-il possible de ne pas faire apparaître la "X" de l'InputBox ? :
1645978786897.png

J'ai cherché ... cherché... etc...
et pas trouvé :mad:

Merci à toutes et à tous,
lionel :)
 

Pièces jointes

  • 1645966492243.png
    1645966492243.png
    3.4 KB · Affichages: 150
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re

[titillement du dimanche après-midi avant mon gouter]
Ce qui m'intéresserai (quoique) c'est de savoir l'utilité de la chose.
Toutes les applications qui tournent sous Windows adoptent le même "comportement"
Par exemple, si je regarde la fenêtre de mon navigateur.
Bah à droite, j'ai l'icone de réduction, d'agrandissement, et la croix
Idem, si je vais dans VBE.
C'est ce qu'y fait qu'intuitivement, quand j'ouvre un logiciel que je ne connais pas.
Je suis en terrain connu.

Mais il est vrai que pour réaliser une usine à gaz, le mieux est de s'acharner à faire du contre-intuitif et de repenser l'ergonomie de l'applicatif en dépit du bon sens.
[/titillement du dimanche après-midi avant mon gouter]
 

Staple1600

XLDnaute Barbatruc
Re

Je ne vois pas en quoi supprimer le title bar d'une InputBox facilite l'automatisation.
(Surtout si il faut ajouter du code VBA pour faire appel aux API Windows ou créer un Userform pour simuler un InputBox)
Mais c'est vrai que ce faisant on respecte le cahier des charges d'une usine à gaz.
(alourdir le classeur avec du code surnuméraire, rendre l'application potentiellement "instable "(cf PtrSafe 32bits/64bits))

C'est vrai que Lionel n'a pas sa carte de membre du club K.I.S.S
(non pas le groupe, le principe) ;)
 

Staple1600

XLDnaute Barbatruc
Re

=>Patricktoulon
Je cherche toujours à comprendre en quoi la titlebar est gênante.
Surtout que sa présence permets de déplacer l'InputBox à sa guise
Mais il semblerait qu'on ne puisse pas la supprimer comme on peut le faire sur un Userform (*), non?
Tu confirmes ?

(*) en utilisant les API Windows (ce qui d'ailleurs exclut les possesseurs de Mac, pour une fois bienheureux sur ce coup là ;))
 

Staple1600

XLDnaute Barbatruc
Re

Alors la copie d'écran du message#1 est incorrecte...
1645966492243-png.1132117

C'est bien toute la Titlebar qui est barrée, non?

Et l'explication ne parle pas de la seule croix
est-il possible de ne pas faire apparaître l'entête d'un InputBox

L'un dans l'autre, je ne vois toujours pas en quoi altérer l'inputBox automatise quoi que se soit ???

Mais puisqu'il semble que ce soit difficilement réalisable (je parle de supprimer la barre de titre de l'inputbox) même avec les API, je vous laisse dans le gaz.
;)
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
@Usine à gaz
voilà le bon code qui fonctionne en 64
VB:
'
'MODELE PATRICKTOULON
'======================================================
'       !! TEMPORISER LE VRAI MSGBOX DE VBA !!
'catégorie boite de dialogue
'Temporisation du vrai msgbox de vba
'Auteurs:patricktoulon sur exceldownload
'Version :1.0; de patricktoulon
'Utilisation des api setTimer et KillTimer
'======================================================
'adaptation sur inputbox pour lever le bouton dans la caption
Option Explicit
#If Win64 Then
    Declare PtrSafe Function SetTimer Lib "user32" (ByVal hwnd As LongPtr, ByVal nIDEvent As LongPtr, ByVal uElapse As Long, ByVal lpTimerFunc As LongPtr) As LongPtr
    Declare PtrSafe Function KillTimer Lib "user32" (ByVal hwnd As LongPtr, ByVal nIDEvent As Long) As Long
    Declare PtrSafe Function GetActiveWindow Lib "user32" () As LongPtr
    Declare PtrSafe Function SetWindowLongA Lib "user32" (ByVal hwnd As LongPtr, ByVal nIndex As Long, ByVal dwNewLong As LongPtr) As LongPtr
#Else
    Declare Function SetTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As LongPtr) As Long
    Declare Function KillTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long) As Long
    Declare Function GetActiveWindow Lib "user32" () As Long
    Declare Function SetWindowLongA Lib "user32" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
#End If
'Dim MsgBoxTitle
'Dim MsgBoxCloseD As Boolean
Public TimerID&



Public Sub ShootbuttonCloseOfInputbox()
    Dim hwnd As Long
    hwnd = GetActiveWindow
    SetWindowLongA hwnd, -16, &H94C00080
    If TimerID <> 0 Then KillTimer 0, TimerID: TimerID = 0:
End Sub
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 370
Messages
2 087 693
Membres
103 641
dernier inscrit
anouarkecita2