Office 365 [RESOLU] Comment empêcher l'exécution d'une procédure si la demande est faite sur une cellule verrouillée

ivan27

XLDnaute Occasionnel
Bonjour à tous,

J'utilise une procédure pour pointer/dépointer une cellule d'un ''X'' par double-clics.
Si la cellule active est dans la colonne A, lorsque je double-clics sur une cellule verrouillée, le ''X'' s'inscrit dans la cellule active .
Comment procéder, pour qu'il ne se passe rien ?
Avec mes remerciements anticipés.
Ivan
 

Fichiers joints

CHALET53

XLDnaute Barbatruc
Bonjour
Essaie cet ajoût :

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Range("A1:A20"), Target) Is Nothing Then Exit Sub

Target.Select
If Selection.Locked = True Then Exit Sub

If IsEmpty(Target) Then
Target = "X"
Cancel = True
Target.Offset(1, 0).Select
Else
Target = ""
Target.Offset(1, 0).Select
End If
End Sub
 

mécano41

XLDnaute Accro
Bonjour,

Le X s'inscrit seulement si la feuille n'est pas protégée. Si tu veux l'éviter :

Code:
If Intersect(Range("A1:A20"), Target) Is Nothing Or Target.Locked = True Then Exit Sub
Cordilement
 

ivan27

XLDnaute Occasionnel
Rebonjour le forum, CHALET53, mécano41,
Je viens de tester vos 2 propositions mais ça ne fonctionne pas.
Si je sélectionne par exemple A7 et que je double-clics sur A5 qui est verrouillée, dans les 2 cas j'ai un ''X'' qui s'inscrit sur A7.
Ivan
 

Eric C

XLDnaute Accro
Bonjour le forum
Bonjour à toutes & à tous
Bonjour ivan27, bonjour CHARLET53, bonjour mécano41

Il semblerait que ta plage de cellules (A1:A20) soit mal protégée. Déverrouille tes cellules et places ceci dans le WorkBook :

Private Sub Workbook_Open()
Cells.Select
Selection.Locked = False
Selection.FormulaHidden = False
Range("A1:A20").Select
Selection.Locked = True
Selection.FormulaHidden = False
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub

Lors de ta prochaine ouverture de fichier, cela devrait fonctionner.
@+ Eric C
 

ivan27

XLDnaute Occasionnel
Rebonjour à tous,

Eric C, merci pour ta proposition mais là on verrouille totalement A1:A20 !

Ce que j'aimerais (mais ce n'est peut-être pas possible), c'est verrouiller uniquement quelques cellules sur la plage A1:A20. Quand je double-clics sur une cellule verrouillée et que la feuille est protégée; que rien ne s'inscrive dans une autre cellule active de la plage A1:A20 mais plutôt déclencher un message du type Msgbox "Vous ne pouvez pas pointer cette ligne !".

Bien cordialement,
Ivan
 

Eric C

XLDnaute Accro
Re.
Il suffit de délimiter la plage à verrouillée : Range("A1,A5,A10").Select (par exemple).
@+ Eric c
 

ivan27

XLDnaute Occasionnel
Re bonjour tout le monde,
Effectivement, j'ai fini par m'en sortir avec la propriété Range.Locked (première proposition de CHALET53.
Le problème venait du type de protection très restrictive que j'utilise toujours pas défaut.
Après avoir coché la case autorisant les utilisateurs à sélectionner les cellules verrouillées tout est rentré dans l'ordre.
Bonne fin de journée à tous
 

Discussions similaires


Haut Bas