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 :

Raccourcis clavier en Vba


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 6
    Par défaut Raccourcis clavier en Vba
    Bonjour tout le monde.

    J'ai un petit soucis sur du code vba que j'ai, je suis bloqué, je ne comprend vraiment pas ce qui bloque, quelqu'un aura peut êter une idée pour moi ?

    Le but du code est simple, associer un sendkey à un raccourci clavier. Exemple, j'appuie sur CTRL + D et ça me fait sendkey, "toto".

    Le code ci dessous fonctionne la première fois que j'appuye sur le raccourcis. Par contre si je refais le raccourcis dans les 3/4 secondes aprés, ça ne m'envoit plus toto, mais des caratères étranges. Si j'attends plus de 5s entre deux raccourcis, ça fonctionne bien ... Quelqu'un aurait une idée pour moi s'il vous plait ? Merci d'avance !

    Voilà le petit bout de code : (je suis sur vba d'excel 2003)

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    Private Const MOD_ALT = &H1 
    Private Const MOD_CONTROL = &H2 
    Private Const MOD_SHIFT = &H4 
    Private Const PM_REMOVE = &H1 
    Private Const WM_HOTKEY = &H312 
     
    Private Type POINTAPI 
        x As Long 
        y As Long 
    End Type 
     
    Private Type msg 
        hWnd As Long 
        message As Long 
        Wparam As Long 
        lparam As Long 
        time As Long 
        pt As POINTAPI 
    End Type 
     
    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" ( _ 
        ByVal lpClassName As String, _ 
        ByVal lpWindowName As String _ 
    ) As Long 
     
    Private Declare Function RegisterHotKey Lib "user32" (ByVal hWnd As Long, _ 
        ByVal id As Long, _ 
        ByVal fsModifiers As Long, _ 
        ByVal vk As Long _ 
    ) As Long 
     
    Private Declare Function UnregisterHotKey Lib "user32" ( _ 
        ByVal hWnd As Long, _ 
        ByVal id As Long _ 
    ) As Long 
     
    Private Declare Function PeekMessage Lib "user32" Alias "PeekMessageA" ( _ 
    lpMsg As msg, _ 
        ByVal hWnd As Long, _ 
        ByVal msgFilterMin As Long, _ 
        ByVal wMsgFilterMax As Long, _ 
        ByVal wremoveMsg As Long _ 
    ) As Long 
     
    Private Declare Function WaitMessage Lib "user32" () As Long 
     
    sub test() 
    Dim message As msg 
    Dim messageVoid As msg 
     
    ffa = RegisterHotKey(WinID, &HBFFF, MOD_CONTROL, vbKeyQ) 
    Do 
        WaitMessage 
        If (PeekMessage(message, WinID, WM_HOTKEY, WM_HOTKEY, PM_REMOVE)) Then 
             testString = "toto" 
             SendKeys testString, True 
        End If 
        DoEvents 
    Loop 
     
    End sub

  2. #2
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Bonjour &

    Faire une petite macro avec ce que tu souhaites obtenir comme par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub MaMacro()
    ActiveCell = "toto"
    End Sub
    et lui affecter la touche de raccourci Ctrl+d ne suffirait pas ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 6
    Par défaut
    Merci pour la réponse.
    J'ai oublié de mentionner le fait que le raccourcis ne sera pas utilisé dans Excel. La solution que vous proposez ne résoudrait pas le soucis.

  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
    Citation Envoyé par toutwoui Voir le message
    Merci pour la réponse.
    J'ai oublié de mentionner le fait que le raccourcis ne sera pas utilisé dans Excel. La solution que vous proposez ne résoudrait pas le soucis.
    Ah...(je l'attendais, celle-là)
    Et pourquoi ne pas l'avoir précisé dès le départ ? Juste pour faire durer la conversation ?
    Alors : quels sont les tenants et aboutissant exacts, maintenant que tu découvres qu'une réponse adéquate et précise ne peut être donnée qu'à une question également adéquate et précise ...?

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 6
    Par défaut
    Citation Envoyé par ucfoutu Voir le message
    Ah...(je l'attendais, celle-là)
    Et pourquoi ne pas l'avoir précisé dès le départ ? Juste pour faire durer la conversation ?
    Juste un oublie comme je l'ai dis dans ma précédente réponse. Il suffit de remplacer associer un sendkey à un raccourci clavier par associer un raccourci clavier appelable dans n'importe quelle application, en utilisant uniquement le vba d'excel pour que ma demande soit précise.

  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
    Citation Envoyé par toutwoui Voir le message
    Juste un oublie comme je l'ai dis dans ma précédente réponse. Il suffit de remplacer associer un sendkey à un raccourci clavier par associer un raccourci clavier appelable dans n'importe quelle application, en utilisant uniquement le vba d'excel pour que ma demande soit précise.
    Mais la "chose" ne tournera pas comme çà ...
    Il faut que l'application ait le focus...
    Et non ! ce n'est toujouirs pas précis !

    Alors : rebelote : tenants et aboutissants exacts ?

Discussions similaires

  1. VBA raccourcis clavier pour lancement macro
    Par JNP63 dans le forum VBA Word
    Réponses: 4
    Dernier message: 25/11/2008, 17h26
  2. [VBA-E][Raccourcis clavier] Commentaires
    Par trach.sam dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 16/11/2006, 20h16
  3. Imprimer une requête en Paysage sous VBA avec des raccourcis clavier.
    Par Armagnak dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 18/08/2006, 10h51
  4. [BPW]Raccourcis clavier dans une fenêtre enfant
    Par Alcatîz dans le forum Turbo Pascal
    Réponses: 2
    Dernier message: 18/02/2004, 20h07
  5. [] Raccourci clavier pour bouton d'une barre d'outil
    Par Sébastien dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 24/03/2003, 17h02

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