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 :

Capture d'une touche


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 25
    Par défaut Capture d'une touche
    Salut tout le monde,
    j'aurais besoin d'une petite aide au niveau d'un programme VBA tournant sous Excel.

    Voilà, j'ai une énorme feuille de calcul avec plein de calcul dedans. J'ai fait une macro VBA qui fait tourner le tout. Pour faire les calculs sur la feuille, ça prend plusieurs heures et plusieurs fois déjà j'ai fait des erreurs de manip en appuyant sur Echap, ce qui arrête la macro.

    Donc ma question est : y'aurait-il un moyen de désactiver la touche Echap au début de la macro ? Ou bien y'aurait-il moyen de capturer si quelqu'un presse la touche ?

    Codagement,
    Tomfun

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 25
    Par défaut
    Au temps pour moi, j'aurais dû mieux chercher avant de poser la question...

    J'ai donc trouvé ça et ça marche nickel :
    Application.EnableCancelKey = xlDisabled

    ++

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 25
    Par défaut
    Ok, en fait je relance le sujet car je ne suis pas satisfait par la solution que j'ai trouvé .

    En effet, la solution que j'ai ci-dessous désactive tout simplement l'arrêt manuel de la macro, c-a-d elle désactive la touche Echap ainsi que la combi Ctrl + Pause. Or, j'ai besoin de la combi Ctrl + Pause. Je veux juste désactiver la touche Echap.

    Quelqu'un a-t-il une solution à me proposer? Une piste à explorer?

    Merci d'avance.
    Tomfun

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    682
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 682
    Par défaut
    Bonjour,

    Je te propose un post-it sur l'ordinateur avec marqué dessus : "Pas faire ECHAP" !" Non?

    J'avoue ne pas être très au courant de ce genre de choses. Essaie de laisser ton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.EnableCancelKey = xlDisabled
    . Puis avec des événements de type KeyDown, KeyUp et peut-être KeyPressed (je ne sais pas si ça existe), tu mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.EnableCancelKey = xlEnabled
    lorsque tu appuies sur Ctrl + Pause.

    Essaie de partir là-dessus mais il y a peut-être bien mieux, bien plus simple mais je suis plutôt perdu là-dedans. D'autres avis seraient donc les bienvenus

  5. #5
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 514
    Par défaut
    Bonjour,

    Ctrl+Pause ou Echap sont gérés de la même façon par VBA, mais tu peux intercepter le code d'erreur correspondant et agir en conséquence.

    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
    Sub Exemple()
        Application.EnableCancelKey = xlErrorHandler        'Detourne Echap
        On Error GoTo Errh
        Do
            'Traitement
        Loop
        Application.EnableCancelKey = xlInterrupt           'Restaure Echap
        Exit Sub
    Errh:
        If Err.Number = 18 Then                             'Appui sur Echap
            If MsgBox("Arréter le programme ?", vbYesNo) = vbYes Then
                Application.EnableCancelKey = xlInterrupt   'Restaure Echap
                Exit Sub                                    'Quitte le programme
            Else
                Resume                                      'Reprend le programme
            End If
        Else
            'Autre traitement d'erreur
        End If
    End Sub
    Cordialement,

    Tirex28/

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 25
    Par défaut
    Haha, bon alors quelques réponses aux solutions proposées :

    - le post-it -> marche pas. En fait, le problème vient du fait que j'ai 2 ordis sur un même bureau, 2 claviers, 2 touches échap et autant de possibilités de me gourrer de touches échap. En plus d'avoir 6 écrans, je ne sais pas vraiment où mettre le post-it

    - les évènements de type KeySomething, je ne connais pas vraiment. Je tenterais si j'ai pas d'autres solutions mais ça me dit rien qui vaille.

    - ta solution tirex28 est pas mal, seulement je ne vois pas comment je peux l'appliquer pour qu'elle s'exécute en fond de tâche. Car il faut que ma macro s'éxecute en même temps qu'elle contrôle la touche Echap.

Discussions similaires

  1. [C#]Capturer une touche de fonction
    Par Raylemon dans le forum Général Dotnet
    Réponses: 0
    Dernier message: 27/01/2009, 03h18
  2. Réponses: 9
    Dernier message: 13/09/2007, 19h06
  3. capture d'une touche
    Par java_fun dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 28/05/2007, 12h16
  4. "capturer" une touche du clavier
    Par Chekov dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 24/12/2006, 10h41
  5. faire de la touche F1 une touche de raccourci?
    Par sb dans le forum Composants VCL
    Réponses: 3
    Dernier message: 06/08/2002, 11h11

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