[VBA XL] comment connaitre les raccourcis clavier affectés aux macros ?
Le
JièL

Salutatousses,
En VBA, quelle(s) instruction(s)/bidouille(s) permet de savoir si un
raccourci clavier est affecté à une macro (sub) ?
Merci d'avance
--
JièL qui va avoir plein de questions ALC
En VBA, quelle(s) instruction(s)/bidouille(s) permet de savoir si un
raccourci clavier est affecté à une macro (sub) ?
Merci d'avance
--
JièL qui va avoir plein de questions ALC
Ca va être assez pénible à faire (pour moi, au moins). Peut-être pour ce soir.
Cordialement.
Daniel
JièL a présenté l'énoncé suivant :
voici un exemple,
Sub SupprimeToutCodeEtFormulaire()
Dim VBComp As Object
Dim VBComps As Object
Set VBComps = ThisWorkbook.VBProject.VBComponents
For Each VBComp In VBComps
Select Case VBComp.Type
Case 100
With VBComp.CodeModule
.DeleteLines 1, .CountOfLines
End With
Case Else
VBComps.Remove VBComp
End Select
Next VBComp
End Sub
isabelle
Le 2015-10-29 05:59, JièL a écrit :
Sub test1()
Dim Ligne As Long, Wbk As Workbook, M As Object, Macro As String, Enrgt As
String, Res As String
Dim Txt As Variant
Set Wbk = ThisWorkbook
Macro = "test"
For Each M In Wbk.VBProject.VBComponents
If M.Type = 1 Then
Wbk.VBProject.VBComponents(M.Name).Export "c:temp" & M.Name & ".bas"
Close #1
Open "c:temp" & M.Name & ".bas" For Input As #1
Do While Not EOF(1)
Line Input #1, Enrgt
If InStr(1, Enrgt, "Sub") = 1 Then
Txt = Replace(Enrgt, "Sub ", "")
Res = Split(Txt, "()")(0)
If Res = Macro Then
Line Input #1, Enrgt
If InStr(1, Enrgt, "Attribute") = 1 Then
MsgBox Right(Split(Enrgt, "n14")(0), 1)
Exit Sub
End If
End If
End If
Loop
Close #1
End If
Next
Kill "c:temp" & M.Name & ".bas"
End Sub
Daniel
Il se trouve que JièL a formulé :
Daniel
JièL avait écrit le 29/10/2015 :
c'était pour la question [VBA XL] Macro qui s'autodétruit
isabelle
Le 2015-10-29 09:51, isabelle a écrit :
Une macro de Laurent Longre qui fait ce que tu demandes...
Elle liste les macros associées aux raccourcis claviés.
'-----------------------------------------------------------------
Sub ListeMacros()
Dim Macro As String, Racc As String
Dim Rpt As String, I As Integer
Application.ScreenUpdating = False
Workbooks.Add.Worksheets(1).[A1:B1] = [{"Procédure","Raccourci"}]
SendKeys "%{F8}%a{PGUP}{TAB}{ESC}"
'nécessite une référence à la bibliothèque
'Microsoft Forms 2.0 Object Library
With New DataObject
Do
Rpt = "%{F8}{TAB}" & Application.Rept("{DOWN}", I)
SendKeys Rpt & "%n^c{ESC}", True
.GetFromClipboard
If Macro = .GetText(1) Then Exit Do
Macro = .GetText(1)
SendKeys Rpt & "%t^c{ESC}{ESC}", True
.GetFromClipboard
Racc = .GetText(1)
I = I + 1
Cells(I + 1, 1) = Macro
If Racc <> Macro Then Cells(I + 1, 2) = "Ctrl-" & Racc
Loop
End With
With Columns("A:B")
.AutoFit
.Sort [A1], Header:=xlYes
.CurrentRegion.AutoFormat xlRangeAutoFormatColor2
End With
End Sub
'-----------------------------------------------------------------
L'enregistrement en .bas est la seule solution pour savoir quel est le
raccourci clavier ?
Je suis quand même surpris que ça soit "accessible" via un fichier texte
en pas directement dans le VBA
Si tu as d'autres idées, je prend, mais déjà merci beaucoup pour celle là
--
JièL
Le 29/10/2015 15:48, DanielCo a écrit :
"Microsoft Forms 2.0 Object Library" n'est pas listé dans Excel 2010
(oublié de précisé la version), mais même si je la rajoute "à la main"
il doit y avoir un truc qui ne va pas car je ne retrouve pas le
raccourci clavier, juste le nom de la macro
Outre le fait que les sendkeys... bof bof et que je dois faire ça pour
une version FR et aussi pour une US, voire pour une DE :-(
Je vais quand même essayer de comprendre ce que font tout ces sendkeys
Merci
--
JièL
Le 29/10/2015 18:39, MichD a écrit :
Merci, je teste ta solution quand même ;-)
--
JièL
Le 29/10/2015 15:56, isabelle a écrit :
Cette bibliothèque s'ajoute automatiquement lorsqu'on insère un "formulaire"
dans un projetVBA, sinon, on doit l'insérer manuellement à partir du menu
Outils / références. Cette bibliothèque permet l'utilisation de l'objet "DataObject"
pour accéder au contenu du presse-papier.
À la décharge de Laurent, cette macro date d'avant Excel 2007. La séquence des
touches utilisées par "SendKeys" ne doit plus convenir!