IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

SelectionChange vs BeforeRightClick


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    664
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 664
    Par défaut SelectionChange vs BeforeRightClick
    Bonjour,

    Sauf erreur de ma part, il semble que
    Worksheet_SelectionChange
    se déclenche automatiquement si on utilise
    Worksheet_BeforeRightClick
    Une ListBox s'ouvre si l'utilisateur fait un clic-droit sur une plage.
    (sauf erreur) cela n'empêche pas l'utilisateur de saisir une donnée de son choix (qui ne correspondrait pas aux Items de la ListBox) dans ladite plage s'il sélectionne une cellule par un clic-gauche
    Comment puis-je afficher un message pour rappeler à l'utilisateur qu'il doit utiliser le clic-droit, s'il fait un clic-gauche sur une cellule ?

    En résumé, comment "shunter" le SelectionChange si on ne se limite qu'à un clic-droit ?

    En vous remerciant par avance,
    Cdt

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 537
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 537
    Par défaut
    Salut,

    Difficile de te répondre avec si peut d'informations.

    Protéger les cellules (et la feuille) peux suffire pour interdire la sélection de cellules.

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    664
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 664
    Par défaut
    Bonsoir,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Worksheet_SelectionChange(ByVal target As Range)
    Dim zone_sélections As Range
     
        Set zone_items = ActiveSheet.Range("e10:ng33") 'new
     
        If Not Intersect(zone_items, target) Is Nothing And target.Count = 1 Then
            MsgBox "Vous devez effectuer un clic-droit pour sélectionner une option"
            Exit Sub
        End If
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Worksheet_BeforeRightClick(ByVal target As Range, Cancel As Boolean)
     
       '(blabla)
     
            UF_LstBox.Show 'new
     
       '(blabla)
    End Sub
    J'ignore si c'est plus clair ?

    En résumé, si l'utilisateur fait :
    - un clic-gauche, il a le message "vous devez ..."
    - un clic-droit, il a le message "vous devez ..." et la Listbox s'ouvre !

    Et avec F8, j'observe que Worksheet_SelectionChange est déclenchée par Worksheet_BeforeRightClick

    Cdt

  4. #4
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    664
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 664
    Par défaut
    PS : j'ajoute que je n'envisageais pas de verrouiller les cellules de ma plage car j'utilise la fonctionnalité de "double-clic" pour d'autres actions

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 537
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 537
    Par défaut
    C'est une question d'ordre de déclenchement des évènements.
    SelectionChange survient avant BeforeRightClick.
    En conséquence, l'évènement SelectionChange ne permet pas de détecter les clicks.
    Un simple code permet de s'en rendre compte:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
        Debug.Print "Worksheet_BeforeRightClick"
    End Sub
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        Debug.Print "Worksheet_SelectionChange"
    End Sub
    Ce qui donne comme résultat dans la fenêtre d'exécution:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Worksheet_SelectionChange
    Worksheet_BeforeRightClick
    Et comme il n'y a aucun évènement détectant les click gauche ...

  6. #6
    Membre émérite
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2022
    Messages
    685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Octobre 2022
    Messages : 685
    Par défaut
    Bonjour

    je n'envisageais pas de verrouiller les cellules de ma plage car j'utilise la fonctionnalité de "double-clic" pour d'autres actions
    Le fait que la cellule soit protégée n'interdit pas le double-clic dessus.
    Quand tu vas l'intercepter pour d'autres actions il suffira d'ajouter dans le code un cancel=true et tu n'auras pas le message "cette cellule est protégée" puisque le double clic aura été annulé.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WPF] ListBox : evenement SelectionChanged se déclenche lorsque SelectedItemS change
    Par anisb dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 17/01/2008, 23h29
  2. SelectionChange(ByVal Target As Range)
    Par newsinfos dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 21/11/2007, 12h00
  3. SelectionChange sur de multiples cellules
    Par AH... dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/01/2007, 11h40
  4. Réponses: 4
    Dernier message: 14/11/2006, 18h12
  5. [MFC] CListCtrl : manipuler Selectionchanged
    Par mychawel dans le forum MFC
    Réponses: 2
    Dernier message: 13/07/2004, 15h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo