Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Evènement Worksheet_BeforeDoubleClick

5 réponses
Avatar
ThierryP
Bonsoir le forum, bonsoir Denis,

Un petit souci...
Sur une feuille protégée (sauf certaines cellules de saisie), je souhaite déclencher une macro par un double-clic sur certaines cellules seulement.

Mais au double-clic, comme la feuille est protégée, le Target peut être la cellule active, ou rien si aucune cellule n'est sélectionnée.

Y a-t-il un moyen de contourner ce problème ??

D'avance merci,

ThierryP

5 réponses

Avatar
MichD
Le 24/05/22 Í  11:35, ThierryP a écrit :
Bonsoir le forum, bonsoir Denis,
Un petit souci...
Sur une feuille protégée (sauf certaines cellules de saisie), je souhaite déclencher une macro par un double-clic sur certaines cellules seulement.
Mais au double-clic, comme la feuille est protégée, le Target peut être la cellule active, ou rien si aucune cellule n'est sélectionnée.
Y a-t-il un moyen de contourner ce problème ??
D'avance merci,
ThierryP

Bonjour,
Je n'ai pas compris ta question.
Comment peux-tu faire un double-clic sur une cellule et qu'aucune
cellule ne soit sélectionnée.
Je sais qu’on peut empêcher la sélection sur une plage protégée, il
s'agit qu'une seule cellule ne soit pas protégée et lors du double-clic,
c'est cette cellule qui reçoit la sélection.
Une proposition :
'---------------------------------
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As
Boolean)
If Target.Locked Then
Cancel = True
MsgBox "Cellule protégée."
Else
Target.Value = 25
'Ou ce que tu veux faire si la cellule est non protégée.
End If
End Sub
'---------------------------------
MichD
Avatar
ThierryP
Bonjour Denis,
En me relisant, je me suis dit qu'il n'y avait que moi qui pouvait me comprendre !!!
J'ai créé un calendrier dynamique, avec en colonne G le numéro de semaine et en colonnes H Í  N, de Lundi Í  Dimanche et sur 5 ou 6 lignes les jours du mois
Semaine Lundi Mardi Mercredi Jeudi Vendredi Samedi Dimanche
17 1
18 2 3 4 5 6 7 8
19 9 10 11 12 13 14 15
20 16 17 18 19 20 21 22
21 23 24 25 26 27 28 29
22 30 31
Toutes ces cellules sont protégées. Je voudrais déclencher une macro au double-clic sur la cellule qui contient le N° de semaine , mais qui est protégée.
Je ne peux pas déprotéger et prendre le risque qu'un utilisateur bousille les formules !
Et donc, y a-t-il un moyen de détecter la position du double-clic ?
J'espère que j'ai été plus clair, même si ma demande me paraÍ®t utopique !!!!
ThierryP
Avatar
ThierryP
Finalement, il m'est revenu avoir vu il y a une quinzaine d'années un truc de ce genre....
Solution de contournement qui fonctionne (Í  condition de ne pas avoir trop de cellules Í  cliquer, sinon il faudrait créer un module de classe, mais lÍ  je sèche !!!) :
Insérer des images transparentes sur les cellules choisies et gérer l'évènement _MouseDown de celles-ci.
ThierryP
Avatar
MichD
Si tu protèges le projetVBA, il n'y a aucun moyen d'arrêter l'exécution
d'une macro et "VOIR" la macro.
Le seul message qui peut apparaͮtre, un message disant que la cellule
est protégée seulement si tu utilises la touche F2 pour passer la
cellule en mode "Édition". Ce message ne s'applique pas si tu fais un
double-clic sur une cellule protégée.
'----------------------------------------
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As
Boolean)
Dim GestionErreur As String
Cancel = True
Application.EnableCancelKey = xlDisabled
With Me
.Unprotect Password:="MotDePasse"
End With
MsgBox Target.Address '
'MaMacro
Exit Sub
GestionErreur:
Me.Protect Password:="MotDePasse"
MsgBox Err.Number & ", " & Err.Description
Exit Sub
End Sub
'----------------------------------------
MichD
Avatar
MichD
Le 25/05/22 Í  06:27, MichD a écrit :
Me.Protect Password:="MotDePasse"

J'ai oublié un détail important :
'----------------------------------------
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As
Boolean)
Dim GestionErreur As String
Cancel = True
Application.EnableCancelKey = xlDisabled
With Me
.Unprotect Password:="MotDePasse"
End With
MsgBox Target.Address '
'MaMacro
Me.Protect Password:="MotDePasse" ' ligne oubliée
Exit Sub
GestionErreur:
Me.Protect Password:="MotDePasse"
MsgBox Err.Number & ", " & Err.Description
Exit Sub
End Sub
'----------------------------------------