Fermerture croix userform

alexga78

XLDnaute Occasionnel
Bonsoir à tous,
j'aimerais empêcher la fermeture de mon userform principal par la croix sauf pour moi bien sur :)
car à la fermeture de ce dernier par le bouton quitter ,le fichier excel est sauvegardé et fermeture de excel.
Cela, me permettera de pouvoir acceder au code VBA dans l'hyphotèse d'une bug ou d'un modif à réaliser .
j'ai tenté ce bout de code mais bizarrement cela ne fonctionne pas !

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If Application.UserName = "Admin" Then
If CloseMode = 0 Then Cancel = False
Else
If CloseMode = 0 Then Cancel = True
End If
End Sub


Si quelqu'un à une idée....
Bonne soirée à tous
 

jeanpierre

Nous a quitté
Repose en paix
Re : Fermerture croix userform

Bonsoir alexga78,

Je ne comprends pas très bien...

"Cela, me permettera de pouvoir acceder au code VBA dans l'hyphotèse d'une bug ou d'un modif à réaliser "

Quelle que soit la manière de sortir, tu peux avoir accès à ton code.... NON ?

La relation entre la fermeture par la croix, le bouton Quitter ou non et ton souhait m'est flou pour le moment.

A te lire pour plus d'explications.

Jean-Pierre
 

juju_69

XLDnaute Occasionnel
Re : Fermerture croix userform

Hello,

Chez moi cela fonctionne bien. As tu mis un espion sur "Application.UserName" ?

Il est sensible à la casse et c'est peut être çà qui est mal reconnu (dans ce cas utilise Ucase : Ucase(Application.UserName) = "ADMIN")

Pour être sûr du code j'ai testé avec :
If 2 = 1 Then
If CloseMode = 0 Then Cancel = False
Else
If CloseMode = 0 Then Cancel = True
End If
End Sub

et

If 1 = 1 Then
If CloseMode = 0 Then Cancel = False
Else
If CloseMode = 0 Then Cancel = True
End If
End Sub

et c'est bon

@ +

Juju
 

ledzepfred

XLDnaute Impliqué
Re : Fermerture croix userform

bonsoir,

essayes ceci
Code:
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If Application.UserName = "Admin" And CloseMode = 0 Then
Cancel = False
Else: Cancel = True
End If
End Sub

au préalable vérifies que ton username est bien "admin" avec ce code

Code:
sub test()

[A1]=application.username

end sub

personnellement j'aurais plutôt utiliser un inputbox demandant la saisie d'un mot de passe et si le mdp saisi est correct alors on ferme l'userform sinon on est obligé de passer par le bouton quitter.

vois si cela te convient.

a+

EDIT: rebonsoir jeanpierre, bonsoir juju
 

kjin

XLDnaute Barbatruc
Re : Fermerture croix userform

Bonsoir,
Tout comme jeanpierre, je ne saisie pas : le fait d'empêcher la fermeture par la croix est surtout nécessaire lorsque l'on souhaite forcer l'utilisateur à utiliser un bouton pour sortir et ainsi valider des données par exemple
néanmoins
Code:
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If Application.UserName <> "Admin" Then
    If CloseMode = 0 Then Cancel = True
End If
End Sub
devrait suffire
A+
kjin
 

alexga78

XLDnaute Occasionnel
Re : Fermerture croix userform

Bonsoir Kjin, ledzepfred, jeanpierre, juju69
et merci de vous pencher sur mon pb,
désolé pour le manque d'info de mon premier post:
je m'explique (mieux j'espere) : le fait d'empecher la fermeture par la coix c'est bien pour obliger l'utilisateur à employer le bouton quitter.
Cependant sur ce dernier il y a :
( certain utilisateur sont capables de quitter Excel sans enregistrer !!!)
Private Sub CommandButton9_Click()
Call Timer_close
Call av_close
Unload Me
ActiveWorkbook.Save
Application.DisplayAlerts = False
Application.Quit
End Sub


Cet userform me servant de menu pour les autres userforms et donc toujours présent (hide pendant l'apparition des autres).
Donc ayant tout verrouillé ce serait la solution our accéder au code en cas de probleme.

Quant à vos solutions, rien ne fonctionne chez moi...
- mon application.username est bien le bon
- utiliser <> , méthode Ucase de juju non plus
- celle de ledzepfred bloque meme le bouton quitter
et un espion j'avoue que ce ne sait pas ce que c'est
(je suis sous Excel 2007 ???)
Néanmoins merci à vous d'avoir chercher
 

juju_69

XLDnaute Occasionnel
Re : Fermerture croix userform

Est ce qu'avec ce code u quittes normalement ? :
If 1 = 1 Then
If CloseMode = 0 Then Cancel = False
Else
If CloseMode = 0 Then Cancel = True
End If
End Sub

Ca permettra d'être sûr que ton pbl ne vient pas de ton application.username

@ +
 

jeanpierre

Nous a quitté
Repose en paix
Re : Fermerture croix userform

Re,

Comprends toujours pas...

Si ton code VBA est lui-même vérouillé, personne ne pourra y accéder si c'est l'objet....

Dans ton projet en VBE, clic droit et Propriétés du projet, Onglet Protection.... Vérouiller le projet et mettre ton mot de passe.

Cela solutionne une partie de ce que j'ai compris.

Maintenant evite les Application.Quit pas très sympathique pour les utilisateurs.
 

alexga78

XLDnaute Occasionnel
Re : Fermerture croix userform

bon j'ai trouvé une solution alternative en copiant application.username dans une cellule et en faisant
If Application.UserName = Sheets("feuil1").Range("T1")
La ça fonctionne Bizarre...
Bonne soirée à tous

oui Juju69 ca fonctionne en mettant 1=1 mais je suis sur de l'username (y a que 5 lettres)
 
Dernière édition:

juju_69

XLDnaute Occasionnel
Re : Fermerture croix userform

Hello,

Effectivement bizarre^^

Sinon Jean Pierre, je pense qu'Alex préfère que les utilisateurs ne puissent fermer la userform et se retrouver sur la feuille Excel, car même si le code est protégé c'est moins clean.

Bonne soirée à tous
 

kjin

XLDnaute Barbatruc
Re : Fermerture croix userform

Re,
Question vraiment, mais vraiment bête, es-tu bien sous une session "Admin"
Tapes
Code:
 msgbox application.UserName
pour vérifier
Edit : pas eu le tmps de finir ma phrase
A+
kjin
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
314 653
Messages
2 111 589
Membres
111 208
dernier inscrit
estalavista