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

bonjour,

mets un tout petit fichier en pièce jointe, avec un seul USF, montrant bien le problème posé, parce que la, en l'état on risque de tourner en rond longtemps...
 

Jesaispas26

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

Voilà un petit fichier épuré.
J'ai du supprimer les contrôles "image" pour gagner de la place alors ne t'étonne pas si quelques lignes de code sont passées en commentaire.

J'ai un deuxième problème qui apparaît maintenant. A1Motdepasse1 contient un CommandButton (Bouton3) que n'a pas A1Motdepasse2 et A1Motdepasse2 contient un Label (Titre4) que n'a pas A1Motdepasse2. Afin de ne pas avoir de plantage, j'ai mis une commande du genre :

On Error GoTo 1
With Cible
.Bouton3.Visible = False
End With
1:

Or, pour masquer mes contrôles, ça se passe très bien, mais plus loin dans le code, quand je les fais réapparaître, il me plante une erreur malgré la présence du "On Error". Saurais tu me dire d'où ça vient ?

D'avance merci !
 

Pièces jointes

  • Essai.zip
    22 KB · Affichages: 17
  • Essai.zip
    22 KB · Affichages: 24
  • Essai.zip
    22 KB · Affichages: 23

Pierrot93

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

Re

si associé au bon bouton :
Code:
Private Sub Bouton3_Click()

et si des points devant les instructions du bloc "with" :

Code:
With Cible
    .Cadre1.Visible = True
    .Bouton1.Visible = True
    .Bouton2.Visible = True
    .Titre3.Visible = True
End With

le code de ton 1er usf passe bien chez moi....
 

Jesaispas26

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

Oui apparement c'est bon maintenant avec les points pour chaque instruction du bloc With.

Par contre le 4ème "On error" bug chez moi. Il m'affiche quand même l'erreur en me disant "Propriété ou méthode non gérée par cette objet". Ce qui est normal puisqu'il n'y a pas de Titre4 dans le 1er userform. C'est pour ça que j'avais mis un "On Error" mais on dirait qu'il n'en tient pas compte.
 

Pierrot93

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

Re

essaye plutôt avec l'instruction "On Error Resume Next"

Code:
On Error Resume Next
Cible.Bouton3.Visible = False
On Error GoTo 0

A priori ceci est plus approprié pour gérer les erreurs liées aux objets, cf ci-dessous note de l'aide vba...

Note La construction On Error Resume Next est plus appropriée que l'instruction On Error GoTo pour gérer les erreurs générées lors de l'accès à des objets.
 

Jesaispas26

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

Tout simplement magnifique !

ça marche impeccable. Merci beaucoup Pierrot. Tout marche impeccable maintenant. Un grand merci pour le temps que tu as consacré à mon problème depuis hier soir. Promis, je t'embète plus avant.... une bonne demi - heure ^^.

Bonne après midi à toi (et à tous les autres aussi)
 

Discussions similaires

Statistiques des forums

Discussions
312 490
Messages
2 088 875
Membres
103 980
dernier inscrit
grandmasterflash38