Raccourci clavier pour macro Excel [Résolu]

Messages postés
13
Date d'inscription
lundi 7 août 2006
Dernière intervention
27 mai 2008
- - Dernière réponse : mortalino
Messages postés
6812
Date d'inscription
vendredi 16 décembre 2005
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 !
Afficher la suite 

Votre réponse

9 réponses

Meilleure réponse
Messages postés
6812
Date d'inscription
vendredi 16 décembre 2005
Dernière intervention
21 décembre 2011
3
Merci
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 à

Merci mortalino 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 105 internautes ce mois-ci

Commenter la réponse de mortalino
Messages postés
6812
Date d'inscription
vendredi 16 décembre 2005
Dernière intervention
21 décembre 2011
0
Merci
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
Commenter la réponse de mortalino
Messages postés
13
Date d'inscription
lundi 7 août 2006
Dernière intervention
27 mai 2008
0
Merci
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 ...
Commenter la réponse de WedgeAnt
Messages postés
6812
Date d'inscription
vendredi 16 décembre 2005
Dernière intervention
21 décembre 2011
0
Merci
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 à
Commenter la réponse de mortalino
Messages postés
13
Date d'inscription
lundi 7 août 2006
Dernière intervention
27 mai 2008
0
Merci
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)
Commenter la réponse de WedgeAnt
Messages postés
13
Date d'inscription
lundi 7 août 2006
Dernière intervention
27 mai 2008
0
Merci
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)
Commenter la réponse de WedgeAnt
Messages postés
6812
Date d'inscription
vendredi 16 décembre 2005
Dernière intervention
21 décembre 2011
0
Merci
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 à
Commenter la réponse de mortalino
Messages postés
13
Date d'inscription
lundi 7 août 2006
Dernière intervention
27 mai 2008
0
Merci
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
Commenter la réponse de WedgeAnt
Messages postés
6812
Date d'inscription
vendredi 16 décembre 2005
Dernière intervention
21 décembre 2011
0
Merci
N'hésite pas à utiliser l'enregistreur de macro, ça aide bien au début.

@++

   Mortalino
Le mystérieux chevalier, "Provençal, le Gaulois"
Commenter la réponse de mortalino

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.