Dans la rubrique d’assistance à la maintenance d’application voici un bout de code à coupler à une macro AutoKeys.
Lorsque vous devez intervenir sur une vieille application ou une application volumineuse, ce code vous rendra le service de ne pas avoir à chercher le formulaire et le contrôle actif parmi les multitudes de bibliothèques et de formulaires ou états. Cerise sur le gâteau si vous ouvrez l’éditeur VBA vous serez automatiquement positionné sur son module.
Son fonctionnement est simple ; Il repère le nom retourné par Screen.Activeform et Screen. Activecontrole et essaye de trouver le code dans le VBE components.
Function msgNameBase()
' Auteur : Fabrice CONSTANS MVP
' Description : renvoie le nom : de l'objet, de la base pour l'objet
' actif
On Error GoTo Err_msgNomBase
Dim strNomBase As String
Dim sCurfrm As String, sExt As String
Dim sCurControle As String
Dim i As Integer
sExt = "form_" ' c'est un formulaire par défaut.
' recupère le nom du forms, si c'est un report ' il part en erreur (voir traitement des erreurs)
sCurfrm = Screen.ActiveForm.Name
sCurControle = Screen.ActiveControl.Name
' si le nom n'existe pas (voir erreur)
Curfrm = Application.VBE.VBProjects(i).VBComponents(sExt & _ sCurfrm).Name
GoTo Exit_msgNomBase Err_msgNomBase:
' TRAITEMENT POUR UN ETAT.
If Err = 2475 Then
' ce n'est pas un form (2476 ce n'est pas un report)
' on capture le nom du report sCurfrm = Screen.ActiveReport.Name
' le prefixe pour un report
sExt = "Report_" Resume Next
' on continue
ElseIf Err = 9 Then
'Erreur
i = i + 1
If i > Application.VBE.VBProjects.Count Then
MsgBox "Impossible de trouver " & sCurfrm & _ " dans l'application."
Exit Function
End If
Resume
ElseIf Err > 0 Then
MsgBox "Erreur non prévue :" & Err.Number & "---" & _ Err.Description
Exit Function
End If
Exit_msgNomBase:
MsgBox IIf(sExt = "form_", "Forms", "Report") & " : " & _ sCurfrm & vbCrLf & _ "Controle : " & sCurControle & vbCrLf & _ "Base : " & Application.VBE.VBProjects(i).Name
End Function
L’intérêt est évidemment de pouvoir le déclencher n’importe quand dans l’IHM, c’est pour cela qu’il faut le coupler à une macro AutoKeys.
Bonne utilisation !