Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
Microsoft 365Liste déroulante auto-filtrante dans une feuille protégée
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 ?
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
Bonjour PatyouExcel
Bonjour le Fil ,le Forum
peut être en modifiant dans "Protéger la feuille" par exemple cocher "Modifier les Objects"
il me semble avoir déjà vu une réponse de ce type à cette question! Ici Lol
Bonne journée
jean marie
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
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.
Bonsoir à tous J'ai effectué des recherches dans les anciens fils, mais je n'ai pas trouvé la solution. Est-il possible d'empêcher la suppression d'un objet (image) tout en pouvant le déplacer ? La protection de la feuille empêche la suppression mais également le déplacement. Merci de votre...
www.excel-downloads.com
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"
Merci de ton retour @PatyouExcel, pense à indiquer à la communauté quelle solution tu as retenu pour qu'un lecteur avec un problème similaire puisse transposer la solution à son problème.
Ce site utilise des cookies pour personnaliser le contenu, adapter votre expérience et vous garder connecté si vous vous enregistrez.
En continuant à utiliser ce site, vous consentez à notre utilisation de cookies.