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 :

Détection de touche


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de babybell
    Homme Profil pro
    Retraité Bancaire
    Inscrit en
    Septembre 2008
    Messages
    495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Retraité Bancaire
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Septembre 2008
    Messages : 495
    Par défaut Détection de touche
    Bonjour

    J'ai cherché sur le forum sans trouver solution à mon problème.
    Existe-t-il un moyen de détecter sous VBA si une touche quelconque a été appuyée, où si l'appuie sur le click droit, ou gauche ou la molette a été fait ? En bref, détecter si une quelconque action sur la feuille a été faite.

    Merci de votre aide.

  2. #2
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 122
    Par défaut
    Salut
    Je n'ai pas Excel sous la main, mais si tu ouvres VBA et que tu regarde sur ThisWorkbook ou sur ta feuille directement (double clique) tu as une liste déroulante en haut a droite, dans cette liste tu as BeforClick, OnMouseMouve, OnKeyUp... (c'est peut etre pas les termes exact) si tu met du code dans ces evenement, le code sera réalié lors par exemple d'un clique dans une cellule (cas de BeforClick)
    A++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  3. #3
    Membre éclairé Avatar de babybell
    Homme Profil pro
    Retraité Bancaire
    Inscrit en
    Septembre 2008
    Messages
    495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Retraité Bancaire
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Septembre 2008
    Messages : 495
    Par défaut
    Désolé, mais ceux qui apparaissent sont :

    activate
    beforedoubleclick
    beforerightclick
    calculate
    change
    deactivate
    followhipperlinck
    pivottableupdate

  4. #4
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonjour,

    tu as mal cherché car tu aurais dû trouver, par exemple, Application.OnKey.
    Laquelle ne te sert toutefois pas dans le cas qui t'intéresse, puisqu'elle détecte une touche à définir.
    J'ignore, n'ayant pas excel sous la main, si d'autres choses du genre existent.
    Si tel n'est pas le cas, il te faudra passer nécessairement par des fonctions de l'Api de Windows, en conjonction avec ... un timer !... (lourd, lourd..)
    L'enjeu en vaut-il vraiment la chandelle ? . Pourquoi donc cherches-tu à faire celà ?

  5. #5
    Membre éclairé Avatar de babybell
    Homme Profil pro
    Retraité Bancaire
    Inscrit en
    Septembre 2008
    Messages
    495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Retraité Bancaire
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Septembre 2008
    Messages : 495
    Par défaut
    Car j'ai une macro qui me fait défiler un chronomètre
    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
    Sub timer_off()
    Dim start, PauseTime
    Dim S As Byte
        PauseTime = 600   ' Définit la durée.
        start = Timer    ' Définit l'heure de début.
        UserForm1.Show ([0])
        ActiveCell.Offset(0, 0).Activate
    Do While Timer < start + PauseTime
            If S <> Second(Time) Then
                UserForm1.Label1.Caption = Format(100 * Int((start + PauseTime - Timer) / 60) + Int((start + PauseTime - Timer) Mod 60), "00:00")
                S = Second(Time)
            End If
        DoEvents    ' Donne le contrôle à d'autres processus.
    Loop
    End Sub
    ce que je voudrais, c'est qu'en casd'appui sur une quelconque touche, le chronomètre se remette au début.
    J'ai bien essayé avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub CBX_Change()
    ActiveCell = CBX.Value
    End Sub
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    With CBX
    timer_off
    End With
    End Sub
    dans la feuille, mais quand j'ai validé une saisie, le chrono se remet bien au début et pour refaire une autre saisie, je suis oblgé de revalider la celluledans laquelle je veux aller, le userform a repris la main.
    Ais-je été assez clair ?

  6. #6
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Clair, oui ...

    Mais (dit mille fois) te servir d'une boucle avec la fonction Timer et DoEvents, le tout pendant 600 secondes, soit 10 minutes) est la meilleure méthode pour faire souffrir ton processeur !!!

    Sers-toi plutôt de Application.Ontime (mais il ne réagira au mieux que toutes les secondes)

    Ensuite : je t'ai parlé de Application.Onkey (qui t'éviterait ce mic-mac, à condition toutefois de définir la touche à presser.

    Mais (une autre fois) : quel peut bien être l'utilité d'une telle manoeuvre ?

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

Discussions similaires

  1. Détection des touches
    Par Oberown dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 20/12/2010, 16h16
  2. Détection de touches
    Par nicotom dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 05/06/2009, 16h12
  3. Détection de touches sans bloquer le programme
    Par DJ-sauron dans le forum Windows Forms
    Réponses: 6
    Dernier message: 03/11/2008, 09h52
  4. [D7] Détection de touche
    Par ericdelattre dans le forum Composants VCL
    Réponses: 1
    Dernier message: 13/09/2007, 16h09
  5. SDL_PollEvent et détection de touche
    Par mouteb dans le forum SDL
    Réponses: 6
    Dernier message: 14/11/2006, 22h58

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