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 :

worksheet_beforerightclick stopper apres worksheet_selectionchange


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    comptable
    Inscrit en
    Mars 2019
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : comptable

    Informations forums :
    Inscription : Mars 2019
    Messages : 17
    Points : 2
    Points
    2
    Par défaut worksheet_beforerightclick stopper apres worksheet_selectionchange
    Bonjour,
    Sur une feuille Excel, j'ai un événement worksheet_beforerightclick.
    Le problème est que celui-ci ne se lance que quand la cellule est déjà sélectionnée.
    En effet, l'événement worksheet_selectionchange est exécuté avant worksheet_beforerightclick, mais l’exécution s'arrête, et ne continue pas sur worksheet_beforerightclick.
    Quelqu'un aurait-il une solution ?
    PS: application.enableevents est déjà actif

  2. #2
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 267
    Points : 3 663
    Points
    3 663
    Par défaut
    Bonjour,

    il faudrait que tu mettes ce que tu as dans selectionchange, pour voir ce qui pourrait provoquer cela.
    En fonctionnement normal les 2 s'enchainent.
    Teste en la mettant en commentaire. Puis rétabli les lignes par bloc pour trouver celles qui produisent cet effet
    eric

  3. #3
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    oui l'erreur est certainement dans ton code je viens de tester
    le right click fonctionne tres bien et donne "toto" et non titi (meme sur la cellule deja active )
    le selection change fonctionne avec le click gauche et donne bien "titi"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
    Target = "toto": MsgBox "evenement BeforeRightClick"
    End Sub
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Target = "titi"
    End Sub
    donc conclusion nous attendons ton code
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  4. #4
    Candidat au Club
    Homme Profil pro
    comptable
    Inscrit en
    Mars 2019
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : comptable

    Informations forums :
    Inscription : Mars 2019
    Messages : 17
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    je n'ai pas mis de code, juste un point d’arrêt pour visualiser les priorités.
    J'ai le cas aussi sur un classeur vierge.
    Par contre, je me suis aperçu que l'erreur était uniquement à mon travail (Excel professionnel 2016) et non sur mon ordinateur personnel (office 365).
    Y a-t-il eu des mises à jour particulières qui pourraient créer ce genre de problème ?

  5. #5
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    ben ecoute donne moi 5 minutes pour intérroger ma boule de christal et je te donne la reponse
    je ne peux faire que ca sans voir ton code et c'est pareil pour les autres je crois
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  6. #6
    Candidat au Club
    Homme Profil pro
    comptable
    Inscrit en
    Mars 2019
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : comptable

    Informations forums :
    Inscription : Mars 2019
    Messages : 17
    Points : 2
    Points
    2
    Par défaut
    Voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Private Sub Worksheet_BeforeRightClick(ByVal T As Excel.Range, c As Boolean)
        On Error GoTo fin
        def 'définit les variables "col" et "lgn", nombre de colonnes et lignes
            'du planning individuel type
        Set T = Intersect([b1].Resize(lgn, col - 1), T): If T Is Nothing Then Exit Sub
        If T.Address = "$B$1" Then          'redéfinit la cible T lorsqu'on clique sur
            Set T = [c2].Resize(lgn - 1, col - 2)  ' les entête de ligne ou de colonne
        ElseIf Not Intersect([c1].Resize(1, col - 2), T) Is Nothing And T.Rows.Count = 1 Then
            Set T = T(2, 1).Resize(lgn - 1, T.Columns.Count)
        ElseIf Not Intersect([b2].Resize(lgn - 1, 1), T) Is Nothing And T.Columns.Count = 1 Then
            Set T = T(1, 2).Resize(T.Rows.Count, col - 2)
        End If
        Set T = Intersect([c2].Resize(lgn - 1, col - 2), T) 'prends l'intersection
        vide = True                                         'de T avec le tableau
        For Each cel In T  'Cherche si une cellule de T au moins est non vide
            If Not IsEmpty(cel) Then vide = False: Exit For
        Next cel
        If vide Then T.Value = 0 Else T.ClearContents 'si vide remplit sinon vide
        [b1].Select
    fin: c = True
    End Sub

  7. #7
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 267
    Points : 3 663
    Points
    3 663
    Par défaut
    Re,

    c'était worksheet_selectionchange qui avait été demandé.
    Celle-là n'offre pas d'intérêt si tu n'y entres jamais.

    Quoique...
    Pourquoi avoir changé les nom par défaut des arguments ? Cancel était trop clair et trop parlant ?
    c = True est mal placé, il est exécuté systématiquement

    Pourquoi On error Goto fin ? Tu as une erreur parfaitement attendue et connue qui le justifie ?
    Si c'est le cas il faut le mettre juste avant la ligne en cause et rétablir la gestion d'erreur juste après.
    Si c'est pour mettre la poussière sous le tapis, tu l'enlèves et tu traites ton erreur.
    eric

  8. #8
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Points : 5 630
    Points
    5 630
    Par défaut
    Bonjour,

    @Eric : il y a [b1].Select

    En inhibant la redondance des évènements Change et SelectChange (et je n'aime pas utiliser des variables publiques ou privées inutiles) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    Option Explicit
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Dim T as Range , cel as Range, vide As Boolean
        def col, lgn
        Set T = Intersect([b1].Resize(lgn, col - 1), T): If T Is Nothing Then Exit Sub
        If T.Address = "$B$1" Then          'redéfinit la cible T lorsqu'on clique sur
            Set T = [c2].Resize(lgn - 1, col - 2)  ' les entête de ligne ou de colonne
        ElseIf Not Intersect([c1].Resize(1, col - 2), T) Is Nothing And T.Rows.Count = 1 Then
            Set T = T(2, 1).Resize(lgn - 1, T.Columns.Count)
        ElseIf Not Intersect([b2].Resize(lgn - 1, 1), T) Is Nothing And T.Columns.Count = 1 Then
            Set T = T(1, 2).Resize(T.Rows.Count, col - 2)
        End If
        Set T = Intersect([c2].Resize(lgn - 1, col - 2), T) 'prends l'intersection
        vide = True                                         'de T avec le tableau
        For Each cel In T  'Cherche si une cellule de T au moins est non vide
            If Not IsEmpty(cel) Then vide = False: Exit For
        Next cel
        Application.EnableEvents = False
        If vide Then T.Value = 0 Else T.ClearContents 'si vide remplit sinon vide
        [b1].Select
        Application.EnableEvents = True
        Cancel = True
    End Sub
    Sub def(col As Long, lgn As Long)
       'col = ...
       'lgn = ...
    End Sub
    Cordialement,
    Patrice
    Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.

    Pour dire merci, cliquer sur et quand la discussion est finie, penser à cliquer sur

  9. #9
    Candidat au Club
    Homme Profil pro
    comptable
    Inscrit en
    Mars 2019
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : comptable

    Informations forums :
    Inscription : Mars 2019
    Messages : 17
    Points : 2
    Points
    2
    Par défaut
    Re,

    Le problème ne vient pas du code en lui même, puisqu'il fonctionne sur office 365.
    J'ai créé un nouveau classeur, avec le code proposé par patricktoulon, mais cela ne fonctionne pas non plus.

    Si je fais un click droit sur une cellule autre que la cellule active, j'ai systématiquement "titi" qui s'écrit. Si je veux écrir "toto", il faut que je fasse un click droit sur la cellule active.
    seb

  10. #10
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Points : 5 630
    Points
    5 630
    Par défaut
    Citation Envoyé par the_chamois Voir le message
    Le problème ne vient pas du code en lui même, puisqu'il fonctionne sur office 365.
    C'est parce qu'un code fonctionne qu'il ne contient pas d'erreur !
    Laisser se déclencher des évènements parasites en est une.

    Si ça fonctionne pas avec le code de patrick, peut-être est-ce l'autre droite.
    Cordialement,
    Patrice
    Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.

    Pour dire merci, cliquer sur et quand la discussion est finie, penser à cliquer sur

  11. #11
    Candidat au Club
    Homme Profil pro
    comptable
    Inscrit en
    Mars 2019
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : comptable

    Informations forums :
    Inscription : Mars 2019
    Messages : 17
    Points : 2
    Points
    2
    Par défaut
    Déjà essayé aussi.
    En mode débogage, lorsque je fais un clic droit sur une cellule non active, worksheet_selectionchange s'active tout de suite (ce qui est normal), mais pas worksheet_beforerightclick.

  12. #12
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 267
    Points : 3 663
    Points
    3 663
    Par défaut
    Bonjour Patrice,

    @Eric : il y a [b1].Select
    Certes. Mais il se plaint que cette procédure n'est pas appelée. Même pleine d'erreurs elle ne peut pas être la cause du pb.
    A moins qu'il ne sache pas faire la différence entre une procédure non appelée, et une bien appelée mais qui ne réagit pas comme prévu (???)
    D'où ma demande du code du 1er événement intervenant : selectionchange. Le soucis ne peut provenir que d'ici.
    eric

  13. #13
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Points : 5 630
    Points
    5 630
    Par défaut
    Citation Envoyé par the_chamois Voir le message
    Déjà essayé aussi.
    En mode débogage, lorsque je fais un clic droit sur une cellule non active, worksheet_selectionchange s'active tout de suite (ce qui est normal), mais pas worksheet_beforerightclick.
    Et si tu fais un double clic droit, que se passe-t-il ?
    Cordialement,
    Patrice
    Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.

    Pour dire merci, cliquer sur et quand la discussion est finie, penser à cliquer sur

  14. #14
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 267
    Points : 3 663
    Points
    3 663
    Par défaut
    et ne continue pas sur worksheet_beforerightclick.
    As-tu mis un Stop au début de cette procédure pour affirmer ça ?
    eric

  15. #15
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Points : 5 630
    Points
    5 630
    Par défaut
    Citation Envoyé par Patrice740 Voir le message
    Si ça fonctionne pas avec le code de patrick, peut-être est-ce l'autre droite.
    Paramètres Windows, Souris, Bouton principal
    Cordialement,
    Patrice
    Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.

    Pour dire merci, cliquer sur et quand la discussion est finie, penser à cliquer sur

  16. #16
    Candidat au Club
    Homme Profil pro
    comptable
    Inscrit en
    Mars 2019
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : comptable

    Informations forums :
    Inscription : Mars 2019
    Messages : 17
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par Patrice740 Voir le message
    Et si tu fais un double clic droit, que se passe-t-il ?
    Cela fonction correctement

  17. #17
    Candidat au Club
    Homme Profil pro
    comptable
    Inscrit en
    Mars 2019
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : comptable

    Informations forums :
    Inscription : Mars 2019
    Messages : 17
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par eriiic Voir le message
    As-tu mis un Stop au début de cette procédure pour affirmer ça ?
    eric
    Non, j'ai juste mis un point d'arrêt, et avance en mode "pas à pas"

  18. #18
    Candidat au Club
    Homme Profil pro
    comptable
    Inscrit en
    Mars 2019
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : comptable

    Informations forums :
    Inscription : Mars 2019
    Messages : 17
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par Patrice740 Voir le message
    Paramètres Windows, Souris, Bouton principal
    Le clic droit fonctionne correctement

  19. #19
    Candidat au Club
    Homme Profil pro
    comptable
    Inscrit en
    Mars 2019
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : comptable

    Informations forums :
    Inscription : Mars 2019
    Messages : 17
    Points : 2
    Points
    2
    Par défaut
    voici une vidéo qui expliquera mieux je pense...
    "https://youtu.be/ZLGhDi9z598"

  20. #20
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 267
    Points : 3 663
    Points
    3 663
    Par défaut
    Bon, après 3 demandes toujours pas le code demandé, je me retire...
    eric

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 6
    Dernier message: 14/10/2009, 18h17
  2. derniere fonction exécuté apres avoir stopper le debogage
    Par WELCOMSMAIL dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 13/05/2008, 16h19
  3. Stopper un thread après un certain temps
    Par Rodrigue dans le forum C++/CLI
    Réponses: 1
    Dernier message: 14/04/2008, 13h25
  4. Stopper une action apres avoir cliquez sur un bouton
    Par geriler dans le forum Windows Forms
    Réponses: 3
    Dernier message: 03/03/2008, 16h31
  5. Stopper un process après un temps donné
    Par Danae dans le forum Administration système
    Réponses: 12
    Dernier message: 23/12/2005, 14h07

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