Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2010 VBA : clic droit sur SelectionChange

  • Initiateur de la discussion Initiateur de la discussion F22Raptor
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

F22Raptor

XLDnaute Impliqué
Hello,
J'utilise dans ma feuille une procédure Selection_Change qui effectue une action sur la cellule cliquée fait partie d'une zone
Private Sub Work
If Not Application.Intersect(Target, Range("A1:A100") Is Nothing Then

Y a-t-il un moyen de ne pas effectuer les actions si le clic s'est fait avec le bouton droit ?

Merci !
 
Bonjour F22Raptor, le Forum 🙂

Dans ce cas, tu peux utiliser directement
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Et pas besoin d'ajouter Application, If Not Intersect suffit.
 
Bonjour F22Raptor, Lone-wolf,

Quand on sélectionne une cellule par clic droit la macro SelectionChange s'exécute avant la macro BeforeRightClick.

Il faut donc reporter la 1ère action pour pouvoir tester la 2ème :
Code:
Dim arret As Boolean 'mémorise la variable

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
arret = False
If Target.Count > 1 Or Intersect(Target, Range("C4:C16")) Is Nothing Then Exit Sub
Application.OnTime 1, Me.CodeName & ".Action" 'reporte l'exécution
End Sub

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
arret = True
If Intersect(Target, Range("C4:C16")) Is Nothing Then Exit Sub
Cancel = True
'---suite---
End Sub

Private Sub Action()
If arret Then arret = False: Exit Sub
ActiveCell.Offset(, 1) = "X"
End Sub
Fichier joint.

A+
 

Pièces jointes

Bonjour.
Il y a ça qui a l'air de marcher :
VB:
Option Explicit
Private Cible As Range
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
   Set Cible = Target
   Application.OnTime Now, Me.CodeName & ".Clic"
   End Sub
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
   Set Cible = Nothing
   Cancel = True
   End Sub
Public Sub Clic()
   If Cible Is Nothing Then Exit Sub
   If Not Application.Intersect(Cible, Range("C4:C16")) Is Nothing Then
      Cible.Offset(0, 1) = "X"
      End If
   Set Cible = Nothing
   End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
7
Affichages
702
Réponses
13
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…