Passer un UserForm dans une variable
#1
Débutant XLPages

Inscription: 25/03/2011

Messages: 15

Système d'exploitation:
PC
Version Excel utilisée:
2007
Posté le : 07-04-2011 06h56

Bonjour le forum,

Dans un userform j'utilise des procédures du type de celle-ci :

Sub Efface()
 
    Dim vControle As Control
 
    'Boucle sur tous les contrôle pour les mettre à blanc
    For Each vControle In Me.Controls
        If TypeOf vControle Is MSForms.TextBox Then vControle.Text = ""
        If TypeOf vControle Is MSForms.ComboBox Then vControle.Text = ""
    Next
   
    Set vControle = Nothing

End Sub

Je vais créer d'autres userforms qui nécessiteront ces mêmes procédures.
Je les ai donc mises dans le module principal mais je butte sur le remplacement de "Me." par une variable chargée du nom du userform.
J'ai essayé :

Public vUsf As String
vUsf = "UsfClients"

Public vUsf As Object
Set vUsf = UsfClients.Name("UsfClients")

Public vUsf As UserForm
vUsf = UsfClients
 

Aucune de ces 3 déclarations ne fonctionne. Une fois ce problème réglé peut-être serait-il plus conventionnel d'appeler la procédure en passant la variable en val ou ref ?:

Efface vUsf
Sub Efface(ByVal vUsf As UserForm)
 
    Dim vControle As Control
 
    'Boucle sur tous les contrôle pour les mettre à blanc
    For Each vControle In vUsf.Controls
        If TypeOf vControle Is MSForms.TextBox Then vControle.Text = ""
        If TypeOf vControle Is MSForms.ComboBox Then vControle.Text = ""
    Next
   
    Set vControle = Nothing

End Sub

Merci
Cordialement
Daniel


 


Hors Ligne
Rapport   Haut 

Re: Passer un UserForm dans une variable
#2
Accro XLPages

Inscription: 09/01/2008
De Montréal, Québec

Messages: 463

Système d'exploitation:
PC
Version Excel utilisée:
97 à 2016
Posté le : 07-04-2011 12h00
Bonjour Daniel,

Il n'est sans doute pas nécessaire de passer les formulaires un par un pour effacer les zones de texte des TextBox ou des ComboBox.

Comme ces formulaires seront vraisemblablement ouverts il suffit de parcourir la collection des formulaires ouverts (UserForms) et de vider les textes de ceux-ci. Par exemple :

Sub EffaceTexteComboTousFormulaires()

  Dim Formulaire As msforms.UserForm
  Dim Ctrl As msforms.Control
 
  For Each Formulaire In UserForms
 
    For Each Ctrl In Formulaire.Controls
   
      If TypeOf Ctrl Is msforms.TextBox Or TypeOf Ctrl Is msforms.ComboBox Then
       
        Ctrl.Text = vbNullString
       
      End If
     
    Next
   
  Next
 
End Sub
 


Aide d'Excel : « La collection UserForms est l'ensemble des objets UserForm chargés dans une application. »

Si tu veux effacer les zones de texte dans un seul formulaire la procédure Efface que tu cites fait l'affaire et l'appel de cette procédure est bien :

Efface usfTruc

si usfTruc est bien un objet UserForm.


Cordialement,

Guy


Hors Ligne
Rapport   Haut 

Re: Passer un UserForm dans une variable
#3
Débutant XLPages

Inscription: 25/03/2011

Messages: 15

Système d'exploitation:
PC
Version Excel utilisée:
2007
Posté le : 07-04-2011 15h41
Bonjour Guy,

Je note ta méthode mais je n'aurai pas tant de formulaires que ça et d'autre part il n'y en aura guère plus de trois ouverts simultanément qui n'auront pas le même besoin de virginité en même temps !

En fait mon problème s'est résolu en déplaçant la ligne ci-dessous du code du module1 dans lequel est déclarée la variable vUsf, vers le code du userform

Set vUsf = UsfClients
Ce qui m'a interpellé c'est qu'au débogage cette ligne là m'amenait directement dans userform_initialize ().

Pour l'instant ça marche, je testerais plus tard l'appel de la procédure avec ByVal, ça fera plus pro.

Merci de ton concours
Cordialement
Daniel
Hors Ligne
Rapport   Haut 


Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Qui consulte actuellement ce sujet ?   1 Utilisateur(s) anonymes