Date picker, Userform

Bonjour,

Je suis un peu a cour d'idée, j'ai insérer date picker dans un user form, j'aimerais que lorsque je choisi la date elle s'inscrive comme ceci.

Dans la colonne A, l'année ex: 2016

Dans la colonne B, le mois ex: Février

Dans la colonne C, le jour ex: 28

Dans la colonne D, le jour ex: Dimanche

Dans la colonne E, la semaine a laquelle cette date correspond ex; 9 parce que cette date correspond a la 9 ieme semaine sur 52

Mon problème est de déterminer la valeur de chacun

j'ai pensé a quelque chose comme ceci mais non

Private Sub DTPicker1_CallbackKeyDown(ByVal KeyCode As Integer, ByVal Shift As Integer, ByVal CallbackField As String, CallbackDate As Date)

Dim d As Date

Dim d2 As Date

Dim m As interger, dd As Integer, y As Integer

d = DTPicker1.Value

m = DTPicker1.Month

dd = DTPicker1.Day

y = DTPicker1.Year

Merci de me venir en aide

Hello, quelquechose à essayer :

Dim maDate as Date, monMois as Variant, monJour as Variant

maDate = nomCalendrierDansUserform.Value
monMois = Month(maDate)
monJour = Day(maDate)
etc...

Voila ce que j'ai fait

Le probleme est que pour le nombre de semaine que nous sommes rendu j'ai toujours 52 ieme semaine.

Aussi je veux avoir la journee, ex: lundi ou mardi etc etc

voici le lien d'un fichier test

https://www.cjoint.com/c/FBCqNKC1zJt

merci encore

Private Sub DTPicker1_CloseUp()

d = DTPicker1.Value

m = DTPicker1.Month

dd = DTPicker1.Day

y = DTPicker1.Year

Z = semaine(d)

End Sub

'fonction trouvee sur CCM: thev 23 juil. 2009 à 17:45

' modifie pour format de date yyyy-mm-dd

Function semaine(date_s)

année = Year(date_s)

date_premier_an = DateSerial(année, 1, 1)

For J = 0 To 6

date_j = date_premier_an + J

jour = Format(date_j, "dddd", vbMonday)

If jour = "jeudi" Then

date_lun_semaine1 = date_j - 3

If date_s >= date_lun_semaine1 Then

Exit For

Else

date_premier_an = DateSerial(année - 1, 1, 1)

J = -1

End If

End If

Next

semaine = 1 + (CDate(date_s) - CDate(date_lun_semaine1)) \ 7

End Function

Private Sub UserForm_Initialize()

Dim J As Long

Dim I As Integer

ComboBox1.ColumnCount = 1

ComboBox1.List() = Array("CABANON", "GARAGE", "MATÉRIAUX")

ComboBox2.ColumnCount = 1

ComboBox2.List() = Array("JUSTIN FONTAINE", "J-F SEGUIN", "VIRGINIE LANOIE", "DOMINIC CYR")

ComboBox3.ColumnCount = 1

ComboBox3.List() = Array("JUSTIN FONTAINE", "J-F SEGUIN", "VIRGINIE LANOIE", "DOMINIC CYR")

ComboBox4.ColumnCount = 1

ComboBox4.List() = Array("1 ere VISITE", "2 ieme VISITE", "3 ieme VISITE")

Set Ws = Sheets("fEUIL1")

For I = 1 To 3

Me.Controls("TextBox" & I).Visible = True

Next I

End Sub

Private Sub CommandButton1_Click()

Dim L As Integer

If MsgBox("Confirmez-vous cette nouvelle donnée ?", vbYesNo, "Demande de confirmation d’ajout") = vbYes Then

L = Sheets("FEUIL1").Range("a65536").End(xlUp).Row + 1

Range("a" & L).Value = DTPicker1.Value

Range("C" & L).Value = DTPicker1.Month

Range("B" & L).Value = DTPicker1.Day

Range("D" & L).Value = DTPicker1.Year

Range("E" & L).Value = semaine(d)

Range("G" & L).Value = ComboBox1

Range("F" & L).Value = ComboBox2

Range("I" & L).Value = ComboBox3

Range("K" & L).Value = ComboBox4

Range("H" & L).Value = TextBox1

Range("L" & L).Value = TextBox2

Range("O" & L).Value = TextBox3

End If

End Sub

Bonsoir,

Difficile de répondre à ta question !

Je ne vois pas de DTPicker dans ton Userform.

Ta fonction semaine est assez originale ! Mais elle calcule sur un bon critère ! Cependant, si elle tient compte que les 3 premiers jours de l'année peuvent faire partie de la dernière semaine de l'année précédente, elle oublie que les 3 derniers jours peuvent faire partie de la semaine 1 de l'année suivante. Les années où cela se produit, elle te renverra donc une semaine 53 inexistante pour ces jours lorsqu'il se trouvent en semaine 1.

Cordialement.

Rechercher des sujets similaires à "date picker userform"