Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Liste déroulante (ComboBox) contenant date

Everlast03

XLDnaute Occasionnel
Bonjour,

J'ai un petit problème, j'ai créé une liste déroulante (ComboBox) qui contient des dates du type (jan.-09 / févr.-09 [...] mai-11)

Mon code est le suivant :
Code:
Private Sub ComboBox3_Change()
ComboBox3 = Format(ComboBox3, "mmm-yy")
Range("A50") = CDate(ComboBox3.Value)
End Sub

Mais lorsque je sélectionne "jan.-09" il m'affiche "jan.-10" et pareille pour févr.-11 il m'affiche "févr.-10".

Pourriez-vous me dire d'où cela provient-il ?
 

Pièces jointes

  • Liste.jpg
    33.5 KB · Affichages: 208
  • Liste.jpg
    33.5 KB · Affichages: 232
  • Liste.jpg
    33.5 KB · Affichages: 238

steph_60

XLDnaute Nouveau
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+
 

Everlast03

XLDnaute Occasionnel
Re : Liste déroulante (ComboBox) contenant date

Je galère vraiment, y'a rien qui marche

Pouvez-vous bosser sur ce fichier (Pièce Jointe) et me le renvoyer ?
En me précisant ce que je dois faire (ajouter des listes ou autre ...)
Je débute et j'avoue que j'ai un peu de mal là...

Merci d'avance
 

Pièces jointes

  • Classeur1.xls
    37.5 KB · Affichages: 68
  • Classeur1.xls
    37.5 KB · Affichages: 63
  • Classeur1.xls
    37.5 KB · Affichages: 77

ChTi160

XLDnaute Barbatruc
Re : Liste déroulante (ComboBox) contenant date

Salut
Bonjour le Fil
Bonjour le forum

arff dans un premier temps ta façon de nous demander un coup de main , va en décourager plus d'un , Attention !!!!

Pouvez-vous bosser sur ce fichier (Pièce Jointe) et me le renvoyer ?

En pièce jointe , j'ai repris ce que javais mis dans mon premier fichier
en ayant pris soin de Vider la propriété ListFillRange qui est une des méthode de remplissage d'un Combobox

Le Fichier : Regarde la pièce jointe Combobox Classeur1-1.zip

Bonne journée
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…