Créer un sélecteur de date dans UserForm, Excel VBA
Voici un code détaillé pour créer un sélecteur de date dans un UserForm en VBA Excel. Nous allons utiliser un ComboBox pour permettre à l’utilisateur de choisir une date à partir de plusieurs options (comme jour, mois, et année).
Étapes :
- Créer un UserForm avec un ComboBox et un Label pour afficher la date sélectionnée.
- Remplir les ComboBox avec les jours, mois et années.
- Ajouter des contrôles pour afficher la date sélectionnée dans un Label.
Code complet en VBA :
- Création du formulaire
Pour commencer, nous devons créer un UserForm avec :
- 3 ComboBox (pour les jours, mois, et années).
- 1 Label pour afficher la date choisie.
- Code VBA dans le module UserForm :
' Dans le module UserForm Private Sub UserForm_Initialize() ' Remplir le ComboBox des jours (1 à 31) Dim i As Integer For i = 1 To 31 ComboBoxJour.AddItem i Next i ' Remplir le ComboBox des mois (janvier à décembre) ComboBoxMois.AddItem "Janvier" ComboBoxMois.AddItem "Février" ComboBoxMois.AddItem "Mars" ComboBoxMois.AddItem "Avril" ComboBoxMois.AddItem "Mai" ComboBoxMois.AddItem "Juin" ComboBoxMois.AddItem "Juillet" ComboBoxMois.AddItem "Août" ComboBoxMois.AddItem "Septembre" ComboBoxMois.AddItem "Octobre" ComboBoxMois.AddItem "Novembre" ComboBoxMois.AddItem "Décembre" ' Remplir le ComboBox des années (par exemple, de 2000 à 2024) Dim year As Integer For year = 2000 To 2024 ComboBoxAnnee.AddItem year Next year End Sub Private Sub ComboBoxJour_Change() ' Mettre à jour l'affichage de la date chaque fois qu'un jour est sélectionné AfficherDate End Sub Private Sub ComboBoxMois_Change() ' Mettre à jour l'affichage de la date chaque fois qu'un mois est sélectionné AfficherDate End Sub Private Sub ComboBoxAnnee_Change() ' Mettre à jour l'affichage de la date chaque fois qu'une année est sélectionnée AfficherDate End Sub Private Sub AfficherDate() ' Vérifier si tous les ComboBox ont une valeur sélectionnée If ComboBoxJour.ListIndex <> -1 And ComboBoxMois.ListIndex <> -1 And ComboBoxAnnee.ListIndex <> -1 Then ' Afficher la date sélectionnée dans le Label LabelDate.Caption = ComboBoxJour.Value & " " & ComboBoxMois.Value & " " & ComboBoxAnnee.Value End If End Sub
Explications :
1. UserForm_Initialize :
- Cette procédure s’exécute lorsque le formulaire est initialisé. Elle remplit les trois ComboBox avec les jours, mois et années.
- Pour les jours, nous avons rempli le ComboBox avec les valeurs de 1 à 31.
- Pour les mois, nous avons rempli le ComboBox avec les noms des mois de janvier à décembre.
- Pour les années, nous avons rempli le ComboBox avec une plage d’années de 2000 à 2024.
2. ComboBoxJour_Change, ComboBoxMois_Change, ComboBoxAnnee_Change :
- Ces procédures sont déclenchées lorsqu’une sélection est faite dans l’un des ComboBox.
- Chaque fois que l’utilisateur sélectionne un jour, un mois ou une année, la fonction AfficherDate est appelée pour mettre à jour le Label avec la date choisie.
3. AfficherDate :
- Cette procédure vérifie si l’utilisateur a sélectionné un jour, un mois et une année (en vérifiant les indices des éléments sélectionnés dans les ComboBox).
- Si toutes les sélections sont valides, elle affiche la date sous le format « Jour Mois Année » dans le LabelDate.
Interface de l’utilisateur :
- Lorsque l’utilisateur ouvre le formulaire, il voit trois ComboBox (pour les jours, mois et années), ainsi qu’un Label pour afficher la date choisie.
- Après avoir sélectionné un jour, un mois et une année, la date sélectionnée s’affiche dans le Label.
Exemple de formulaire :
Le LabelDate pourrait afficher par exemple :
« 15 Février 2024 » si l’utilisateur choisit le jour 15, le mois de février et l’année 2024.
Suggestions supplémentaires :
- Vous pouvez ajouter des fonctionnalités supplémentaires, comme valider que la date existe réellement (par exemple, février n’a pas toujours 31 jours).
- Ajouter des boutons pour valider ou annuler la sélection, si nécessaire.
Conclusion :
Ce code permet de créer un sélecteur de date dans un UserForm avec des ComboBox. Vous pouvez l’adapter selon vos besoins pour obtenir la date dans un format spécifique ou pour l’enregistrer dans une cellule d’Excel.