Combobox : code pour date, nombres

  • Initiateur de la discussion Pascal
  • Date de début
P

Pascal

Guest
Bonjour au forum !

Je cherche à mettre des dates dans un combobox à partir d'une liste et ensuite à trier les dates par ordre croissant sur la feuille de données liée à l'userform.

Voila le code que j'utilise derrière le combobox :

Private Sub DateDachat_Change()
DateDachat.Value = Format(DateDachat, "dd mmm yyyy")

End Sub

Or quand je veux trier les dates sur la feuille de données excel me les trie comme du texte (ex: 1 mars 2003, 20 avril 2002, 3 juillet 2004...) et non par date (20 avril 2002, 1 mars 2003, 3 juillet 2004)

"Pyrox" m'a répondu et je l'en remercie qu'il fallait mettre "jj mmm aaaa" or si je fais ça, lorsque je sélectionne une date (ex :30 mars 2003) il va me mettre dans le formulaire et la feuille de données liée "jj mars aaaa"

Que dois-je faire, car là ça fait 3 jours que je suis dessus et ça commence à m'énerver, surtout qu'il ne me reste que ça à faire sur mon application.

Que dois-je mettre comme format de date pour la liste ?
Que dois-je mettre comme code derrière le combobox ?
Que dois-je mettre comme format de date sur la feuille de données ?

Tant que j'y pense j'ai le même problème pour les nombres avec le signe € derrière.

Je vous remercie dans l'espoir d'une réponse positive

@+ Pascal
 
T

Tigrous

Guest
j'ai u le mm probleme recemment
je me suis battu plusieurs jours avec la saisie de date entre un textbox
et une feuille excel

voici ce que j'ai fais :

1 - sur la validation de la boite de dialogue :
DateTraitement = CDate(TextBoxDate.Value)

2 - a l'écriture dans la feuille de calcul
Cells(Lig, 1) = DateTraitement

3 - sur la relecture des données de la feuille dans la boite de dialogue :
TextBoxDate = Format(Cells(Lig, 1), "@")

regarde si ça marche !!!

il y a d'autres problèmes avec les dates si tu utilise des filtres personnalisés sous macro vba car les dates sont inversées
la saisie "dd/mm/yy" donne au niveau du filtre "mm/dd/yy" : ATTENTION

Moi aussi j'ai un problème
Comment calculer le nombre de lignes après un filtre sur un critère pour pouvoir déterminer le nombre données à afficher sur l'axe des abcisses
avec la variable "TickLabelSpacing"
 
J

jacquesderyes

Guest
Bonsoir Pascal et les amis du forum

C'est pas clair ton pb!
si j'ai compris tu veux ajouter des dates à partir d'1 combo qui affiche déjà les dates présentes sur ta feuille et ensuite trier l'ensemble des dates sur la feuille en ordre croissant.
Si tu me confirmes celà j'essayerai de t'aider.

Amitiés

Jacques de ryes
 
J

jacquesderyes

Guest
Bonsoir Tigrous
Voici le code pour connaitre le nombre de lignes triées






Sub linesfiltrees()

Dim ligVisible As Range
Dim ligzone As Range
Dim R As Long
With Range("mafeuille!_FilterDatabase")
Set ligVisible = Intersect(.Cells, .SpecialCells(xlVisible))
End With
For Each ligzone In ligVisible.Areas
R = ligzone.Rows.Count + R
Next
MsgBox R - 1

End Sub
Amitiés


Jacques de ryes
 
P

Pascal

Guest
Bonjour Tigrous, bonjour Jacques et merci d'avoir répondu.

J'ai essayé ta soluce mais je n'arrête pas d'avoir des messages de débogage, peu être que je m'y prend mal car je débute sur les userform et les bouquins sont pas très clairs sur les combobox.

Sinon, Jacques, je vais essayé d'être plus clair

J'ai une feuille nommée Listes ou j'ai mis des dates du 01 mars 2003 au 31 décembre 2016, j'ai nommé la plage "Jours"

J'ai créé un userform avec plusieurs combobox dont un combobox où je devrais choisir une date et que j'ai nommé "DateDachat" dans Propriété j'ai mis à la ligne RowSource : Jours

Derrière le combobox j'ai mis ce code :

Private Sub DateDachat_Change()
DateDachat.Value = Format(DateDachat, "dd mmm yyyy")

End Sub

C'est le seul code que j'ai trouvé pour l'instant qui me permette de lire correctement la date comme elle se présente dans la feuille Listes si je mets des jj ou des aa, je les retrouve dans mon userform, j'ai essayé d'autres moyens et dans mon userform je me retrouve avec la date transformée en nombre et ce n'est pas ce que je veux.

Mon Userform ou formulaire est ensuite relié à une feuille nommée "Données" j'ai mis le même format de date dans la colonne H "Date D'achat" que dans la feuille Liste. Donc quand je choisis ma date dans le formulaire et que je valide la date se met automatiquement dans la colonne H. Jusque là tout va bien mais mon but est de trier ma colonne H par ordre croissant et décroissant afin de connaître mes derniers achats. Or là est le problème, le tri se fait comme si la date était du texte, il se fait suivant le jour et non par la date entière. Il trie 0, 1, 2, 3, 4...et ne s'occupe pas des mois ni des années, et donc voilà ce que j'ai si je trie par ordre croissant :

01 décembre 2006
02 mars 2004
10 janvier 2007
20 avril 2005

J'espère que c'est un peu plus clair comme ça.

A+ et bon courage car je suppose que vous aussi vous cogitez sur d'autres problèmes !

Pascal
 
P

pascal

Guest
Bonsoir !

J'ai essayé mais le premier problème c'est que ça ne me met pas la date que je souhaite 01 mars 2003 mais 01/03/03 et deuxième problème j'ai une macro qui annule les saisies si la personne s'est trompée dans le formulaire qui est la suivante :

Private Sub ANNULER_Click()
Interprète = ""
TitreAlbum = ""
Genre = ""
SousGenre = ""
Pays = ""
Cote = ""
DateDachat = ""
DateDeSortie = ""
LieuDachat = ""
PrixDachat = ""
Distributeur = ""
Duree = ""
NombreCD = ""
End Sub

Et cette macro ne fonctionne plus car pour excel DateDachat="" n'est plus compatible avec CDate(DateDachat)

Merci quand même ! je crois que je vais abandonné le tri par date dans un userform pour l'instant à moins que tout le forum se mette dessus ! C'est peut-être un peu trop demander. lol

Allez ! à bientôt !

Pascal
 

Discussions similaires

Réponses
2
Affichages
304

Statistiques des forums

Discussions
312 196
Messages
2 086 099
Membres
103 116
dernier inscrit
kutobi87