XL 2013 date fin de moi dans label

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

nadem0068

XLDnaute Junior
Bonsoir,

je viens vers vous car j'ai une erreur dans mon code VBA que je ne comprend pas.
j'ai deux bouton dans une userform.
1 bouton pour les mois et l'autre pour les années.
je cherche à afficher la date du dernier jour du mois sélectionné dans un label.
quand je change le mois pas de soucis mais quand je change l'année j'ai un code erreur.
je ne comprend pas pourquoi.

merci d'avance à tout ceux qui prendrons le temps de se pencher sur mon PB.😉
 

Pièces jointes

Bonjour,

Essaye ça :
VB:
Private Sub UserForm_Initialize()
'
Dim x As Date

    With Me.SpinButton1
        .Min = 1 'Valeur mini
        .Max = 12 'Valeur maxi
        'Spécifie le déplacement se produisant lorsque l'utilisateur clique sur
        'les flèches de défilement dans le contrôle SpinButton
        '(La valeur par défaut = 1)
        .SmallChange = 1
        .Value = Month(Now())
    End With
    Label1.Caption = SpinButton1.Value

    With SpinButton2
        .Min = 2000 'Valeur mini
        .Max = 2100 'Valeur maxi
        'Spécifie le déplacement se produisant lorsque l'utilisateur clique sur
        'les flèches de défilement dans le contrôle SpinButton
        '(La valeur par défaut = 1)
        .SmallChange = 1
        .Value = Year(Now())
    End With
    Label2.Caption = SpinButton2.Value

    x = CDate(Day(Now) & "/" & Label1.Caption & "/" & Label2.Caption)
    Label3.Caption = CDate(Application.WorksheetFunction.EoMonth(x, 0))

End Sub
 
Bonjour le fil

Une autre façon
(j'ai renseigné en dur (dans les propriétés des Spinbutton) leur Min, Max et SmallChange
VB:
Dim Jour As Date
Private Sub SpinButton1_Change()
Label1.Caption = SpinButton1.Value
Jour = CDate("1-" & Label1.Caption & "-" & Label2.Caption)
Label3.Caption = DJ(Jour)
End Sub

Private Sub SpinButton2_Change()
Label2.Caption = SpinButton2.Value
Jour = CDate("1-" & Label1.Caption & "-" & Label2.Caption)
Label3.Caption = DJ(Jour)
End Sub

Function DJ(D As Date) As Date
DJ = DateSerial(Year(D), Month(D) + 1, 0)
End Function

Private Sub UserForm_Initialize()
Label1.Caption = SpinButton1.Min
Label2.Caption = SpinButton2.Min
Label3.Caption = CDate("1-" & SpinButton1.Min & "-" & SpinButton2.Min)
End Sub
NB: test OK lors de mon test sur mon PC.
 
Bonjour à tous,
Est-ce qu'on peut se permettre de proposer de simplifier avec un seul Spinbutton et un seul Label?
Demo_dtfdm.gif


Le code devient alors :
VB:
Private Sub UserForm_Initialize()
    Me.SpinButton1.Value = DateDiff("m", DateSerial(2021, 1, 1), Date)
End Sub


Private Sub SpinButton1_Change()
Dim Dt As Date, Sng As Single

    Sng = Me.SpinButton1.Value / 24 / 12
    Dt = DateAdd("m", 1, DateSerial(2021 + Hour(Sng), 1 + Minute(Sng) / 5, 1))
    Me.Label1.Caption = DateAdd("d", -1, Dt)
End Sub
P.
 

Pièces jointes

Re

Désolé, je suis encore sous Windows 10
(celui-ci me disant que mon PC ne peut recevoir W11)

J'ai cru que c'était grâce aux API, puis j'ai ouvert ton fichier
alors j'ai cru que c'était avec les nouvelles versions d'Excel
(Désolé bis, je suis encore sous Excel 2013 😉)

En tout cas, ton code est concis, simple et efficace.
Bravo.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
126
Réponses
2
Affichages
82
Réponses
12
Affichages
499
Retour