Microsoft 365 Liste déroulante auto-filtrante dans une feuille protégée

PatyouExcel

XLDnaute Nouveau
Bonjour à Toutes et tous,
J'ai programmé en VBA, une liste déroulante auto-filtrante pour des données.
Je l'utilise dans une autre feuille pour choisir des données dans une liste.
J'ai déclaré le format de la cellule où la liste est utilisée avec une protection de cellule déverrouillée pour permettre de choisir
  • soit en faisant défiler la liste
  • Soit en auto-filtration (je tape dans la cellule un mot et il me montre uniquement les données de la liste commençant par ce mot)
Lorsque je verrouille ma feuille, je peux faire défiler ma liste et choisir une donnée. Par contre, la fonction auto-filtrante ne fonctionne plus.

Quelqu'un (e) aurait-elle (il), une astuce pour me sortir de ce piège ?

Merci d'avance de votre aide
 

PatyouExcel

XLDnaute Nouveau
Bonjour Phil69970,

Après maintes tests, et une déprotection temporaire de la feuille (code dans workbook), cela fonctionne. Petite amélioration que je souhaite apporter.
Quand la feuille n'est pas protégée, je tape les premiers caractères de ce que je recherche, au fur et à mesure, la liste se réduit pour laisser apparaître uniquement les mots commençant par cette suite caractères tapés.
Quand je protège la feuille, il faut valider la suite de caractères (par entrée) pour avoir la liste réduite en utilisant la flèche descendante de la liste. je voudrais que l'auto-filtration s'effectue comme dans la cas de la feuille non protégée.
Feuille "Sommaire": PW = test
Feuille "Liste complète" : protégée sans PW
Merci d'avance du support que tu peux m'apporter.
 

Pièces jointes

  • BATTERIE EUROPEENNE ELARGIE ALLERGENES - TEST - 20 juin 2021.xlsm
    829.2 KB · Affichages: 13

PatyouExcel

XLDnaute Nouveau
Bonjour Chti160,

Merci de ta réponse.
Comme je disais à Phil69970, lorsque j'autorise "modifier les objets", l'utilisateur par inadvertance peut modifier ma mise en forme (déplacer mes logos et autres). Ce que je ne veux absolument pas. Je suis seul, propriétaire du fichier.
Merci d'avance de ton support
 

Phil69970

XLDnaute Barbatruc
Bonjour à tous

Sauf erreur de ma part dans le cadre du boulot le propriétaire d'un fichier est l'employeur.
Je suis seul, propriétaire du fichier.
On peut faire une usine à gaz pour empêcher la suppression de 1 ou plusieurs images (les logos sur ton fichier) mais je pense qu'il est préférable de responsabiliser l'utilisateur plutôt que l'entraver.

Exemple:
1)Dans un module Standard
VB:
Public Pict As Picture
Public PictCount As Long

Sub PictureClick(Nom As String)
Dim W As Window
Dim x&
Dim y&
Dim i&
Dim j&
On Error GoTo Erreur
Set W = ActiveWindow
x& = W.ScrollRow
y& = W.ScrollColumn
With Application
     .ScreenUpdating = False
    .EnableEvents = False
    [iv65536].Activate
    W.ScrollRow = x&
    W.ScrollColumn = y&
   .ScreenUpdating = True
   .EnableEvents = True
End With
Set Pict = ActiveSheet.Pictures(Nom)
Pict.Select
Exit Sub
Erreur:
With Application
     .ScreenUpdating = True
    .EnableEvents = True
End With
End Sub

Sub LastActionUndo(Optional dummy As Byte)
Application.Undo
End Sub

Sub InitPictures(S As Worksheet)
Dim i&
PictCount = S.Pictures.Count
For i& = 1 To PictCount
Set Pict = S.Pictures(i&)
Pict.OnAction = "'PictureClick """ & Pict.Name & "'"
Next i&
End Sub

2)Dans la fenêtre de code de la feuille contenant les images
VB:
Private Sub Worksheet_Activate()
Call InitPictures(ActiveSheet)
End Sub

Private Sub Worksheet_Deactivate()
PictCount = 0
If Not Pict Is Nothing Then Set Pict = Nothing
End Sub

Public Sub Worksheet_SelectionChange(ByVal Target As Range)
If ActiveSheet.Pictures.Count < PictCount Then
    Call LastActionUndo
Else
    Call InitPictures(ActiveSheet)
End If
End Sub

Par nature mettre des verrous, blocages .... est souvent contre productif.
Quand on essaye de l'entraver, il cherche une parade. C'est dans la nature humaine.
Et plus on l'entrave, plus la parade qu'il trouve est stupide et dangereuse.
Une macro l'empêche de faire ce qu'il veut : il efface la macro.
On protège la macro : il déplombe la protection ou copie le contenu dans un autre fichier sans macro ou kill le processus Excel sans sauvegarde.
On empêche de killer un processus, on protège contre la copie : il éteint l'ordi.

*Perso chaque fois que j'ai eu un fichier avec un mdp ou un blocage je renvoyais le fichier sans protection à l’expéditeur pour démontrer que l'éducation à plus de vertu que la coercition.

Protège tes applis contre les maladresses (suppression de formule par exemple) mais pas contre la malveillance ou la négligence car l’ingéniosité des utilisateurs est sans bornes et je dirais même c'est un jeu qui peut être intéressant, voir même amusant, mais qui fait perdre beaucoup de temps inutilement, non seulement au développeur mais aussi à l'utilisateur.

*Apparement le fichier est utilisé par un milieu médical et/ou para-médical je pense que c'est un environement propice à l'education plutôt que l'entrave.

Et pour finir pour changer l'auteur d'un fichier il suffit d'une ligne de code !
VB:
ThisWorkbook.BuiltinDocumentProperties("Author").Value = "C'est moi le chef"

Bonne lecture ;)

@Phil69970
 

Discussions similaires

Réponses
8
Affichages
104

Statistiques des forums

Discussions
312 083
Messages
2 085 185
Membres
102 808
dernier inscrit
guo