Visual Basic

Résolu
Farfadet88 Messages postés 7780 Date d'inscription   Statut Membre Dernière intervention   -  
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,
Encore un petit souci de débutant.

Comment faire en sorte qu'une combobox n'apparaisse que quand une autre combobox n'est pas vide. Autrement dit, quand je sélectionne une valeur disponible dans la combobox1, la combobox 2 apparait sur la meme userform
A voir également:

7 réponses

pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 769
 
Salut,
Lorsque la valeur de la combobox1 change faire apparaitre la combobox2 [sous entendu elle est masquée initialement]

Private Sub ComboBox1_Change()
ComboBox2.Visible = true
End Sub

0
Farfadet88 Messages postés 7780 Date d'inscription   Statut Membre Dernière intervention   1 370
 
Comment mettre la combobox 2 cachée? Et comment la rendre visible pour une réponse et cachée pour une autre réponse?
0
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 769
 
Bonjour,
Supposons que tu ais créés un Userform appelé Userform1. Celui ci contenant 2 ComboBox (1 & 2).
Au chargement du UserForm1 afficher le combo1 (par défaut excel le fera) et masquer le combo2 :

Private Sub UserForm_Activate()
ComboBox2.Visible = False
End Sub

Pour l'afficher au changement du combo1 :

Private Sub ComboBox1_Change()
ComboBox2.Visible = True
End Sub

0
Farfadet88 Messages postés 7780 Date d'inscription   Statut Membre Dernière intervention   1 370
 
Ca ne marche pas, la combobox reste apparente lorsque j'active la macro qui affiche la userform
0
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 769
 
Peux tu nous joindre ton fichier (ou un exemple) ici
0
Farfadet88 Messages postés 7780 Date d'inscription   Statut Membre Dernière intervention   1 370
 
http://www.cijoint.fr/cjlink.php?file=cj200909/cij8Ji2Wlo.xls

0
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 769
 
Dans quel userform et quelles combo sont concernées?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Farfadet88 Messages postés 7780 Date d'inscription   Statut Membre Dernière intervention   1 370
 
Dans la userform3, je cherche à cacher les combobox 2 3 4 et 5 lorsque la combobox1 n'affiche rien ou "non". Je veux qu'elles apparaissent quand la combobox1 affihe "Oui"
0
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 769
 
Ton fichier ici.
Pour info, c'est exactement ce que je t'avais indiqué :

1- au chargement du Userform masquer les combobox :
Private Sub UserForm_Activate()
ComboBox2.Visible = False
ComboBox3.Visible = False
ComboBox4.Visible = False
ComboBox5.Visible = False
End Sub
2- au changement de choix du combobox1 faire apparaitre les combobox (en gras ci dessous) :
Private Sub ComboBox1_Change()
réponse = Me.ComboBox1.Value
Select Case réponse
Case "Oui"
Me.Label2.Caption = "blablabla"
ComboBox2.Visible = True
Me.Label3.Caption = "blablabla"
ComboBox3.Visible = True
Me.Label4.Caption = "blablabla"
ComboBox4.Visible = True
Me.Label5.Caption = "blablabla"
ComboBox5.Visible = True
Case "Non"
Me.Label2.Caption = ""
Me.Label3.Caption = ""
Me.Label4.Caption = ""
Me.Label5.Caption = ""
Case "Ne sais pas"
Me.Label2.Caption = ""
Me.Label3.Caption = ""
Me.Label4.Caption = ""
Me.Label5.Caption = ""
End Select
End Sub

Remarque : on aurait pu simplifier le tout puisque les "case" non et ne sais pas sont identiques, mais j'ai voulu conserver ton code pour simplifier la compréhension.
Bon courage et n'hésite pas, tu connais le chemin...
@+
0
Farfadet88 Messages postés 7780 Date d'inscription   Statut Membre Dernière intervention   1 370
 
Merci beaucoup ça fonctionne parfaitement, j'ai élargi l'astuce à d'autres macros.

J'ai encore deux questions et après je ne devrais plus avoir de problème.

1/ Comment faire pour afficher une msg box lorsque, au minimum, une des combobox visibles n'a pas été remplie?

2/ Est-il possible d'adapter la taille de la userform en fonction des combobox et label visibles? (réduire la hauteur ou l'augmenter quand la combobox apparait)

merci
0
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 769
 
Salut,
1- Dans ton cas, c'est facile car il n'y a que 5 combobox. Dans le cas ou il y en aurait eu plus il aurait fallu boucler sur toutes. ton code est facile :
Si combo1 = rien ou combo2 = rien etc combo5 = rien
alors : message
sortie de la fonction.
Ca se traduit en VBA Excel par :

If ComboBox1.Value = "" Or ComboBox2.Value = "" Or ComboBox3.Value = "" Or ComboBox4.Value = "" Or ComboBox5.Value = "" Then
MsgBox ("merci de compléter tous les champs")
Exit Sub
End If


2- Il faut imposer une hauteur à ton userform en fonction des "actions" faites par l'utilisateur :
- au chargement du userform hauteur = 46
- au changement du combo1 : hauteur = 81
- au changement du combo2 : hauteur = 110
etc
le code pour déterminer la hauteur d'un userform : (pour info je t'ai mis le code pour la largeur en commentaire)

With UserForm3
.Height = 46
'.Width = 288
End With

Je l'ai adapté sur ton userform3 ici


Pour info également, excel n'apprécie que moyennement les .select de vba. Donc :

Sheets("données").Select
ActiveSheet.Range(("C9").Select
ActiveCell = ComboBox1.Value
ActiveSheet.Range(("C10").Select
ActiveCell = ComboBox2.Value


peut être remplacé par :

Sheets("données").Select
[C9] = ComboBox1.Value
[C10] = ComboBox2.Value
0
Farfadet88 Messages postés 7780 Date d'inscription   Statut Membre Dernière intervention   1 370
 
Ok merci.

Dernier petit bug de mon outil, j'ai créé une macro qui copie la valeur d'une textbox dans une case excel mais le souci est qu'elle la prends en compte en tant que texte et non en tant que nombre. Du coup tous mes calculs sont faussés. Comment faire pour qu'il détecte automatiquement cette case en tant que nombre?
0
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 769
 
Bizarre, je n'ai pas cela chez moi. Bon pas important.
Tu peux passer ta cellule au format "nombre" comme ceci :
Range("A12").Select
Selection.NumberFormat = "0"
0