XL 2016 Verifier si un userform existe

Don pépé

XLDnaute Occasionnel
Bonjour,
Je voudrais savoir si ont peux tester si un userform existe ou non dans un classeur?

Merci ;)
 
Solution
Bonjour Don pépé,

On peut utiliser cette fonction VBA pour tester l'existence d'un VBComponent :
VB:
Function VBComponent_Existe(nom$) As Boolean
On Error Resume Next
VBComponent_Existe = Not IsError(ThisWorkbook.VBProject.VBComponents(nom))
End Function
Tester en exécutant cette macro :
Code:
Sub Test()
MsgBox VBComponent_Existe("UserForm1") 'modifier le nom
End Sub
Pour accéder au VBAProject 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...

job75

XLDnaute Barbatruc
Bonjour Don pépé,

On peut utiliser cette fonction VBA pour tester l'existence d'un VBComponent :
VB:
Function VBComponent_Existe(nom$) As Boolean
On Error Resume Next
VBComponent_Existe = Not IsError(ThisWorkbook.VBProject.VBComponents(nom))
End Function
Tester en exécutant cette macro :
Code:
Sub Test()
MsgBox VBComponent_Existe("UserForm1") 'modifier le nom
End Sub
Pour accéder au VBAProject 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).

A+
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour Don Pépé, bonjour le forum,

Peut-être comme ça :

VB:
Sub Macro1()
Dim BE As Variant 'déclare la variable BE (Boîte d'Entrée)
Dim C As Object 'déclare la variable C (Composant)
Dim TEXT As String 'déclare la variable TEXT
Dim TEST As Boolean 'déclare la variable TEST

'définit la boîte d'entrée BE
BE = Application.InputBox("Taper le nom de l'UserForm à vérifier.", "Vérifier l'existence d'une UserForm", Type:=2)
If BE = False Or BE = "" Then Exit Sub 'si bouton [Annuler] ou non renseignée, sort de la procédure
For Each C In ActiveWorkbook.VBProject.VBComponents 'boucle sur tous les composants de ce classeur
    'si le nom du composant est identique à BE (tous les deux convertis en Majuscules), définit la variable TEST, sort de la boucle
    If UCase(C.Name) = UCase(BE) Then TEST = True: Exit For
Next C 'prochain composant de la boucle
'définit la variable TEXT
TEXT = IIf(TEST = True, "Cette UserForm existe dans ce classeur !", "Cette UserForm n'existe pas dans ce classeur !")
MsgBox TEXT 'affiche TEXT
End Sub
 

dysorthographie

XLDnaute Accro
Bonjour,
pour ce qui me concerne bricolé les autorisation d'accès à VBProject constitue une faille de sécurité que je franchis jamais!

j'ai repris le concept de Job75
VB:
Sub Test()
MsgBox VBComponent_Existe("UserForm1") 'modifier le nom
End Sub.
Function VBComponent_Existe(nom$) As Boolean
On Error Resume Next
VBComponent_Existe = Not IsError(UserForms.Add(nom$))
On Error GoTo 0
End Function

de Robert à Robert, je comprends ta position quand il s'agit du On Error!

sur un autre forum ou nous sévissions tous les deux on ce serait fais massacré pour cette utilisation du On Error!

s'ache qu'en dot.net c'est une utilisation fréquente!

il me s'emble pour ma part qu'il faut s'affranchir des dogme!
 
Dernière édition:

Statistiques des forums

Discussions
314 450
Messages
2 109 724
Membres
110 552
dernier inscrit
jasson