Raccourci clavier pour macro Excel

Résolu
WedgeAnt Messages postés 13 Date d'inscription lundi 7 août 2006 Statut Membre Dernière intervention 27 mai 2008 - 7 août 2006 à 14:46
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 - 8 août 2006 à 21:20
Bonjour

Je suis en train de programmer une feuille Excel avec des macros en VB et je souhaiterais pouvoir définir un raccourci clavier pour une fonction bien précise, et ceci sans avoir à passer par l'interface graphique d'Excel. Je voudrais pouvoir définir le raccourci directement dans le code source de la macro.

J'ai cherché dans la doc, mais je ne suis pas parvenu à trouver la réponse à ce que je cherche.

Merci d'avance !

9 réponses

mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
7 août 2006 à 15:56
Moi ca fonctionne !! (avec 2 ou 3 modifs) :

Public Sub Fill_Date()
    Dim DateJour As Date
  
    DateJour = Date
    Call Select_Next_Empty_Cell(DateJour)  '*** et supprime le ThisWorkbook
    Selection.Value = Hour(Time)
    Call Select_Next_Empty_Cell(DateJour)
    Selection.Value = Minute(Time)
End Sub

* Alors corrige ces deux Call !
* Tes procédures Sub Select_Next_Empty_Cell(ByVal DateJour As Date)
& Public Sub Fill_Date()
doivent etre placés dans un Module.

@++

   Mortalino
Le mystérieux chevalier, "Provençal, le Gaulois"

Merci de prendre le temps de répondre à
3
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
7 août 2006 à 15:15
Salut,

dans l'évènement ThisWorkBook_Open(), place ceci :
Application.MacroOptions Macro:" Macro1 ", HasShortcutKey:True, ShortcutKey:= " z "

Remplace Macro1 par le nom de la macro (ou fonction) à affecter, sachant que je ne l'ai testé qu'avec une procédure Sub.
Remplace "z" par la lettre de raccourci. Dans mon exemple avec z, c'est Ctrl + z
qu'il faut faire.

@++

   Mortalino
Le mystérieux chevalier, "Provençal, le Gaulois"

Merci de prendre le temps de répondre à ce [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx sondage]
Merci de prendre le temps de lire [reglement.aspx le Règlement CS]    =ZSzeb008_ZNxdm414YYFR
0
WedgeAnt Messages postés 13 Date d'inscription lundi 7 août 2006 Statut Membre Dernière intervention 27 mai 2008
7 août 2006 à 15:31
Salut

Merci pour cette réponse rapide, ça me semble être la bonne réponse, d'autant plus qu'en regardant la doc de MacroOptions, je tombe exactement sur la description de ce que je veux faire.

Il reste encore un petit souci, après avoir ajouté la ligne correspondante dans l'évènement WorkBook_Open(), j'ai une erreur 1004:
"La méthode 'MacroOptions' de l'objet '_Application' a échoué", et parfois "Erreur définie par l'application ou par l'objet"

Je ne comprends pas d'où ça peut provenir ...
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
7 août 2006 à 15:36
Quelle est cette ligne de code dans cette procédure ?
Qu'appelles-tu ? (une fonction ou une procédure)

Tu es bien en VBA Excel ? ou tu passes par VB pour accéder au classeur ?

@++

   Mortalino
Le mystérieux chevalier, "Provençal, le Gaulois"

Merci de prendre le temps de répondre à
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
WedgeAnt Messages postés 13 Date d'inscription lundi 7 août 2006 Statut Membre Dernière intervention 27 mai 2008
7 août 2006 à 15:43
Voici le code au complet :

Sub Select_Next_Empty_Cell(ByVal DateJour As Date)
    Dim C As Integer
   
    For C = 2 To 10
        If IsEmpty(Cells(Day(DateJour) + 2, C)) Then
            Cells(Day(DateJour) + 2, C).Select
            Exit For
        End If
    Next C
End Sub

Public Sub Fill_Date()

    Dim DateJour As Date

   

    DateJour = Date

    ThisWorkbook.Select_Next_Empty_Cell (DateJour)

    Selection.Value = Hour(Time)

    ThisWorkbook.Select_Next_Empty_Cell (DateJour)

    Selection.Value = Minute(Time)

End Sub

Private Sub Workbook_Open()
    Dim DateJour As Date
   
    DateJour = Date
    Sheets(Month(DateJour) & "." & Year(DateJour)).Select
   
    If IsEmpty(Cells(Day(DateJour) + 2, 2).Value) Then
        Cells(Day(DateJour) + 2, 2).Value = Hour(Time)
        Cells(Day(DateJour) + 2, 3).Value = Minute(Time)
        Cells(Day(DateJour) + 2, 4).Select
    Else
        ThisWorkbook.Select_Next_Empty_Cell (DateJour)
    End If

    Application.MacroOptions Macro:="Fill_Date", HasShortcutKey:=True, ShortcutKey:="j"
End Sub

C'est pas bien long, ni bien compliqué ;)
Euh, pour savoir si c'est du VBA ou du VB ... j'en sais trop rien en fait, je dirais VBA puisque le navigateur de macro excel m'indique VBAProject

cat /boot/vmlinuz > /dev/dsp (hear the song of sirens)
0
WedgeAnt Messages postés 13 Date d'inscription lundi 7 août 2006 Statut Membre Dernière intervention 27 mai 2008
7 août 2006 à 16:06
Merci beaucoup !!!

Pour mon premier programme Excel/VB(A?), ça se passe plutôt bien ... aux petites erreurs de débutant près :)

cat /boot/vmlinuz > /dev/dsp (hear the song of sirens)
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
7 août 2006 à 16:15
C'est du VBA, tu passes par le logiciel de développement intégré à Excel.
Si tu avais fait cela en vb, cela aurait été qque peu différent !

@++

   Mortalino
Le mystérieux chevalier, "Provençal, le Gaulois"

Merci de prendre le temps de répondre à
0
WedgeAnt Messages postés 13 Date d'inscription lundi 7 août 2006 Statut Membre Dernière intervention 27 mai 2008
8 août 2006 à 10:17
Ok

En fait, je programme régulièrement dans plein de langages différents (C/C++, Perl, Java, PHP, Shell linux etc ...), mais je ne connais ni VB, ni VBA. C'est pour fabriquer une feuille de pointage automatique pour mon taf que j'ai fait une feuille excel, et en voulant ajouter plein de fonctionnalités, il a bien fallu que je mette aux macros.
Ca m'enchantais moyennement au départ, mais ça se passe plutôt bien, donc bon ...

Et désolé si ma syntaxe comporte des erreurs, je n'ai pas de bouquin sous la main, à part la doc fournie sous Excel
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
8 août 2006 à 21:20
N'hésite pas à utiliser l'enregistreur de macro, ça aide bien au début.

@++

   Mortalino
Le mystérieux chevalier, "Provençal, le Gaulois"
0
Rejoignez-nous