Re : Liste déroulante (ComboBox) contenant date
Tiens
Fichier zippé moins de 20 ko
A force de bidouiller les propriétés des contrôles
kjin
bonjour
le poblème est le format standard américain ...par rapport au format français
français " jour/mois/années" américain " mois/jour/année"
il faut réaliser une fonction qui réalise cette conversion
voici une méthode
'Definir le tableau pour le comboBox
'exemple
Const Tab_Date As Variant = "jan.-09; févr.-09; mars.-09; avr.-09; mai.-09; jui.-09; juil.-09; août.-09;sept.-09;oct.-09;nov.-09;déc.-09"
Private Sub ComboBox3_Change()
Dim cvDate As Date
Feuil1.Activate
Feuil1.Select
Feuil1.Range("A50").Select
' formatage de l'affichage de la cellule
Selection.NumberFormat = "mmm-yy"
' formatage Américain --> Francais
cvDate = FormatageDate(ComboBox3.Value)
Feuil1.Range("A50") = FormatDateTime(cvDate, vbShortDate)
End Sub
Private Sub UserForm_Initialize()
Dim Vdate As Variant
'transforme le tableau defini en constante en un tableau de date
LeTableau = Split(Tab_Date, ";")
For Each Vdate In LeTableau
ComboBox3.AddItem (Vdate)
Next Vdate
'initialise la première valeur affichée
ComboBox3.Value = LeTableau(0)
End Sub
Private Function FormatageDate(ladate As Variant) As Date
'=======================================================================================
'avant conversion date format exemple : jan.-12 --> 01/12/2010
'avec la fonction jan.-12 --> 01/01/2012
'
'=======================================================================================
Dim cvDate As String
Dim Mois As String
Dim Annee As String
Dim index As Integer
cvDate = CStr(ladate)
index = 0
LeTableau = Split(Tab_Date, ";")
For Each ScanDate In LeTableau
index = index + 1
If cvDate = ScanDate Then
Mois = CStr(index)
End If
Next
Annee = CStr((Mid(ladate, Len(ladate) - 1, 2)))
Annee = "20" & Annee
FormatageDate = Mois & "/01/" & Annee
End Function
en espérant que ces quelques lignes vont t'aider
A+