Rétablir fonction de croix

bonsoir a tous et toutes

j'ai répondu dans ce posthttps://forum.excel-pratique.com/excel/rendre-inactive-la-croix-rouge-feuille-excel-t78375.html pour enlever la croix de fermeture d'un userform

j'ai aussi ce lien http://www.gcexcel.com/enlever-la-croix-rouge-dun-userform/

et aussi ce code pour un module standart

Declare Function GetWindowLongA Lib "User32" (ByVal HWnd As Long, ByVal nIndex As Long) As Long
Declare Function SetWindowLongA Lib "User32" (ByVal HWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Declare Function FindWindowA Lib "User32" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Sub SupprimerCroixFermeture(USF As UserForm)
Dim HWnd As Long
    HWnd = FindWindowA("Thunder" & IIf(Application.Version Like "8*", "X", "D") & "Frame", USF.Caption)
    SetWindowLongA HWnd, -16, GetWindowLongA(HWnd, -16) And &HFFF7FFFF
End Sub

+ Dans le module de l'userform

Private Sub UserForm_Initialize()
  SupprimerCroixFermeture Me
End Sub

ce code viens de l'excellent BANZAI64

ma question est comment peut on rétablir la croix et son fonctionnement

bonne soirée et bon weekend a tous et toutes

Hello,

Si ça vient du code d'un formulaire, pourquoi ne pas simplement supprimer la ligne incriminée?

Private Sub UserForm_Initialize()
  'SupprimerCroixFermeture Me
End Sub

bonsoir d3d9x

merci de ta réponse

j'ai ce code qui devrai rétablir la croix mais qui ne fonctionne pas en le mettant dans un bouton ou dans l'activation del'userform

Sub restaurer_croix_sys()
  Dim hWnd As Long
  hWnd = FindWindowA(vbNullString, Application.Caption)
  SetWindowLongA hWnd, -16, GetWindowLongA(hWnd, -16) Or &H80000
End Sub

voici mon classeur d'essai

14classeur11.xlsm (22.54 Ko)

Bonsoir,

Ça ne la rétablit pas en désactivant l'Initialize ?


J'avais pas vu la réponse de d3d9x : salut !

Mais après essai je confirme sa méthode !

Pure logique : si tu as besoin d'une procédure pour la supprimer à chaque fois, il suffit de ne plus la supprimer.

Cordialement.

bonsoir MFerrant

c'est contradictoire de mettre les 2 instructions dans le même initialise

Que veux-tu dire ?

Tu mets une instruction dans Initialize pour supprimer la croix.

Si elle doit y être à chaque ouverture pour que la croix soit supprimée, dès lors qu'on supprime l'instruction qui la supprime, la croix sera là !

Cordialement.

Voilà le problème résolu

15classeur11.xlsm (21.11 Ko)

Solution:

d3d9x a écrit :

Private Sub UserForm_Initialize()
  'SupprimerCroixFermeture Me
End Sub

bonsoir d3d9x

non ce n 'est as ce que je veux quand l'userform s'active la croix est désactiver mais si pour une raison il faut la réactiver c'est la que je ne sais pas, il faudrait mettre quelque chose comme ceci je pense avec un deuxième bouton

Private Sub UserForm_Initialize()
  SupprimerCroixFermeture Me
  If UserForm1.CommandButton2.Value Then 'où click
  restaurer_croix_sys Me
End If
End Sub
SetWindowLongA HWnd, -16, GetWindowLongA(HWnd, -16) or &H80000

résoudra ton problème. C'est le code pour réactiver la croix.

PS: Il faudra surement passer le curseur de la souris sur l'entête du formulaire pour qu'elle soit visible!

Sub activerCroix(USF As UserForm)
Dim HWnd As Long
    HWnd = FindWindowA("Thunder" & IIf(Application.Version Like "8*", "X", "D") & "Frame", USF.Caption)
    SetWindowLongA HWnd, -16, GetWindowLongA(HWnd, -16) OR &H80000
End Sub

bonjour D3D9X

Merci de te réponse qui vas mettre fin au post

tu dits

passer le curseur de la souris sur l'entête du formulaire

cala n'a aucun effet

j'ai mis l'appel derrière le bouton2 de l'userform et sa fonctionne et pourtant c'est le même code que j'avais mis plus haut

voici l'appel

activerCroix Me

pareil que pour la suppression

Merci beaucoup

Il faut passer la souris là où la croix devrait être, ce qui la fait réapparaître

bonjour

la flêche de la souris se déplace de droite a gauche et pas de croix apparaissante

Chez moi ce fichier fonctionne parfaitement pour ce que tu demandes! Je te laisse le tester (ce n'est plus tout à fait le même code que le tiens)

16classeur11.xlsm (21.74 Ko)

PS: Pas besoin d'avoir le userform en paramètre, il suffit d'utiliser la variable "Me"

bonjour d3d9x

merci pour cet exemple a code différent mais a fonctionnement identique la réactivation fonctionne avecle bouton et pas avec le survol de la flèche de la souris

Rechercher des sujets similaires à "retablir fonction croix"