Function NomUSF(n As Integer) As String
Dim c As Object, i As Integer
For Each c In ThisWorkbook.VBProject.VBComponents
If c.Type = 3 Then
i = i + 1
If i = n Then NomUSF = c.Name: Exit For
End If
Next
If i = 0 Then NomUSF = "Il n'y a pas d'UserForm" 'facultatif
End Function
Entrez en A1 la valeur 1 ou 2 ou 3 etc... et en B1 la formule =NomUSF(A1)
Nota : pour que l'accès au VBAProject soit possible par macro il faut avoir coché l'option :
- sur Excel 2003 et versions antérieures Faire confiance au projet Visual Basic (menu Outils-Macro-Sécurité-Editeurs approuvés)
- sur Excel 2007 et versions suivantes Accès approuvé au modèle d'objet du projet VBA (onglet Fichier-Options-Centre de gestion de la confidentialité-Paramètres...-Paramètres des macros).
Bonjour !
Et si je souhaitais faire quelque chose comme :
If Userform1 (est actif) Then
????????
Elseif Userform2 (actif) Then
?..?..?..?..?
Etc. .
....
End if
Que devrais- je faire, s'il vous plaît ?
Pour connaître le nom de l'UserForm actif créer dans Module1 la variable Public UsfActif :
VB:
Public UsfActif As String 'mémorise la variable
Sub User1()
UserForm1.Show 0 'non modal
End Sub
Sub User2()
UserForm2.Show 0 'non modal
End Sub
Sub Test()
MsgBox IIf(UserForms.Count, UsfActif, "Aucun Useform n'est ouvert")
End Sub
Et dans le code de chaque UserForm placer la macro :
VB:
Private Sub Userform_Activate()
UsfActif = Me.Name
End Sub