Combobox-Calendrier

Résolu/Fermé
Usgpa - 28 janv. 2010 à 10:05
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 28 janv. 2010 à 15:56
Bonjour,

Existerait-il une formule pour qu'une combobox ait comme rowsource le calendrier ?
A voir également:

31 réponses

Farfadet88 Messages postés 6293 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 29 avril 2020 1 369
28 janv. 2010 à 10:16
quand tu as ta boîte à outils, clique droit et clic sur "contrôles supplémentaires"

coche la case "microsoft Date and Time Picker control 6.0"
et valide avec ok

L'outil DTPicker apparaît alors dans ta boîte à outils

C'est un calendrier complet. En cliquant dessus tu accèdes au mois en cours mais tu peux naviguer d'un mois sur l'autre. Vraiment pratique
2
Farfadet88 Messages postés 6293 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 29 avril 2020 1 369
28 janv. 2010 à 13:50
Bon grâce à pijaku j'ai réussi à te faire ta macro (et par la même occasion je l'utilise aussi sur un autre outil)


Voilà ton code

Private Sub CommandButton1_Click()

If TextBox1.TextLength = 6 Then
Dim jour As String, annee As String
Dim datedujour As String, mois As String
jour = Left(TextBox1, 2)
mois = Mid(TextBox1, 3, 2)
annee = Right(TextBox1, 2)
datedujour = jour & "/" & mois & "/" & annee
[a1] = CDate(datedujour)
Unload UserForm1

Else: MsgBox ("Veuillez rentrer la date au format jjmmaa")
End If

End Sub
1
Merci a toi et à Pijaku !!!

Juste une petite question, sachant que la donnée en question sera copié via la textbox vers la cellule (Feuil2.Range("F" & i).Value), je remplace a1 par ce qui est entre parenthèse ?

J'ai tenté : Private Sub CommandButton1_Click()

If TextBox43.TextLength = 6 Then
Dim jour As String, annee As String
Dim datedujour As String, mois As String
jour = Left(TextBox43, 2)
mois = Mid(TextBox43, 2)
annee = Right(TextBox43, 2)
datedujour = jour & "/" & mois & "/" & annee

Else: MsgBox ("Veuillez rentrer la date au format jjmmaa")
Exit Sub
End If
If TextBox4.TextLength = 6 Then
jour = Left(TextBox4, 2)
mois = Mid(TextBox4, 3, 2)
annee = Right(TextBox4, 2)
datedujour = jour & "/" & mois & "/" & annee

Else: MsgBox ("Veuillez rentrer la date au format jjmmaa")
Exit Sub
End If
Dim i As Integer
i = 1
While Feuil2.Range("A" & i) <> ""
i = i + 1
Wend

Feuil2.Range("A" & i).Value = UserForm2.TextBox1
Feuil2.Range("B" & i).Value = CDate(datedujour)
Feuil2.Range("B" & i).Value = UserForm2.TextBox4
Feuil2.Range("C" & i).Value = UserForm2.TextBox69
Feuil2.Range("D" & i).Value = UserForm2.TextBox70
Feuil2.Range("F" & i).Value = CDate(datedujour)
Feuil2.Range("F" & i).Value = UserForm2.TextBox43

Echec... si vous avez une idée ...
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 752
28 janv. 2010 à 15:49
Pas de chance...
Retentons :
Dites moi d'abord... Dans votre classeur vous avez bien une feuille nommé Feuil2?
Dim i As Integer
If TextBox43.TextLength <> 6 Then
MsgBox ("Veuillez rentrer la date au format jjmmaa") 
Exit Sub 
End If 
If TextBox4.TextLength <> 6 Then 
MsgBox ("Veuillez rentrer la date au format jjmmaa") 
Exit Sub 
End If 
With Sheets("Feuil2")
i = .Range("A65536").End(xlUp).Offset(1, 0).Row
.Range("A" & i).Value = UserForm2.TextBox1 
.Range("B" & i).Value = CDate(Format(UserForm2.TextBox4 , "@@/@@/@@"))
.Range("C" & i).Value = UserForm2.TextBox69 
.Range("D" & i).Value = UserForm2.TextBox70 
.Range("F" & i).Value = CDate(Format(UserForm2.TextBox43 , "@@/@@/@@"))
End With
1
Farfadet88 Messages postés 6293 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 29 avril 2020 1 369
28 janv. 2010 à 10:07
Tu peux mettre un DtPicker. C'est beaucoup plus pratique (petit calendrier qui s'affiche sous forme de combobox et qui affiche le mois en cours quand on clique dessus)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Comment programme ton ce Dt picker ? Permet-il seulement de séléectionenr une date du mois en cours ?
0
Merci, malheureusement au travail, mon excel est trop vieux, je pense. Il n'est pas dans les autres programmes.
0
Farfadet88 Messages postés 6293 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 29 avril 2020 1 369
28 janv. 2010 à 10:24
ça n'est pas sur excel mais sur visual basic.

Quand tu as ta boîte à outil où tu sélectionnes tes combobox, fais la manip que je t'ai dite.

Perso je suis sur 2003
0
Farfadet88 Messages postés 6293 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 29 avril 2020 1 369
28 janv. 2010 à 10:29
Ou alors sur excel,

affichage, barre d'outils, boites à outils contrôle, autres contrôles , microsoft date and time picker (a dessiner où tu désires
0
J'avais bien compris dans ton premier message où le chercher mais malheureusement il n'apparait pas dans la liste des "contrôles supplémentaires". Ni sur Vba ni sur Excel (97 je pense)...
0
Farfadet88 Messages postés 6293 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 29 avril 2020 1 369
28 janv. 2010 à 10:34
ah mince!
et contrôle calendrier?
0
Non plus... bon c'est pas grave je vais essayer de me débrouiller autrement ! Merci tout de même de l'astuce dont je me servirai quand je serai sur un logiciel plus récent. Merci !
0
Farfadet88 Messages postés 6293 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 29 avril 2020 1 369
28 janv. 2010 à 10:38
Le souci avec une combobox, c'est qu'elle te déroule une liste. Et dans le cas d'un calendrier avec un début et une fin non définis, ta liste va être immense
0
Penses-tu par exemple, qu'il serait possible de préformater une textbox afin de ne faire saisir que les chiffres entre les "/". L'utilisiteur ne peut rentrer que 6 chiffres avant et après les slash qui séparent, les jours des mois et les mois des années du type JJ/mm/aa
0
Farfadet88 Messages postés 6293 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 29 avril 2020 1 369
28 janv. 2010 à 11:10
tu veux dire que l'utilisateur tape par exemple 280110 dans sa textbox
et cela affiche 28/01/10 dans la case de ton choix?
0
En fait j'imaginais avoir les "/" déjà dans la textbox mais ta proposition me conviendrais très bien.
0
Farfadet88 Messages postés 6293 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 29 avril 2020 1 369
28 janv. 2010 à 11:14
Ben attends je regarde mais pas sûr que je réussisse
0
Farfadet88 Messages postés 6293 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 29 avril 2020 1 369
28 janv. 2010 à 11:45
Bon je n'arrive pas à sélectionner un endroit du texte pour y insérer les "/". J'ai déjà réussi à faire en sorte que l'utilisateur soit obligé de taper au moins 6 caractères (280110).

Private Sub CommandButton1_Click()
If TextBox1.TextLength > 6 Then MsgBox ("Veuillez rentrer une date au format jjmmaa")
If TextBox1.TextLength < 6 Then MsgBox ("Veuillez rentrer une date au format jjmmaa")

End Sub

J'essaie d'insérer mes / mais je ne sais pas si jy arriverai
0
Ne t'inquiètes pas Farfadet, je pense que cela suffira si tu sais comment le faire copier dans une cellule avec les "/"., je n'aurais pas besoin de les avoir dans la textbox mais je ne sais pas si c'est faisable.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 752
28 janv. 2010 à 13:55
Bonjour à vous,
Je ne connais pas les tenant et les aboutissants de cette demande de calendrier mais sous google, en tapant excel calendrier, vous pourrez trouver votre bonheur.
En exemple, trouvé ici : https://apprendreexcel.com/
Ce magnifique objet :
https://www.cjoint.com/?bCn3PwLsL2

A vous lire
0
Farfadet88 Messages postés 6293 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 29 avril 2020 1 369
28 janv. 2010 à 14:46
essaie ceci

If TextBox43.TextLength = 6 Then
Dim jour As String, annee As String
Dim datedujour As String, mois As String
jour = Left(TextBox43, 2)
mois = Mid(TextBox43, 2)
annee = Right(TextBox43, 2)
datedujour = jour & "/" & mois & "/" & annee

Else: MsgBox ("Veuillez rentrer la date au format jjmmaa")
Exit Sub
End If


If TextBox4.TextLength = 6 Then
Dim jour As String, annee As String
Dim aujourdhui As String, mois As String
jour = Left(TextBox4, 2)
mois = Mid(TextBox4, 3, 2)
annee = Right(TextBox4, 2)
aujourdhui= jour & "/" & mois & "/" & annee

Else: MsgBox ("Veuillez rentrer la date au format jjmmaa")
Exit Sub
End If
Dim i As Integer
i = 1
While Feuil2.Range("A" & i) <> ""
i = i + 1
Wend

Feuil2.Range("A" & i).Value = UserForm2.TextBox1
Feuil2.Range("B" & i).Value = CDate(datedujour)
Feuil2.Range("B" & i).Value = UserForm2.TextBox4
Feuil2.Range("C" & i).Value = UserForm2.TextBox69
Feuil2.Range("D" & i).Value = UserForm2.TextBox70
Feuil2.Range("F" & i).Value = CDate(aujourdhui)
Feuil2.Range("F" & i).Value = UserForm2.TextBox43
0