combobox à remplir en fonction d'une condition

Le
jackadit
Bonjour,

j'ai un petit souci pour programmer la chose suivante :

J'ai sur une page d'un userform deux séries de combobox qui ne s'affichent
que lorsque je remplie une valeur dans un textBox.
(cette valeur est le nombre de lignes de ComboBox à afficher)

Chaque ligne de ComboBox comporte deux comboBox dont chacun à un contenu
différent.

Et c'est là que je bloque. Je n'arrive pas à définir la liste à afficher
pour chacun des Combobox.

J'ai pour l'instant le code suivant :

Sub boucleprestations()

Dim Ctrl As Control
Dim Nb As Integer
Dim b As Integer
Nb = 10 'Nombre de rangée dans le formulaire

On Error Resume Next
'Cint est une fonction de conversion de
'Texte en nombre de type entier
'Si l'usager tape une valeur non désiré
'cela provoque une erreur qui est intercepté
'et on sort de la procédure.
b = CInt(Txbprestations)
If Err > 0 Then
Err = 0
Exit Sub
End If

If b <= 0 Or b > Nb Then Exit Sub

For Each Ctrl In Me.MultiPage1.Pages(3).Controls
Select Case TypeName(Ctrl)
Case Is = "ComboBox"
Ctrl.Visible = False
If Val(Right(Ctrl.Name, 1)) < b Then
Ctrl.Visible = True
End If

Case Is = "TextBox"
Ctrl.Visible = False
If Val(Right(Ctrl.Name, 1)) < b Then
Ctrl.Visible = True
End If

Case Is = "CheckBox"
Ctrl.Visible = False
If Val(Right(Ctrl.Name, 1)) < b Then
Ctrl.Visible = True
End If
End Select
Next

For Each Ctrl In Me.MultiPage1.Pages(3).Controls
If TypeOf Ctrl Is ComboBox Then <-
c'est ici qu'il faut que je change quelque chose mais je
n'arrive pas à trouver la syntaxe
Ctrl.RowSource = "Donnees!Tab_prestations"
End If
Next

End Sub


En fait je cherche un truc du genre :

Si le texte du combobox contient ComboBox1 alors remplir avec
Sinon remplir avec .

Quelle serait la piste à suivre ?

Merci de vos conseils

jackadit
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jackadit
Le #5093691
J'ai trouvé une solution ...
c'est peut-être un peu "bidouille" mais ça fonctionne.

si quelqu'un à une solution plus "propre" je suis preneur.

Sub boucleprestations()

Dim Ctrl As Control
Dim Nb As Integer
Dim b As Integer
Nb = 10 'Nombre de rangée dans le formulaire

On Error Resume Next
'Cint est une fonction de conversion de
'Texte en nombre de type entier
'Si l'usager tape une valeur non désiré
'cela provoque une erreur qui est intercepté
'et on sort de la procédure.
b = CInt(Txbprestations)
If Err > 0 Then
Err = 0
Exit Sub
End If

If b <= 0 Or b > Nb Then Exit Sub

For Each Ctrl In Me.MultiPage1.Pages(4).Controls
Select Case TypeName(Ctrl)
Case Is = "ComboBox"
Ctrl.Visible = False
If Val(Right(Ctrl.Name, 1)) < b Then
Ctrl.Visible = True
End If

Case Is = "TextBox"
Ctrl.Visible = False
If Val(Right(Ctrl.Name, 1)) < b Then
Ctrl.Visible = True
End If

Case Is = "CheckBox"
Ctrl.Visible = False
If Val(Right(Ctrl.Name, 1)) < b Then
Ctrl.Visible = True
End If
End Select
Next

For Each Ctrl In Me.MultiPage1.Pages(3).Controls
If TypeOf Ctrl Is ComboBox Then

If Left(Ctrl.Name, 9) = "ComboBox4" Then
Ctrl.RowSource = "Formateurs!Tab_prestations"
End If

If Left(Ctrl.Name, 9) = "ComboBox5" Then
Ctrl.RowSource = "Formateurs!Tab_vacataires"
End If
End If
Next

End Sub



Mes combobox se nommant ComboBox40, ComboBox41, ComboBox42, etc
et pour la deuxième série ComboBox50, ComboBox51, ComboBox52, etc


Voilà je mets ma solution en espérant que cela puisse servir...

jackadit


"jackadit" discussion :
Bonjour,

j'ai un petit souci pour programmer la chose suivante :

J'ai sur une page d'un userform deux séries de combobox qui ne s'affichent
que lorsque je remplie une valeur dans un textBox.
(cette valeur est le nombre de lignes de ComboBox à afficher)

Chaque ligne de ComboBox comporte deux comboBox dont chacun à un contenu
différent.

Et c'est là que je bloque. Je n'arrive pas à définir la liste à afficher
pour chacun des Combobox.

J'ai pour l'instant le code suivant :

Sub boucleprestations()

Dim Ctrl As Control
Dim Nb As Integer
Dim b As Integer
Nb = 10 'Nombre de rangée dans le formulaire

On Error Resume Next
'Cint est une fonction de conversion de
'Texte en nombre de type entier
'Si l'usager tape une valeur non désiré
'cela provoque une erreur qui est intercepté
'et on sort de la procédure.
b = CInt(Txbprestations)
If Err > 0 Then
Err = 0
Exit Sub
End If

If b <= 0 Or b > Nb Then Exit Sub

For Each Ctrl In Me.MultiPage1.Pages(3).Controls
Select Case TypeName(Ctrl)
Case Is = "ComboBox"
Ctrl.Visible = False
If Val(Right(Ctrl.Name, 1)) < b Then
Ctrl.Visible = True
End If

Case Is = "TextBox"
Ctrl.Visible = False
If Val(Right(Ctrl.Name, 1)) < b Then
Ctrl.Visible = True
End If

Case Is = "CheckBox"
Ctrl.Visible = False
If Val(Right(Ctrl.Name, 1)) < b Then
Ctrl.Visible = True
End If
End Select
Next

For Each Ctrl In Me.MultiPage1.Pages(3).Controls
If TypeOf Ctrl Is ComboBox Then <----
c'est ici qu'il faut que je change quelque chose mais je n'arrive pas à
trouver la syntaxe
Ctrl.RowSource = "Donnees!Tab_prestations"
End If
Next

End Sub


En fait je cherche un truc du genre :

Si le texte du combobox contient ComboBox1... alors remplir avec ...
Sinon remplir avec ....

Quelle serait la piste à suivre ?

Merci de vos conseils

jackadit


Publicité
Poster une réponse
Anonyme