Problème de mise à jour d'une comboBox

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

HakunaMatata

XLDnaute Nouveau
Bonjour le forum,

Je suis actuellement en train de créer un userForm qui contient :
- une comboBox récupérant les mois de janvier jusqu'au mois actuel

Code:
Private Sub UserForm_Initialize()
  If Day(Date) = 1 Then
  mo = Month(Date) - 1
  Else
  mo = Month(Date)
  End If
  For mois = 1 To mo
        If mois = 1 Then ComboMois.AddItem ("Janvier")
        If mois = 2 Then ComboMois.AddItem ("Février")
        If mois = 3 Then ComboMois.AddItem ("Mars")
        If mois = 4 Then ComboMois.AddItem ("Avril")
        If mois = 5 Then ComboMois.AddItem ("Mai")
        If mois = 6 Then ComboMois.AddItem ("Juin")
        If mois = 7 Then ComboMois.AddItem ("Juillet")
        If mois = 8 Then ComboMois.AddItem ("Août")
        If mois = 9 Then ComboMois.AddItem ("Septembre")
        If mois = 10 Then ComboMois.AddItem ("Octobre")
        If mois = 11 Then ComboMois.AddItem ("Novembre")
        If mois = 12 Then ComboMois.AddItem ("Décembre")
   Next mois
End Sub

- une comboBox récupérant les jours de 1 à au chiffre du jour dépendant du mois.

Je m'explique pour cette deuxième comboBox :

1-

Les mois de Janvier, Mars, Mai, Juillet, Août, Octobre, Décembre contiennent 31 jours
Février contient 29 jours au plus
et les autres mois à savoir Avril, Juin, Septembre et Novembre en contiennent 30.

2-

Si on sélectionne le mois de Juillet, il faut que les chiffres de 0 à 31 s'affichent dans cette 2ème comboBox.
Jusque là, c'est bon.

Or, je fais en sorte que si on est le mois courant, on affiche les jours de 1 jusqu'au jour actuel - 1.

Code:
Private Sub ComboMois_Click()
    Select Case ComboMois.Value
        Case "Janvier"      
            JourImpair        
        Case "Février"      
            JourDiff      
        Case "Mars"
            JourImpair
        Case "Avril"
            JourPair
        Case "Mai"
            JourImpair
        Case "Juin"
            JourPair
        Case "Juillet"
            JourImpair
        Case "Août"
            JourImpair
        Case "Septembre"
            JourPair
        Case "Octobre"
            JourImpair
        Case "Novembre"
            JourPair
        Case "Décembre"
            JourImpair
    End Select
End Sub

Private Sub JourPair()
    ' concerne les mois de avril, juin, septembre, novembre
        Dim m As Integer
    Dim mois As String
    m = Month(Date)
    If m = 4 Then mois = "Avril"
    If m = 6 Then mois = "Juin"
    If m = 9 Then mois = "Septembre"
    If m = 11 Then mois = "Novembre"
    Dim j As Integer
    If ComboMois.Text = mois Then
            For j = 1 To Day(Date) - 1
                ComboJour.AddItem ("" & j)
            Next j
     Else
            For j = 1 To 30   
                ComboJour.AddItem ("" & j) 
            Next j                  
     End If
End Sub

Private Sub JourImpair()
    'concerne les mois de janvier, mars, mai, juillet, aout, octobre, décembre
    Dim m As Integer
    Dim mois As String
    m = Month(Date)
    If m = 1 Then mois = "Janvier"
    If m = 3 Then mois = "Mars"
    If m = 5 Then mois = "Mai"
    If m = 7 Then mois = "Juillet"
    If m = 8 Then mois = "Août"
    If m = 10 Then mois = "Octobre"
    If m = 12 Then mois = "Décembre"
    Dim j As Integer
    If ComboMois.Text = mois Then
       For j = 1 To Day(Date) - 1
            ComboJour.AddItem ("" & j)
        Next j
     Else
       For j = 1 To 31                
         ComboJour.AddItem ("" & j) 
            Next j                    
    End If
End Sub

Private Sub JourDiff()
    'concerne le mois de février
    Dim m As Integer
    Dim mois As String
    m = Month(Date)
    If m = 2 Then mois = "Février"
    Dim j As Integer
        If ComboMois.Text = mois Then
            For j = 1 To Day(Date)
                ComboJour.AddItem ("" & j)
            Next j
        Else
            For j = 1 To 29                
                ComboJour.AddItem ("" & j) 
            Next j                      
        End If
End Sub

Par exemple, nous sommes le 07 août. Donc, dans la comboBox, ca m'affiche bien les jours de 01 à 06.

Maintenant, si j'ai envie de "jouer" avec mes comboBox (pour remplacer l'utilisateur qui ne sait pas trop ce qu'il veut) :
- je choisis le mois d'août, j'ai les chiffres 01 à 06 qui s'affichent. Là, c'est ok.
- je choisis maintenant le mois de juillet, j'ai les chiffres de 01 à 31 qui s'affichent, on est ok sur ca. Cependant, on a ces chiffres mais on a aussi ceux d'avant.

3-

C'est ici ce que se trouve mon problème : comment puis je mettre à jour ma comboBox pour qu'elle n'affiche qu'une seule série de chiffres et non toutes celles des mois que j'aurais choisi ... ?

Il est vrai que dans le code, je n'ai pas mis quelque chose pour mais c'est dû au fait que j'ai essayé plusieurs trucs en vain ...

Merci à l'avance si vous pouvez m'aider !

Cordialement,
 
Re : Problème de mise à jour d'une comboBox

Bonjour HakunaMatata et le forum
Ecris comme ceci :
Private Sub ComboMois_Click()
me.combobox1.clear
etc

Ton combo se vide avant d'y integrer de nouvellex valeurs

Bon courage et à+
Denis
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 Problème de date
Réponses
5
Affichages
162
  • Question Question
Microsoft 365 Erreur UBound
Réponses
4
Affichages
144
Réponses
3
Affichages
193
Réponses
5
Affichages
235
Réponses
4
Affichages
177
Réponses
2
Affichages
153
Réponses
7
Affichages
163
Réponses
5
Affichages
182
Réponses
10
Affichages
281
Retour