Excel: désactivez l'alerte sur la tentative de modification de la cellule protégée sur BeforeDoubleClick

J'ai une feuille de calcul qui possède une gamme protégée de cellules. Ces cellules ont des noms en eux et j'aimerais avoir un événement avant double clic qui montre un formulaire et précharge les informations dans le formulaire en fonction du nom dans la cellule qui a double-clic.

J'utilise un double clic pour que l'user obtienne la cellule sélectionnée au premier clic, puis je peux utiliser ActiveCell.Value pour get le nom et charger les informations appropriées.

Cependant, comme j'ai protégé la gamme, lorsque je clique deux fois sur une cellule, je reçois une invite Excel en disant:

La cellule ou le graphique que vous essayez de modifier est protégé et donc en lecture seule.

Pour modifier une cellule ou un graphique protégé, retirez d'abord la protection à l'aide de la command Déprotéger la feuille (onglet Réviser, groupe Modifications). Vous pouvez vous requestr un mot de passe.

Les formulaires se triggersnt toujours comme prévu, mais j'aimerais que l'événement Excel n'intervienne pas. Existe-t-il un moyen de désactiver l'invite? Sinon, y a-t-il une autre manière de faire cela que je ne pense pas?

Pour votre cas particulier, cela se produit parce que vous avez l'option du classur activée pour «Autoriser l'édition directement dans les cellules» – qui peut être trouvé ici:

entrez la description de l'image ici

Et peut être configuré via un code, par exemple:

 Application.EditDirectlyInCell = True 

Donc, lorsque vous double-click les feux d'événement, mais l'action suivante consiste à entrer la cellule à modifier, mais parce que vous avez protégé cette cellule, vous obtenez l'alerte. La manière la plus simple d'empêcher l'alerte est d'annuler l'événement avant que l'étape «Editer» ne se produise – vous voulez simplement utiliser l'événement pour lancer le formulaire, n'est-ce pas? Le gestionnaire d'events est ainsi:

 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim varValue As Variant 'get the cell value varValue = ActiveCell.Value 'do something with it - you can launch your form here MsgBox CStr(varValue) ' NOTICE here that you can cancel the double click event ' meaning no attempt to edit the cell will be made per the users double click Cancel = True End Sub