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 :

[VBA] Excel control de touche tab


Sujet :

Macros et VBA Excel

  1. #1
    Membre expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 869
    Points : 3 442
    Points
    3 442
    Billets dans le blog
    1
    Par défaut [VBA] Excel control de touche tab
    Bonjour à tous

    J'aurais besoin de controler la touche TAB dans une feuille Excel.
    j'ai chercher dans l'aide et KeyPress ne m'aide pas beaucoup voici ce que dit l'aide :
    Un événement KeyPress ne se déclenche pas lorsque l'utilisateur appuie sur l'une des touches suivantes :
    TAB.
    ENTRÉE...
    j'ai donc fais une recherche sur le forum et j'ai trouver un topic interessant : http://www.developpez.net/forums/vie...&highlight=tab

    Celui-ci est sur VB pur et je ne connais pas voici l'extrait :
    Mehdi_ab a dit

    je vais te donnez les API necessaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Declare Function GetAsyncKeyState Lib "User32" (ByVal vKey As Long) As Integer 
    Declare Function GetKeyState Lib "User32" (ByVal nVirtKey As Long) As Integer
    pour la 1er fonction ,tu passe en argument un code ascii et te renvoie une valeur differente de 0 si la touche correspondate est appuyé
    La 2éme te renvoie l'etat du boutton

    Si l'idée est celle du KeyLogger en Vb j'ai une source ,si tu le veux tu re

    --------------------------------------------------------------------------------
    zazaraignée a dit

    Salut

    Tu peux mettre la propriété KeyPreview à true sur une Form et récupérer les codes ascii sur l'événement KeyPress grâce au paramètre KeyAscii ou encore sur l'événement KeyUp et le parametre KeyCode.

    Cependant, il est impossible d'intercepter la touche Tab avant qu'elle n'est déplacé le focus sur un champ... et que... Ben, c'est pas parfait, quoi!
    Ce qu'a dit Mehdi_ab est parfaitement obscur pour moi les declare function machin ..... Je ne sais pas ce que c'est ni a quoi cela sert ? ni à quoi cela pourrait me servir

    zazaraignée dis c'est impossible avant ... c'est peut-être possible après le déplacement du focus ??????

    Et pour ça je ne vois pas du tout comment on peut faire

    Bref j'aurais besoin de vos lumières, petit coup de main pour un autodidacte ignorant svp merci

    Igloobel

  2. #2
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    1) je ne vois pas la disponibilité de Keypress dans Excel
    2) je vois par contre un Onkey intéressant...


    Si, somme toute (puisque tu parles de Keypress) tu agis depuis VB et pas VBA), ce n'ezst pas l'événement KeyPress mais l'événement KeyDown qui pourra détecter la touche TAB...

    Mais, compte tenu de tout ce que tu as écrit, je ne sais plus si tu "marches" avec VB ou avec VBA : dis-nous-le donc !

    :

  3. #3
    Expert éminent
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Points : 7 962
    Points
    7 962
    Par défaut
    sinon tu peux mettre dans la feuille
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Worksheet_Activate()
        Application.OnKey "{TAB}", "MaProc"
    End Sub
     
    Private Sub Worksheet_Deactivate()
        Application.OnKey "{TAB}"
    End Sub
    Puis écrire ta procédure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Public Sub MaProc()
        MsgBox "Tab Appuyé"
    End Sub

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 128
    Points : 55 940
    Points
    55 940
    Billets dans le blog
    131
    Par défaut
    Bonjour

    En VBA, tu peux utiliser OnKey, que tu initialises quand tu le souhaites ( par exemple à l'activation de la feuille) avec la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    application.onkey "{TAB}", "Ma_Proc"
    Dans un module standard, tu auras une procédure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    sub Ma_Proc()
       msgbox "touche TAB pressée"
    end sub
    N'oublie pas de remettre la touche en état via
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    application.onkey "{TAB}"
    à la désactivation de la feuille...

    Ok?

    Pierre Fauconnier

  5. #5
    Membre expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 869
    Points : 3 442
    Points
    3 442
    Billets dans le blog
    1
    Par défaut
    Merci à tous,

    Effectivement OnKey est exactement ce que je voulais , et je ne connaissait pas . Merci

    Pour répondre à tes questions jmfmarques :

    . Donc je fonctionne qu'en VBA (que j'ai appris en autodidacte et pas en VB que je n'est pas appris )

    . La fonction Keypress existe en VBA aussi. J'ai fais :
    - ouvrir un classeur
    - ouvrir Visual Basic editor
    - tapez Keypress, puis F1
    et là l'aide en ligne nous dit comment on utilise keypress et ses restrictions (voir premier post)

    je travaille avec une version Excel 2000.

    En tout cas merci à bidou et Pierre Fauconnier pour leurs proposition de code. Je vais mettre le tag et si j'ai des soucis avec Onkey je créerais un nouveau sujet 8)

    Igloobel

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

Discussions similaires

  1. [XL-2003] VBA Excel controle les champs
    Par mémoinfo dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 08/06/2009, 15h23
  2. [VBA Excel] Controle DatePicker
    Par kstorfou dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 20/03/2009, 16h32
  3. [VBA-E] controle pour afficher une feuille excel
    Par SpaceFrog dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 08/02/2006, 12h17
  4. [VBA] [excel] MàJ auto tab croisé dynamique
    Par Angel79 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/02/2006, 11h05
  5. [VBA Excel] Fiabilité des controles Actives X
    Par Farbin dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 26/08/2005, 13h28

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