Boucle avec multipage
Bonjour à tous,
Je développe actuellement un outil où j'ai besoin de l'utilisation d'un userform avec multipage (11 pages).
Cependant, je ne veux pas qu'elles soient toute visible.
J'ai créé une combobox (combobox3) permettant de choisir un entier entre 0 et 10.
En fonction de cette variable, j'affiche le nombre correspondant de page dans le multipage
Là où ça devient rigolo, c'est qu'en utilisant le code suivant, ça marche très bien.
If ComboBox3.Value < 10 Then Me.MultiPage1.Pages(10).Visible = False
If ComboBox3.Value < 9 Then Me.MultiPage1.Pages(9).Visible = False
If ComboBox3.Value < 8 Then Me.MultiPage1.Pages(8).Visible = False
If ComboBox3.Value < 7 Then Me.MultiPage1.Pages(7).Visible = False
If ComboBox3.Value < 6 Then Me.MultiPage1.Pages(6).Visible = False
If ComboBox3.Value < 5 Then Me.MultiPage1.Pages(5).Visible = False
If ComboBox3.Value < 4 Then Me.MultiPage1.Pages(4).Visible = False
If ComboBox3.Value < 3 Then Me.MultiPage1.Pages(3).Visible = False
If ComboBox3.Value < 2 Then Me.MultiPage1.Pages(2).Visible = False
If ComboBox3.Value < 1 Then Me.MultiPage1.Pages(1).Visible = Falsepar contre, par soucis d'optimisation, je souhaitais faire une boucle afin d'éviter de générer cette longue liste, j'ai donc utilisé le code suivant :
For i = 1 To 10
If ComboBox3.Value < i Then Me.MultiPage1.Pages(i).Visible = False
NextPour moi, il s'agit exactement de la même chose, en mettant un point d'arrêt sur Next, je vois bien que combobox3 à la bonne valeur, et i prend les bonnes valeurs, par contre, mes 10 pages sont toujours visible...
J'avoue ne pas comprendre pourquoi...
Avez vous une idée?
par la même occasion, je souhaitais aussi faire une boucle pour remettre à 0 des variables (nommée h0, h1, h2... h10)
Mais je ne sais pas comment formuler la chose, ca me semble tout bête mais ça ne veut vraiment pas sortir.
Du coup actuellement j'ai bêtement :
h0 = ""
h1 = ""
...
h10 = ""On peut faire une boucle sur le nom d'une variable?
Merci d'avance pour votre aide et bonne journée à tous !
Maxime.
Bonjour,
Testes si ça convient mais ton ComboBox doit être alimenté de 1 à 11 puisque tu as 11 pages :
Private Sub UserForm_Initialize()
Dim I As Integer
For I = 1 To 11
ComboBox3.AddItem I
Next I
End Sub
Private Sub ComboBox3_Click()
Dim I As Integer
For I = 0 To 10
Me.MultiPage1.Pages(I).Visible = True
Me.MultiPage1.Pages(I).Visible = Not (ComboBox3.Value - 1 < I)
Next I
End SubBonjour Theze et merci pour ton retour,
C'est parfait ! Ça rend le fichier beaucoup plus clair je t'en remercie.
Je me permet d'abuser de ton aide, si tu as encore un peu de temps à m'accorder sur l’appellation des variables.
Pour simplifier mon fichier, j'ai une variable qui s'appelle h0, une autre h1, h2 etc.
Je souhaitais faire une boucle pour clear ces variables.
Peut on utiliser des boucles sur des noms de variables?
Mon code actuel :
h0 = ""
h1 = ""
...
h10 = ""Re,
Non, il n'est pas possible de boucler sur les noms des variables comme on peut le faire sur les noms des contrôles. Il te faut utiliser un tableau comme par exemple ceci avec les résultats dans la fenêtrer d'exécution (Ctrl+G) :
Sub Test()
Dim h(1 To 5) As Long
Dim I As Integer
h(1) = 5
h(2) = 10
h(3) = 15
h(4) = 20
h(5) = 25
For I = 1 To 5
Debug.Print "valeur "; I; " : "; h(I)
Next I
Erase h
For I = 1 To 5
Debug.Print "valeur "; I; " : "; h(I)
Next I
End SubC'est malin !
Je n'ai jamais pratiqué les matrices dans vba, je vais regarder comment faire ça,
Merci pour ton aide, sujet résolu.
Maxime.