XL 2019 Label, choix de saisie

Katoch

XLDnaute Junior
Bonjour le Forum !

Dans mon projet , des Labels sont complétés par la date choisie dans un calendrier apparaissant sur clic.
Mais je souhaiterais qu'une date puisse aussi être saisie directement dans le Label suivant le format DD/MM/AAAA.
Autrement dit , soit on entre une date via le clavier , soit on clic sur le Label pour faire le choix date via le calendrier.
Est-ce possible de modifier ce code en conséquence ?
Merci de votre aide.

Private Sub LabelDate1_Click()
fmSTD_Calendrier.SelectDateCTRL1 Me, LabelDate1
End Sub
 

Katoch

XLDnaute Junior
Bonjour Katoch,

De la saisie dans un label, c'est nouveau :rolleyes:
Il faut utiliser un TextBox pour ça ;)

A+
Oups,

Alors remplaçons dans le texte précédent , évidemment , Label par TextBox...
Qu'advient-il alors de ma demande ?

Autrement dit , soit on entre une date via le clavier , soit on clic sur le (Label) TextBox pour faire le choix date via le calendrier.
Est-ce possible de modifier ce code ci-dessous en conséquence ?
Merci de votre aide.

Private Sub LabelDate1_Click()
fmSTD_Calendrier.SelectDateCTRL1 Me, LabelDate1
End Sub
 
C

Compte Supprimé 979

Guest
Re,

Commencez déjà par renommer correctement vos contrôles 🤔
C'est un LabelDate1 ou un TextBoxDate1

Il n'y a rien à changer dans le 2ème cas, après avoir choisi la date avec le calendrier, on peut la modifier

A+
 

patricktoulon

XLDnaute Barbatruc
Bonjour
tout droit sorti de mon tutoriel sur textbox formatés avec mask de saisie (visible ou pas)
un exemple de dateBox
VB:
'**********************************************************************************
' __        ___  ___   .  ___         _____  ___             ___
'|__|  /\    |  |   |  | |     | /      |   |   | |   | |   |   | |\  |
'|    /__\   |  |---   | |     |/\      |   |   | |   | |   |   | | \ |
'|   /    \  |  |   \  | |___  |  \     |   |___| |___| |__ |___| |  \|
'
'***********************************************************************************

'*****************************************************************
'Collection textbox formaté version 2022 simplifiée
' version 6.0
'date version :05/09/2022
'                           << LE DATEBOX >>
'*****************************************************************
Option Explicit

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    DateBoxMasK TextBox1, KeyCode, False ' le mask de saisie sera invisible
End Sub

Private Sub TextBox2_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    DateBoxMasK TextBox2, KeyCode ' le mask de saisie sera visible
End Sub


Private Sub DateBoxMasK(ByVal tbx As Object, ByVal KeyCode As MSForms.ReturnInteger, Optional MaskVisible As Boolean = True)
    Dim V$, K&, Mask$, X&, Pos&, An&
    Mask = "__/__/____"
    With tbx
        V = .Value & Mid(Mask, Len(.Value) + 1)    'on prend la valeur actuelle du textbox
        Pos = .SelStart + 1:

        Select Case KeyCode
        Case 96 To 105, 48 To 57
            If Pos = 3 Or Pos = 6 Then Pos = Pos + 1
            K = KeyCode:
            If K >= 96 Then K = K - 48:
            If Pos > 10 Then KeyCode = 0: Exit Sub
            Mid(V, Pos, 1) = Chr(K)
            If Pos = 2 Or Pos = 5 Then Pos = Pos + 1

            '*******Contrôle de la validité de la date*********
            If Val(V) > 31 Or Val(Mid(V, 1, 1)) > 3 Then V = Mask: Pos = 0
            If Val(Mid(V, 4, 1)) > 1 Or Val(Mid(V, 4, 2)) > 12 Then Mid(V, 4, 2) = Mid(Mask, 4, 2): Pos = 3
            If Mid(V, 7, 4) Like "####" Then An = Mid(V, 7, 4) Else An = "2004"
            If Mid(V, 1, 5) Like "##/##" Then If Not IsDate(Mid(V, 1, 6) & An) Then Mid(V, 4) = Mid(Mask, 4): Pos = 3
            '****fin de Contrôle de la validité de la date*****
        Case 8:
            If Pos = 7 Or Pos = 4 Then Pos = Pos - 1
            If Pos > 1 Then Mid(V, Pos - 1, 1) = Mid(Mask, Pos - 1, 1)
            Pos = Application.Max(0, Pos - 2)
        Case Else: KeyCode = 0    'toutes les autres touches sont automatiquement annulées
        End Select
        KeyCode = 0
        If V = Mask Then V = ""
        If V <> "" And Not MaskVisible Then V = Split(V, Mid(Mask, 1, 1))(0)
        .Value = V
        .SelStart = Application.Min(10, Pos)
    End With


End Sub
 

Eric C

XLDnaute Barbatruc
Bonjour le forum
Bonjour Katoch, Bruno45, Patrick

Pourquoi pas avec un Label (pas courant mais bon, le demandeur est roi... 🤣 =


VB:
Private Sub CommandButton1_Click()
[A1] = CDate(TextBox1.Value)
End Sub

Private Sub CommandButton2_Click()
[A2] = CDate(LabelDate1.Caption)
End Sub
 

Private Sub LabelDate1_Click()
fmSTD_Calendrier.SelectDateCTRL1 Me, LabelDate1
End Sub


Private Sub TextBox1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
 fmSTD_Calendrier.SelectDateCTRL1 Me, TextBox1
End Sub

@+ Eric c
Date.gif
 
Dernière édition:

Katoch

XLDnaute Junior
@BrunoM45 - Re bonjour -Je m'efforce de parler un français correct (et surtout essayer de le comprendre) et ce que j'ai retenu du post#1, c'est la saisie soit en dur ou via un calendrier, non ? :

@+ Eric
Bruno45, Patrick,

Je suis confus....et désolé....car apparemment je n'ai pas su me faire comprendre.
je re formule donc ma demande:

J'ai une USF dans lequel lorsque je clique sur un Label (LabelDate1), un calendrier apparaît , j'y sélectionne une date et celle-ci apparaît bien dans le tableau de données.Donc OK.

Ma demande :
Lorsque je clique sur le Label (LabelDate1 , ce qui sous-entend que j'ai un certain nombre de LabelDatexxx...), je souhaiterais (mais est-ce possible ??) , pouvoir écrire (saisir) une date jj/mm/aaaa dans ce LabeDate1l , via le clavier OU faire apparaître le calendrier pour y sélectionner la date souhaitée.

Faut-il simplement remplacer mes LabelDatexxx par des Textbox ?
ou peut-on modifier le code suivant ??

Private Sub LabelDate1_Click()
fmSTD_Calendrier.SelectDateCTRL1 Me, LabelDate1
End Sub
 

Eric C

XLDnaute Barbatruc
Bonsoir le fil,
Bonsoir Jean-Marcel

@Katoch - 🤔 As tu pris connaissance de mon post (#6) - Je t'ai mis un Gif animé (il faut cliquer sur le carré noir en bas à gauche pour le visionner). Par ailleurs, j'ai placé le code y afférent dans ledit post.
PS : j'ai mis le gif dans le post pour plus de lisibilité ;)
Bonne soirée
@+ Eric c
 

Katoch

XLDnaute Junior
Bonsoir le fil....
Eric,Jean-Marcel,Bruno,Patrick

Je vous joins un fichier pour peut être mieux encore me faire comprendre....

merci de vos précédentes réponses , mais qui ne correspondent pas tout à fait à ma demande.
 

Pièces jointes

  • Katoch Label V1.xlsm
    154.8 KB · Affichages: 2

Katoch

XLDnaute Junior
Bonsoir le fil,
Bonsoir Jean-Marcel

@Katoch - 🤔 As tu pris connaissance de mon post (#6) - Je t'ai mis un Gif animé (il faut cliquer sur le carré noir en bas à gauche pour le visionner). Par ailleurs, j'ai placé le code y afférent dans ledit post.
PS : j'ai mis le gif dans le post pour plus de lisibilité ;)
Bonne soirée
@+ Eric c
Bonsoir le fil....
Eric,Jean-Marcel,Bruno,Patrick

Je vous joins un fichier pour peut être mieux encore me faire comprendre....

merci de vos précédentes réponses , mais qui ne correspondent pas tout à fait à ma demande.
 

Pièces jointes

  • Katoch Label V1.xlsm
    154.8 KB · Affichages: 5

patricktoulon

XLDnaute Barbatruc
re
j'ai pris ton userform j'ai viré absolument tout le code c'est sans dessous dessus dessous ton truc
j'ai viré aussi le calendrier j'ai mis le mien
je n'ai refait que les codes pour les 9 dateboxs(Textbox )
tu a donc au click droit dessus le calendrier V 4.4( tu es le premier utilisateur Lambda a le voir )
et tu a le datebox pour ces même 9 textboxs
en plus tu a le mask de saisie c'est classe nom
vous remarquerz que pour changer les couleurs du calendrier il n'est plus besoin d'aller triffouiller le code
en mode édition les label a droite représentent les couleurs

cette version du calendrier date de décembre 2021 je ne l'ai jamais distribué
il est maintenant modal, non mondal, multicell etc....

ici dans ce contexte c'est une utilisation modal(responsif)

ça c'est un skud ;)
 

Pièces jointes

  • Katoch textbox +calendar4.4 +tatebox v6.0.xlsm
    137.2 KB · Affichages: 11

Discussions similaires

Réponses
21
Affichages
995

Statistiques des forums

Discussions
312 216
Messages
2 086 351
Membres
103 195
dernier inscrit
martel.jg