Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Contribuez
Contribuez Placez ici vos codes, sources, trucs et astuces que vous souhaitez partager avec les membres du club.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/12/2007, 14h42   #1
Membre Expert
 
Avatar de Jean-Pierre49
 
Homme J-Pierre Catherine
Conception Calcul
Inscription : juillet 2007
Messages : 659
Détails du profil
Informations personnelles :
Nom : Homme J-Pierre Catherine
Âge : 57
Localisation : France, Maine et Loire (Pays de la Loire)

Informations professionnelles :
Activité : Conception Calcul
Secteur : Industrie

Informations forums :
Inscription : juillet 2007
Messages : 659
Points : 1 856
Points : 1 856
Par défaut API supprimer la croix d'un UserForm

Bonjour a tous,

Travailler avec les API pour supprimer la croix d’un USf ou pour rajouter un bouton de réduction ou bien pour éviter le déplacement de l’USF c’est bien mais :

Description de mon projet : avoir un USF plein écran d’ou l’intérêt du non déplacement (qu’il puisse reprendre sa place correctement), Layout ne me plaisant pas.
Pouvoir y appeler plusieurs USF réduire ses USF pendant que l’on travail avec un en particulier d’ou l’intérêt du bouton de réduction.
Ne pas pouvoir fermer l’ USF principal via la croix,
Tout ça en même temps, pas sur d’y arriver avec les API.

J’ai donc fait un premier test avec la suppression du déplacement. Pour l’USF principal
et suppression de la croix sur les autres.
Et j’ai fait le test du singe (cliquer partout n’importe comment sur un peu partout, test très important………..) puis fermer USF principal lui même fermant les autres et ……..la croix de mon application Excel inopérante !!!!
J’ai mis des DoEvent un peut partout : pas de meilleur résultat.

Donc moralité : trop d’interdiction et rien ne va plus.

J’ai donc opté pour une gestion différente et c’est celle que je vous expose sans prétention mais qui me donne une bonne satisfaction

Laisser l’USF principal déplaçable, mais avec la possibilité qu’il puisse retrouver sa place initiale :
Code :
1
2
3
4
5
6
7
8
Private sub Userform_Click ()
    With Me
        .Left = 0
        .Top = 0
        .Height = Application.Height
        .Width = Application.Width5 ‘ une petite correction côté droit
    End With
End Sub
Dés qu’on clique dessus il reprend sa place

La déactivation de sa la croix :
Code :
1
2
3
Private Sub Userform_QueryClose(Cancel As Integer, CloseMode As Integer)
      If CloseMode = vbFormControlMenu Then Cancel = True
End Sub
Que tout le monde connaît

Pour les réductions des autres USF :
La réduction n’est autre qu’une image représentant une réduction de USF dans laquelle j’ai remplacé la croix par l’icône « plein écran » .
Quand on clique sur l’image elle disparaît , cache l’USF éventuellement ouvert , réaffiche l’image de cet USF et rappel l’ USF correspondant, les Images visibles ce recalant vers la gauche (les unes prenant la place des autres)

La réduction de l’USF (la croix : fermer) fait réapparaître son image de réduction.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Private Sub Userform_QueryClose(Cancel As Integer, CloseMode As Integer)
    Application.ScreenUpdating = False
‘’’’’’’’’’’’’’’’’’’’’’Procédure commune a tous les USF
    For CompA = 1 To 5 
       Forme.Controls("Image" & CompA).Visible = True ‘ réaffiche les images
    Next CompA
 
    Decalage = 0
    For CompA = 1 To 5 ‘ repositionne les images dans l’USF principal
        Forme.Controls("Image" & CompA).Left = 6 + Decalage
        Decalage = Decalage + Forme.Controls("Image" & CompA).Width
    Next CompA
‘’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’
    Me.Hide
    Cancel = True
    Application.ScreenUpdating = True
End Sub
Les avantages (les actions de fait)
Quand un USF secondaires est ouvert l’USF principal peu être déplacé lors que l’on lache la souris il reprend ça place.
Les USF secondaires sont déplaçables mais il suffit de cliquer dans l’USF principal pour qu’ils reprennent leurs places tous les USF sont ouvert en Show (0) et seulement caché pendant toute l'utilisation ds l'application.

J’ai donc tout ce que je voulais sans les API.

Jean pierre
Jean-Pierre49 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2007, 18h59   #2
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Tu n'as pas essayé avec la propriété zoom ? (pas testé pour le cas que tu décris)
Mais ta solution paraît sympa, aucune objection
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2007, 19h49   #3
Inactif
 
Inscription : juillet 2007
Messages : 4 555
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 4 555
Points : 5 002
Points : 5 002
Bonsoir,

que veux-tu au bout du compte, exactement ?

L'utilisation simple d'une fonction de l'Api de Windows qui :

- inhiberait la "croix" de fermeture
- inhiberait le déplacement

tout en permettant
- la réduction de la fenêtre

ou encore : une combinaison de ce que tu veux comme inhibitions et permissions ?

La chose est parfaitement et simplement réalisable dès lors que le hwnd de ta fenêtre est déterminé.

Si celà t'intéresse, je m'y mets.
ucfoutu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/12/2007, 08h30   #4
Membre Expert
 
Avatar de Jean-Pierre49
 
Homme J-Pierre Catherine
Conception Calcul
Inscription : juillet 2007
Messages : 659
Détails du profil
Informations personnelles :
Nom : Homme J-Pierre Catherine
Âge : 57
Localisation : France, Maine et Loire (Pays de la Loire)

Informations professionnelles :
Activité : Conception Calcul
Secteur : Industrie

Informations forums :
Inscription : juillet 2007
Messages : 659
Points : 1 856
Points : 1 856
Bonjour tout le forum,
Bonjour Ouskel’nor et ucfoutu

Inhiber la "croix" de fermeture
Inhiber le déplacement
Réduire la fenêtre en ajoutant les icônes de réduction

On à des tas d’exemples
Pour faire l’ensemble moins c’est vrai.

Ce que je voulais dire qu’il peut avoir conflit lorsque ces procédures sont utilisées simultanément sur plusieurs objets.
Et que j’ai constater que ces procédures pouvaient intervenir sur d’autre objet et notamment dans mon cas, à l’application Excel ouverte.
Je ne suis pas spécialiste des Api de Windows, j’ai certainement des éléments qui me manque pour que cela fonctionne correctement.

Je voulais dire que quelque fois on pouvait trouver des subterfuges pour arriver à ses fins. Et que de ce fait on pouvait avoir un meilleur contrôle de la situation.

Il est bien évident que les Api m’intéresse, intervenir sur l’objet m’intéresse.

C’est tout simplement une mise en garde, si je peut me permettre, sur l’utilisation de procédure que l’on maîtrise pas, et c’est mon cas en l’occurrence.

Si ucfoutu pouvait expliqué comment utiliser ces api et d’en faire de véritable combinaison. Ce serait un grand pas pour un certain nombre d’entre nous,

Par avance merci

Bonne journée à tous et que VBA soit avec vous.

Jean Pierre
Jean-Pierre49 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2007, 08h41   #5
Inactif
 
Inscription : juillet 2007
Messages : 4 555
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 4 555
Points : 5 002
Points : 5 002
Citation:
Envoyé par Jean-Pierre49 Voir le message
Si ucfoutu pouvait expliqué comment utiliser ces api et d’en faire de véritable combinaison. Ce serait un grand pas pour un certain nombre d’entre nous,
Je te comprends peu, Jean-Pierre49

Il me semble que tu as là :

http://vb.developpez.com/faqvba/?page=3.6#UFhandle


un exemple clair et facile, non ?

Il est vrai qu'il ne concerne que la croix de fermeture et pas le reste, mais le reste, c'est tout simplement les autres constantes utilisables.

Dans le code du lien, il suffit de remplacer

Code :
Private Const SC_CLOSE = &HF060&
par

Code :
1
2
3
4
5
6
Private Const SC_MINIMIZE = &HF020&
Private Const SC_CLOSE = &HF060&
Private Const SC_MAXIMIZE = &HF030&
Private Const SC_RESTORE = &HF120&
Private Const SC_SIZE = &HF000&
Private Const SC_MOVE = &HF010&
et ensuite, dans ce que tu veux inhiber :

Code :
1
2
3
4
RemoveMenu hSysMenu, SC_CLOSE, MF_BYCOMMAND
RemoveMenu hSysMenu, SC_MINIMIZE, MF_BYCOMMAND
'etc....
'selon ce que tu veux inhiber.
où est donc le problème ?
ucfoutu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2007, 10h35   #6
Membre Expert
 
Avatar de Jean-Pierre49
 
Homme J-Pierre Catherine
Conception Calcul
Inscription : juillet 2007
Messages : 659
Détails du profil
Informations personnelles :
Nom : Homme J-Pierre Catherine
Âge : 57
Localisation : France, Maine et Loire (Pays de la Loire)

Informations professionnelles :
Activité : Conception Calcul
Secteur : Industrie

Informations forums :
Inscription : juillet 2007
Messages : 659
Points : 1 856
Points : 1 856
Bonjour ucfoutu,

Merci de tes réponses,

Il n'y à pas de problème si ce n'est que ma méconnaissance des api,
j'ai pas mal de code permettant d'agir sur les propriétés des fenetres.
le problème n'est pas la,
J'ai été sur la toile et j'ai trouvé des éléments et notament des explications sur qu'est et comment les comprendre.

en ce moment je suis un peu surbooké, je m'y attacherais plus tard.

encore merci,

Jean Pierre
Jean-Pierre49 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2008, 00h44   #7
Invité de passage
 
Inscription : novembre 2006
Messages : 8
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 8
Points : 1
Points : 1
Par défaut userform plein écran sans fermeture

J'ai envoyé le 1er mars un code sur ce forum qui devrait répondre à toutes vos préoccupations.
Mais bien sûr, les solutions proposées sont basées sur les API, indispensables en VBA pour faire proprement ce genre de manip d'userform.
J'espère que ceci sera utile à qq uns, parce que moi, je cherchais depuis longtemps à obtenir ceci.
Zandar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2008, 04h55   #8
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 625
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 625
Points : 30 909
Points : 30 909
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Bonjour

La contribution de Zandar est ici : http://www.developpez.net/forums/sho...d.php?t=501184

Starec
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h06.


 
 
 
 
Partenaires

Hébergement Web