Rendre des contrôles invisibles UserForm

jagjag36

XLDnaute Nouveau
Visible ou pas ?
Dans une procédure concernant un UserForm "Rapp" j'ai 2 "Private Sub" qui devraient rendre invisibles 3 contrôles. Dans le premier, "CREATION1" cela fonctionne, mais pas dans le second : "CREATION2", alors que si, dans ce dernier, je supprime "Unload usfRapp" et "usfRapp.Show (0)", les contrôles deviennent invisibles comme souhaité (mais j'ai besoin de ces fonctions). Comment faire ? Voici ce code :
Merci pour votre aide !

'CREATION1
Private Sub RappcmdCréer_Click()
RapptxtNo.Visible = False
RappFraA_remplir.Visible = False
RappcmdEnregistrer.Visible = False
End Sub

'CREATION2
Private Sub RappcbxBFNom_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Unload usfRapp
usfRapp.Show (0)
RapptxtNo.Visible = False
RappFraA_remplir.Visible = False
RappcmdEnregistrer.Visible = False
End Sub
 

BERRACHED said

XLDnaute Accro
Re : Rendre des contrôles invisibles UserForm

Salut,jagjag36 et bienvenue Sur Xld
salut,troisptits points


d'abord c'est quoi ? ces création 1 et 2 et si tu joint un fichier exemple c'est un simple jeux sur les propriété des contrôlés on pourra faire ça autrement sans compliqué autant la vie :D

Cordialement
 

MJ13

XLDnaute Barbatruc
Re : Rendre des contrôles invisibles UserForm

Bonjour à tous

Sinon, fait du debugage en ajoutant un stop dans ton code pour comprendre ce qui se passe (ensuite c'est F8 pour le pas à pas et ctl+shift+F8 pour continuer).
 

jagjag36

XLDnaute Nouveau
Re : Rendre des contrôles invisibles UserForm

Bonjour,
Peutêtre mettre unload après la demande d'execution
@+
...

Merci pour la suggestion mais il faut, pour la suite des opérations que je voie le UserForm dans lequel ces contrôles ont à l'origine la propriété Visible = True. Ils réapparaissent donc avec le Show.Je pourrais mettre Visible sur False à l'origine mais le même problème se poserait si je veux les voir.

En réalité la séquence "unload....show" est un artifice pour transférer la contenu du ComboBox dans la feuille et la cellule désignées dans les propriétés du ComboBox sous "ContrôleSource". En effet je n'ai pas trouvé d'événement (Click, DblClick, Change:qui agit dès l'introduction de la première lettre ou Enter) ou d'autre astuce qui fasse ce transfert immédiatement, alors qu'il a lieu avec Unload. J'ai aussi cherché dans les propriétés du ComboBox mais je n'ai rien trouvé. Si j'avais une solution qui fasse ce transfert immédiatement dès l'introduction comme dans le TextBox le problème serait résolu
 

jagjag36

XLDnaute Nouveau
Re : Rendre des contrôles invisibles UserForm

Salut,jagjag36 et bienvenue Sur Xld
salut,troisptits points


d'abord c'est quoi ? ces création 1 et 2 et si tu joint un fichier exemple c'est un simple jeux sur les propriété des contrôlés on pourra faire ça autrement sans compliqué autant la vie :D

Cordialement

Merci. Je suis prêt à faire autrement, mais comment ? (voir aussi ma réponse à trois ptits points) /jagjag36
 

Pierrot93

XLDnaute Barbatruc
Re : Rendre des contrôles invisibles UserForm

Bonjour jag, Said, Michel:)

Pas tout suivi, mais a tout hasard, essaye peut être avec la méthode "repaint" :

Code:
UserForm1.Repaint

sinon mets un petit fichier en pièce jointe reproduisant le problème et sans données confidentielles.

bonne fin d'après midi
@+
 

Lii

XLDnaute Impliqué
Re : Rendre des contrôles invisibles UserForm

Bonsoir Tous,

...

En réalité la séquence "unload....show" est un artifice pour transférer la contenu du ComboBox dans la feuille et la cellule désignées dans les propriétés du ComboBox sous "ContrôleSource". En effet je n'ai pas trouvé d'événement (Click, DblClick, Change:qui agit dès l'introduction de la première lettre ou Enter) ou d'autre astuce qui fasse ce transfert immédiatement, alors qu'il a lieu avec Unload. J'ai aussi cherché dans les propriétés du ComboBox mais je n'ai rien trouvé. Si j'avais une solution qui fasse ce transfert immédiatement dès l'introduction comme dans le TextBox le problème serait résolu
Pourquoi as-tu recours à un artifice ?
Avec la saisie d'une adresse dans ContrôleSource (par exemple B2), à l'ouverture de l'USF le Combo apparaît avec le contenu de cette adresse.
Le contenu changera dès la saisie de la première lettre avec la routine :
Private Sub ComboBox1_Change()
Range("B2").value = ComboBox1.value
End Sub
 

jagjag36

XLDnaute Nouveau
Re : Rendre des contrôles invisibles UserForm

Bonsoir Tous,


Pourquoi as-tu recours à un artifice ?
Avec la saisie d'une adresse dans ContrôleSource (par exemple B2), à l'ouverture de l'USF le Combo apparaît avec le contenu de cette adresse.
Le contenu changera dès la saisie de la première lettre avec la routine :
Private Sub ComboBox1_Change()
Range("B2").value = ComboBox1.value
End Sub

Merci de m'avoir rappelé cette manière de faire que j'avais oubliée au long de mes multiples essais. C'est bien la bonne méthode pour transférer de l'USF vers une Feuill. Toutefois j'utilise le"double click "car si on veut introduire des valeurs qui ne figurent pas dans la RowSource, dès la première lettre le Change prend la main. Je ne sais si un autre évènement serait possible mais je ne l'ai pas trouvé car Enter ne fonctionne pas.
Par contre si tu as une bonne méthode pour revenir de la Feuill sur l'USF je suis preneur ! J'en suis encore au "Unload....Show".
En attendant merci encore tu m'as retiré une grosse épine ! jagjag36
 

jagjag36

XLDnaute Nouveau
Re : Rendre des contrôles invisibles UserForm

Merci de m'avoir rappelé cette manière de faire que j'avais oubliée au long de mes multiples essais. C'est bien la bonne méthode pour transférer de l'USF vers une Feuill. Toutefois j'utilise le"double click "car si on veut introduire des valeurs qui ne figurent pas dans la RowSource, dès la première lettre le Change prend la main. Je ne sais si un autre évènement serait possible mais je ne l'ai pas trouvé car Enter ne fonctionne pas.
Par contre si tu as une bonne méthode pour revenir de la Feuill sur l'USF je suis preneur ! J'en suis encore au "Unload....Show".
En attendant merci encore tu m'as retiré une grosse épine ! jagjag36

Quelques minutes plus tard !
A la réflexion on doit pouvoir utiliser la même méthode mais dans le sens inverse : ComboBox2.value=Range("B3").value. Par contre le problème est que j'ai une trentaine de contrôles à alimenter pour lesquels il faut à chaque fois une ligne de prgm. Ce n'est pas très élégant ! (mais peut-être la seule solution ?)
 

Discussions similaires

Statistiques des forums

Discussions
312 668
Messages
2 090 739
Membres
104 643
dernier inscrit
adriano22