Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Groupe de macros

1 réponse
Avatar
Patrick
Bonjour,
J'essaie de r=E9cup=E9rer en VBA les noms des groupes de=20
macros stock=E9s dans une macro.
J'arrive =E0 r=E9cup=E9rer le nom de la macro mais pas les=20
macros int=E9gr=E9es.

Qui pourait m'aider ?


Merci

1 réponse

Avatar
André AVONS
Salut
Ci joint un code qui permet de mire et de modifier une macro (ici la macro
autokeys)
Bien entendu il faut que tu modifies

'?MajAutoKeys("D:GitpCourrierSuiviCourrier.mdb","")
Public Function MajAutoKeys(Nombase As String, Optional MDP As Variant) As
Boolean

Dim appAccess As Object
Dim AKnotExist As Boolean
Dim testCtrlT As Boolean, testCtrlI As Boolean
Dim MyString As String
Const ForReading = 1, ForAppending = 8
Dim fs, f

On Error GoTo MajAutoKeys_Error

Set appAccess = CreateObject("Access.Application")
appAccess.OpenCurrentDatabase Nombase, False, MDP
appAccess.Application.Echo False

AKnotExist = False
'---------------------------------------------------------------------------
----
'Suppression du fichier txt
'---------------------------------------------------------------------------
----
Kill fReturnTempDir & "autoKeys.txt"
'---------------------------------------------------------------------------
----
'Sauvegarde en texte de la macro AutoKeys
'---------------------------------------------------------------------------
----
appAccess.SaveAsText acMacro, "AutoKeys", fReturnTempDir & "autoKeys.txt"
'// Exporte la macro dans un fichier txt
'---------------------------------------------------------------------------
----
'Lecture du fichier texte pour voir si Ctrl t pour MajTextInfoBulleTr existe
déja
'---------------------------------------------------------------------------
----
If AKnotExist = False Then
Open fReturnTempDir & "autoKeys.txt" For Input As 1
Do While Not EOF(1) ' Effectue la boucle jusqu'à la fin du fichier.
Line Input #1, MyString
'Si l'action existe deja pour le formulaire
If InStr(1, MyString, "MajTextInfoBulleTr") > 1 Then
Close #1
appAccess.DoCmd.Quit acQuitSaveNone
MajAutoKeys = True
GoTo Fin
End If
'Test si la touche ctrl T est deja utilisée
If InStr(1, MyString, "^T") > 1 Then testCtrlT = True
'Test si la touche ctrl I est deja utilisée
If InStr(1, MyString, "^I") > 1 Then testCtrlI = True
Loop
Close #1
End If
'---------------------------------------------------------------------------
----
'Ecriture de l'action de la macro dans le fichier texte
'---------------------------------------------------------------------------
----
'Si le fichier textte n'existe pas
'Si autokeys n'existe pas Ecriture de l'entete de la macro
If AKnotExist = True Then
Open fReturnTempDir & "autoKeys.txt" For Output As 1
Print #1, "Version = 196611" & vbCrLf
Print #1, "ColumnsShown = 1" & vbCrLf
Close #1
End If
'Ajout les lignes de l'action
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.OpenTextFile(fReturnTempDir & "autoKeys.txt", ForAppending)
'ecriture de l'action pour ouvrir le form
f.Write "Begin" & vbCrLf
'Suivant si les touches de ctrl sont déja affectées
If testCtrlT = False Then
f.Write " MacroName = " & Chr(34) & "^T" & Chr(34) & vbCrLf
Else
If testCtrlI = False Then
f.Write " MacroName = " & Chr(34) & "^I" & Chr(34) & vbCrLf
Else
f.Write " MacroName = " & Chr(34) & "^B" & Chr(34) & vbCrLf
End If
End If

f.Write " Action = " & Chr(34) & "OpenForm" & Chr(34) & vbCrLf
f.Write " Argument = " & Chr(34) & "MajTextInfoBulleTr" & Chr(34) &
vbCrLf
f.Write " Argument = " & Chr(34) & "0" & Chr(34) & vbCrLf
f.Write " Argument = " & Chr(34) & "" & Chr(34) & vbCrLf
f.Write " Argument = " & Chr(34) & "" & Chr(34) & vbCrLf
f.Write " Argument = " & Chr(34) & "-1" & Chr(34) & vbCrLf
f.Write " Argument = " & Chr(34) & "0" & Chr(34) & vbCrLf
f.Write "End" & vbCrLf
f.Close



'Mise a jour de la macro autokeys
appAccess.LoadFromText acMacro, "Autokeys", fReturnTempDir & "autoKeys.txt"
'// Création de la macro.

appAccess.CloseCurrentDatabase
appAccess.DoCmd.Quit acQuitSaveAll
DoEvents

MajAutoKeys = True


Fin:
Set f = Nothing
Set fs = Nothing
Set appAccess = Nothing
Exit Function

MajAutoKeys_Error:
If Err = 53 Then
Resume Next
Else
If Err = 2001 Then
AKnotExist = True
Resume Next
Else
MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure
MajAutoKeys of Module Mise à Jour AutoKeys"
appAccess.DoCmd.Quit acQuitSaveNone
MajAutoKeys = False
Resume Fin
End If
End If

End Function



--
@+
André

Quelques liens avec des exemples, des utilitaires et des compléments pour
Access
http://access.seneque.free.fr/
http://www.self-access.com/
http://www.mvps.org/accessfr/
http://mypage.bluewin.ch/w.stucki/
http://access.jessy.free.fr/

"Patrick" a écrit dans le message de
news: 015001c3b1a3$b46f8960$
Bonjour,
J'essaie de récupérer en VBA les noms des groupes de
macros stockés dans une macro.
J'arrive à récupérer le nom de la macro mais pas les
macros intégrées.

Qui pourait m'aider ?


Merci