Boucle sur combobox

Nanir

XLDnaute Occasionnel
Bonjour,

J'ai du mal a formuler sur vba...
En gros : j'ai une liste de valeur variable, qui correspond à des mois (ici nbmois).
J'aimerai qu'en lancant un userform, un test soit fait sur cette liste de valeur, afin d'y afficher uniquement les combobox qui m'interessent...

J'ai fait ca :


Private Sub UserForm_Initialize()

For Each c In Range("nbmois").Rows

For Each ctrl In Me.Controls

If TypeOf ctrl Is combobox Then

If combobox = c Then
combobox.Visible = True
End If

End If

Next ctrl

Next c

End Sub

Ca ne fonctionne pas... Pouvez vous m'aider à mieux comprendre le problème?
Merci beaucoup.
 

tototiti2008

XLDnaute Barbatruc
Re : Boucle sur combobox

Bonjour Nanir,

Ok, je comprend à peu près le but,sauf pour la partie là :

Code:
If combobox = c Then

Tu vérifie si la valeur de la combobox est le nom du mois ?

comment sais-tu quelles Combobox doivent être affichées ?
 

tototiti2008

XLDnaute Barbatruc
Re : Boucle sur combobox

Re,

à tester :

Code:
Private Sub UserForm_Initialize()
Dim c As Range, ctrl As Control
    For Each c In Range("nbmois").Cells
        For Each ctrl In Me.Controls
            If TypeName(ctrl) = "ComboBox" Then
                If ctrl.Name = c.Value Then
                    ctrl.Visible = True
                End If
            End If
        Next ctrl
    Next c
End Sub
 

Nanir

XLDnaute Occasionnel
Re : Boucle sur combobox

J'ai testé le code mais c'est toujours pas bon.

Ci-joint un fichier exemple.

J'aimerais que les mois affichés dans "nbmois" soient visibles dans l'userform... Et masquer les autres...
 

Pièces jointes

  • exemple userform.xls
    39 KB · Affichages: 131
  • exemple userform.xls
    39 KB · Affichages: 138
  • exemple userform.xls
    39 KB · Affichages: 142

tototiti2008

XLDnaute Barbatruc
Re : Boucle sur combobox

Re,

Edit : Oups désolé

Tu as modifié le code que je t'ai donné
Je partais du principe que chaque contrôle était masqué (visible = false) par défaut
sinon le code peut le faire :

Code:
Private Sub UserForm_Initialize()
Dim c As Range, ctrl As Control
    For Each ctrl In Me.Controls
        If TypeName(ctrl) = "ComboBox" Then
             ctrl.Visible = False
        End If
    next ctrl
    For Each c In Range("nbmois").Cells
        For Each ctrl In Me.Controls
            If TypeName(ctrl) = "ComboBox" Then
                If ctrl.Name = c.Value Then
                    ctrl.Visible = True
                End If
            End If
        Next ctrl
    Next c
End Sub
 
Dernière édition:

Nanir

XLDnaute Occasionnel
Re : Boucle sur combobox

Petite adaptation pour les labels :

Private Sub UserForm_Initialize()

Dim c As Range, ctrl As Control

For Each ctrl In Me.Controls
ctrl.Visible = False
Next ctrl


For Each c In Range("nbmois").Cells
For Each ctrl In Me.Controls
If TypeName(ctrl) = "ComboBox" Then
If ctrl.Name = c.Value Then
ctrl.Visible = True
End If
End If



If TypeName(ctrl) = "Label" Then
If ctrl.Caption = c.Value Then
ctrl.Visible = True
End If
End If

Next ctrl
Next c

End Sub




Merci!!!
 

Discussions similaires

Réponses
21
Affichages
384
Réponses
29
Affichages
1 K

Statistiques des forums

Discussions
312 488
Messages
2 088 843
Membres
103 972
dernier inscrit
steeter