XL 2016 VBA - Taux de recouvrement d'un RECT par un autre RECT

  • Initiateur de la discussion Initiateur de la discussion Dudu2
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Dudu2

XLDnaute Barbatruc
Bonjour à tous,

Le point de départ de ce problème est la question "doit-on changer le OWNER d'un UserForm" ?
Parce que s'il est placé ou déplacé sur l'une des fenêtres d'un classeur qui n'est pas son OWNER, on le sait grâce à l'évènement UserForm_Layoit(), il sera masqué totalement ou partiellement par cette fenêtre dès lors qu'elle sera active. Et dans ce cas, il faut changer son OWNER par le Handle de la fenêtre en question.

D'où la question... Quel est le taux de recouvrement du UserForm RECT par un Window RECT.

La fonction PourcentageUserFormSurfaceCouverteParWindow dans ce fichier est à écrire !
 

Pièces jointes

Dernière édition:
Voila la démo.
Tu créés 2 fénêtres juxtaposées de ce classeur (par exemple avec WIN + <- et WIN + ->) et tu testes.
1 - affichage du UserForm bouton 1 et fermeture de la fenêtre utilisée
2 - affichage du UserForm bouton 2 et fermeture de la fenêtre utilisée
Tu verras la différence !
 

Pièces jointes

Dernière édition:
Bonjour,
J'aime bien le Call SetWindowPos(UserFormHandle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE Or SWP_NOMOVE).
Ça m'évite effectivement de gérer le changement d'Owner pour les recouvrements par des Windows autres.
Par contre c'est du violent. Devant c'est devant ! Rien n'y résiste, pas même une autre application.
Mais le jeu en vaut la chandelle.
ben c'est fait pour ca
et tu peux blinder le truc c'est &h1+&h2+&h20+&h40+&h200
 
HELP !
Je voudrais quand même ré-introduire le OWNER à 0 malgré l'inconvénient de la minimisation à -19200.
Je vous passe les détails de la mise en œuvre conditionnelle.

Il me faut savoir si le UserForm a été ajouté et minimisé en TaskBar.

Pour l'ajouter et provoquer sa minimisation en TaskBar je fais ça:
VB:
    Call SetWindowPos(UserFormHandle, HWND_TOP, 0, 0, 0, 0, SWP_NOSIZE Or SWP_NOMOVE Or SWP_NOACTIVATE Or SWP_HIDEWINDOW)
    Call SetWindowLongPtr(UserFormHandle, GWL_EXSTYLE, WS_THICKFRAME)
    Call SetWindowPos(UserFormHandle, HWND_TOP, 0, 0, 0, 0, SWP_NOSIZE Or SWP_NOMOVE Or SWP_NOACTIVATE Or SWP_SHOWWINDOW)

Mais à l'inverse, je n'arrive pas à trouver un moyen de tester a posteriori s'il est en TaskBar ou pas.
Pourquoi ? Voir le texte en bleu mon Post #14.

Je vais faire un fichier de démo pour vous faciliter les recherches.
 
Dernière édition:
Ça ne marche pas davantage avec le UserForm minimisé, car quelque soit la manière de le définir (en standard ou en TaskBar) quand il est minimisé, IsIconic retourne True ce qui me semble normal.

En fait ce qu'il me faudrait c'est une liste des Windows de la TaskBar.
J'avais ça autrefois mais je l'ai perdu !
 

Pièces jointes

ben chez moi elle donne 0 quand c'est non et 1 quand c'est oui et c'est tout
maintenant en effet j'ai pris la peine de regarder ton fichier
et je crois que tu confond mettre l'icone (raccourci du userform) en barre des tache) et réduire dans la barre des taches c'est pas la même chose
1° ton fichier userform( réduit ou pas) tu a l'icone dans la taskbar
2°chez moi avec mon code ,l'icone y est UNIQUEMENT!! quand le userform est réduit
tel que tu le fait tu te prive de tout les outils dont tu a besoin (visiblement) en l'occurrence ici l'api isiconic
prend la peine de regarder la video
 
ben chez moi elle donne 0 quand c'est non et 1 quand c'est oui et c'est tout
Si c'est pas minimisé c'est normal que ça rende 0.
Mon problème est de différencier un minimisé standard d'un minimisé TaskBar.
Et là, le fichier du Post #24 montre que IsIconic ne fait évidemment pas la différence.

P.S. Je te repondrai sur ta vidéo plus tard pour ne pas mélanger les problèmes.
 
J'ai effectivement utilisé cette API et manipé à ma sauce et à l'aveugle sur le résultat.
Ça marche chez moi et j'aimerais que tu ou vous (si @Dranreb suit toujours le sujet, ou tout autre lecteur du post) testassiez ce fichier pour voir s'il répond Vrai ou Faux de manière correcte dans des configurations VBA7 32 bits et non VBA7 32 bits.
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour