Utiliser une varaible pour désigner un Userform

Jesaispas26

XLDnaute Nouveau
Bonsoir à tous !

Voilà je viens de consulter des dizaines de messages de ce forum et je ne trouve pas d'exemple qui colle à mon problème. Je me permet donc de vous le soumettre.

J'ai plusieurs Userforms identiques sur lesquels je veux effectuer la même opération. Afin d'alléger mon code, j'ai donc créer une Sub qui s'exécutera sur le userform à partir duquel elle a été lancée. Pour simplifier, mon code se présente comme ça :

Dans chaque Userform (ici appelé USFBanane pour l'exemple) :

Private Sub Bouton1_Click()
Call AffichageMessage(USFBanane)
End Sub

Dans un module :

Sub AffichageMessage(NomUSF)
With Userforms(NomUSF)
Label1.Visible = True
Textbox1.Visible = False
End With
End Sub

A l'exécution, ce code me plante un message "Incompatibilité de type" (à l'endroit signalé en rouge)mais je ne trouve pas mon erreur.

En gros, mon problème consiste à désigner un userform par une variable et à employer cette variable pour différentes fonctions. (Je croyais qu'on pouvait utiliser systématiquement Userforms(Variable).label1 à la place de Userform1.label1.......)

D'avance merci

Bonne soiréeà ceux qui auront tenté de m'aider (et même aux autres ^^).
 
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : Utiliser une varaible pour désigner un Userform

Bonsoir,

peut être ainsi :

code à utiliser dans un module standard :

Code:
Sub AffichageMessage(MonUSF As UserForm)
With MonUSF
    .Label1.Visible = True
    .TextBox1.Visible = False
End With
End Sub

pour lancer la procédure, dans le module de l'usf :

Code:
AffichageMessage Me

bonne soirée
@+
 

Bebere

XLDnaute Barbatruc
Re : Utiliser une varaible pour désigner un Userform

bonjour Jesaispas,Pierrot

en reprenant le code Pierrot

Sub AffichageMessage(ByRef MonUsf As UserForm)
With MonUSF
.Label1.Visible = True
.TextBox1.Visible = False
End With
End Sub

de chaque userform
AffichageMessage me

à bientôt
 

Habitude

XLDnaute Accro
Re : Utiliser une varaible pour désigner un Userform

Bonsoir à tous !

Voilà je viens de consulter des dizaines de messages de ce forum et je ne trouve pas d'exemple qui colle à mon problème. Je me permet donc de vous le soumettre.

J'ai plusieurs Userforms identiques sur lesquels je veux effectuer la même opération. Afin d'alléger mon code, j'ai donc créer une Sub qui s'exécutera sur le userform à partir duquel elle a été lancée. Pour simplifier, mon code se présente comme ça :

Dans chaque Userform (ici appelé USFBanane pour l'exemple) :

Private Sub Bouton1_Click()
Call AffichageMessage(USFBanane)
End Sub

Dans un module :

Sub AffichageMessage(NomUSF)
With Userforms(NomUSF)
Label1.Visible = True
Textbox1.Visible = False
End With
End Sub

A l'exécution, ce code me plante un message "Incompatibilité de type" (à l'endroit signalé en rouge)mais je ne trouve pas mon erreur.

En gros, mon problème consiste à désigner un userform par une variable et à employer cette variable pour différentes fonctions. (Je croyais qu'on pouvait utiliser systématiquement Userforms(Variable).label1 à la place de Userform1.label1.......)

D'avance merci

Bonne soiréeà ceux qui auront tenté de m'aider (et même aux autres ^^).

A la limite ton code aurait pu marcher
Seul petit problème

la fonction UserForms prend un index et non du texte.
 
Dernière édition:

Jesaispas26

XLDnaute Nouveau
Re : Utiliser une varaible pour désigner un Userform

Euh finalement, j'ai quand même un petit soucis ^^

J'arrive pas à appeler ma procédure avec les arguments nécessaires.
J'ai tenté :

AffichageMessage(Userform1, "Identification", 50, "réussie", 50) Me
AffichageMessage("Userform1", "Identification", 50, "réussie", 50) Me
AffichageMessage Me(Userform1, "Identification", 50, "réussie", 50)
.........

mais aucun ne passe.

Auriez vous une idée ?
 

Bebere

XLDnaute Barbatruc
Re : Utiliser une varaible pour désigner un Userform

bonjour Jesaispas,Pierrot,Habitude

suivre le conseil de Pierrot
code à utiliser dans un module standard

Sub AffichageMessage(ByRef MonUsf As UserForm,Xlbl as string,Xtbo)
With MonUSF
.Label1.Visible = True
.TextBox1.Visible = False
.Label1.Caption = Xlbl
.TextBox1.Value =Xtbo
End With
End Sub

de chaque userform
AffichageMessage me, "Identification réussie",50

à bientôt
 

Jesaispas26

XLDnaute Nouveau
Re : Utiliser une varaible pour désigner un Userform

Hop hop hop !

Vous tracassez pas, j'ai parlé trop vite. Je viens de trouver la soluce.

Pour info :

With Me
Call AffichageMessage(Userform1, False, "Mot de passe", 50, "erroné", 50)
End With

Est ce bien la bonne méthode ?
 

Jesaispas26

XLDnaute Nouveau
Re : Utiliser une varaible pour désigner un Userform

Désolé j'avais pas vu vos réponses avant de rédiger mon dernier post, je m'attendais pas à une réponse aussi rapide.

Comment ma procédure est elle déclarée ? Ben euh... j'avoue que je suis un peu allergique aux déclarations de variables et autres (y compris les déclarations d'impôts^^).

J'ai juste mis ça dans un module :

Public Sub AffichageMessage(ByRef Cible As UserForm, Valide, Texte1, Taille1, Texte2, Taille2)

et ça dans mon Userform :

With Me
AffichageMessage Me, A1Motdepasse1, True, "Identification", 50, "réussie", 50
End With


Désolé si j'ai pas été assez précis dans mon premier message mais j'ai essayé d'être le plus synthétique possible pour pas vous innonder d'informations inutiles.
 

Pierrot93

XLDnaute Barbatruc
Re : Utiliser une varaible pour désigner un Userform

Re,

A priori un argument en trop :

Code:
AffichageMessage Me, A1Motdepasse1, True, "Identification", 50, "réussie", 50

comprends pas le "With Me", Aà priori n'est pas utilisé...

sans plus de détails, pas facile de t'aider...
 

Jesaispas26

XLDnaute Nouveau
Re : Utiliser une varaible pour désigner un Userform

Je suis vraiment crétin des fois. Je me suis planté dans mon copier coller.
En fait j'ai mis ça dans mes Userform :

With Me
Call AffichageMessage(A1Motdepasse1, True, "Identification", 50, "réussie", 50)
End With


Plus de précisions ? Alors pour tout te raconter, disons que j'ai fait un système d'identification dans mon projet. J'ai un Userform pour saisir le mot de passe et un autre pour le modifier. Afin de gérer les messages d'erreurs liés à ces évenement, j'ai créé une procédure qui masque les contrôles du userform, affiche le message d'erreur, masque le message d'erreur et réaffiche les contrôles du userform. Etant donné que je risque de me reservir de cette méthode plus tard dans mon projet, j'ai préféré la placer dans une procédure à part.

Suivant l'évenement qui intervient, j'identifie le problème et j'affiche le message approprié comme ça :

If Textox1 <> motdepasse then

With Me
Call AffichageMessage(A1Motdepasse1, True, "Identification", 50, "réussie", 50)
End With

Else

With Me
Call AffichageMessage(A1Motdepasse1, True, "Mot de passe", 50, "erroné", 50)
End With
 

Discussions similaires

Statistiques des forums

Discussions
312 095
Messages
2 085 249
Membres
102 835
dernier inscrit
Alexandrax971