Bonjour à tous,
Je suis en train de créer un fichier pour permettre à mon personnel de voir où ils en sont dans leurs qualifications, leurs autorisations etc; tout ceci sous la forme d'un tableau et sans qu'ils ne risquent risque de toucher et modifier ce tableau [spoil]oui nous sommes de gros sagouins [spoil].
Tout d'abord je tiens à préciser que je suis un débutant sur Excel et encore plus en VBA. Je m'aide donc de ce que je trouve sur Internet, Youtube ou ChatGpT
J'ai donc créé un userform pour que la création d'une nouvelle ligne du tableau et plus tard sa modification ne puisse se faire que via le userform
Il est possible cependant d'accéder au tableau et soit trouver une personne en particulier, d'appliquer des filtres
J'applique donc la protection de la feuille avec un mot de passe et en autorisant la sélection des cellules le filtre automatique et le tri via l'onglet " Protéger la feuille "
-> Si j'ôte la protection et que je veux la remettre via l'onglet, les filtres restent présent .
Si j'utilise mon Userform .( Il y a déjà un premier mot de passe pour faire apparaitre le userform, et ôter la protection de la feuille )
Sub NewPersonnel()
Dim password As String
password = InputBox(" Enter your Password ")
If password = "1234" Then
Worksheets("Personnel").Unprotect "1234" ' enlève la protection de la feuille "Personnel"
UserForm2.Show ' apparition du userform
Else
MsgBox " Wrong Password ", vbExclamation
End If
End Sub
A la fermeture le mot de passe est automatiquement appliqué mais les filtres et le tri ne sont plus autorisés, il ne reste que les filtres de selection de cellules
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = vbFormControlMenu Then Worksheets("Personnel").Protect "1234" ' remise automatique du mot de passe à la fermeture du userform
End Sub
J'ai tenté d'ajouter un
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = vbFormControlMenu Then
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Personnel")
' Déverrouillage de la feuille avec le mot de passe
ws.Unprotect "1234"
' Rétablir les autorisations de filtre automatique
ws.EnableAutoFilter = True
' Réenclencher la protection si nécessaire
ws.Protect "1234"
End If
End Sub
mais pas mieux.
Comment remettre le filtre automatique et le tri ?
merci d'avance de vos réponses .