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
- 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.
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,
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,