Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

TextBox - Format de date

6 réponses
Avatar
David
Bonjour à tous

Dans un UserForm, j'ai un TextBox que je voudrais formater un date.

C'est a dire quand :

je marque 11 cela répond 11/10/2004 (mois et année du moment)
je marque 1108 cela répond 11/08/2004 (année du moment)
je marque 110302 cela répond 11/03/2002

Es possible ?

Merci de votre aide

David

6 réponses

Avatar
papou
Bonjour
Code à adapter avec le nom de ton Texbox et à placer dans l'évènement
AfterUpdate de celui-ci.
(attention aux retours de lignes intempestifs, le code doit comporter en
tout 10 lignes)
Private Sub TextBox1_AfterUpdate()
Select Case Len(TextBox1)
Case Is = 2
TextBox1 = Format(CDate(CLng(TextBox1) & "/" & Month(Date) & "/" &
Year(Date)), "dd/mm/yy")
Case Is = 4
TextBox1 = Format(CDate(CLng(Left(TextBox1, 2)) & "/" & CLng(Right(TextBox1,
2)) & "/" & Year(Date)), "dd/mm/yy")
Case Is = 6
TextBox1 = Format(CDate(CLng(Left(TextBox1, 2)) & "/" & CLng(Mid(TextBox1,
3, 2)) & "/" & CLng(Right(TextBox1, 2))), "dd/mm/yy")
Case Else: TextBox1 = "": End Select
End Sub

Cordialement
Pascal

"David" <(Pas de Spam) a écrit dans le message
de news:
Bonjour à tous

Dans un UserForm, j'ai un TextBox que je voudrais formater un date.

C'est a dire quand :

je marque 11 cela répond 11/10/2004 (mois et année du moment)
je marque 1108 cela répond 11/08/2004 (année du moment)
je marque 110302 cela répond 11/03/2002

Es possible ?

Merci de votre aide

David




Avatar
David
Bonjour et un grand merci pour ce code
Avatar
David
oups, petite remarque

Si l'on se trompe et que ce n'est pas du format numérique cela donne :

"erreur d'exécution 13, Incompatibilité de type"
Que faire pour éviter cela ?

Utilisant un PC portable, je doit mettre en vérouillage numérique avant.
Peut on ajouter dans la macro quelque chose qui le fasse tout seul ?

Encore merci pour tout

David
Avatar
papou
Re
Voici un code (fonction API) permettant d'activer (ActiveNUM) ou de
désactiver (DesactiveNUM) la touche ver num.
(Placer le code dans un module standard)
Cordialement
Pascal
'*************************
'constante touche majuscules
Const VK_CAPITAL = &H14
'verr num
Const VK_NUMLOCK = &H90
'arrêt défil
Const VK_SCROLL = &H91
Private Type KeyboardBytes
kbByte(0 To 255) As Byte
End Type
'Fonction état d'une touche
Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As
Integer
'Fonction lire état des touches clavier
Private Declare Function GetKeyboardState Lib "user32" (kbArray As
KeyboardBytes) As Long
'Fonction définir état des toucvhes clavier
Private Declare Function SetKeyboardState Lib "user32" (kbArray As
KeyboardBytes) As Long
Dim kbArray As KeyboardBytes, KbOld As KeyboardBytes
'Macro de désactivation touje MAJ
Sub DesactiveNUM()
'si la touche Num est active
If GetKeyState(VK_NUMLOCK) = 1 Then
'récupérer l'état actuel des touches clavier (pour utilisation éventuelle)
GetKeyboardState KbOld
'appel de turnooff pour la touche Num
TurnOff VK_NUMLOCK
'si la touche Num n'est pas active on affiche un message d'info
Else: MsgBox "La touche verr num n'est pas active", vbInformation, "verr num
non activée"
End If
End Sub
'Macro d'acitvation de NUM
Sub ActiveNUM()
'si la touche Num n'est pas active
If GetKeyState(VK_NUMLOCK) = 0 Then
'récupérer l'état actuel des touches clavier (pour utilisation éventuelle)
GetKeyboardState KbOld
'appel de turnon pour la touche Num
TurnOn VK_NUMLOCK
'sinon on affiche un message d'info
Else: MsgBox "La touche Num est déjà active", vbInformation, "verr num
activée"
End If
End Sub
'routine de désactivation de touche (prend en paramètre l'id de la touche)
Private Sub TurnOff(vkKey As Long)
'appel de la fonction pour lire l'état actuel des touches
GetKeyboardState kbArray
'définition de la valeur 0 (zéro) pour la désactivation
kbArray.kbByte(vkKey) = 0
'définition de l'état du clavier
SetKeyboardState kbArray
End Sub
'routin d'activation de touche (prend en paramètre l'id de la touche)
Private Sub TurnOn(vkKey As Long)
'appel de la fonction pour lire l'état actuel des touches
GetKeyboardState kbArray
'définition de la valeur 1 (un) pour l'activation
kbArray.kbByte(vkKey) = 1
'définition de l'état du clavier
SetKeyboardState kbArray
End Sub
'***********

"David" <(Pas de Spam) a écrit dans le message
de news:
oups, petite remarque

Si l'on se trompe et que ce n'est pas du format numérique cela donne :

"erreur d'exécution 13, Incompatibilité de type"
Que faire pour éviter cela ?

Utilisant un PC portable, je doit mettre en vérouillage numérique avant.
Peut on ajouter dans la macro quelque chose qui le fasse tout seul ?

Encore merci pour tout

David




Avatar
David
Re merci papou mais.........j'abuse (débutant)

Donc il faut faire lancer cette procédure quand le TextBox a le focus ?
Comment faire ?

Et pour savoir si l'on rentre bien des information numérique dans le textBox
afin d'éviter l'erreur d'exécution 13, Incompatibilité de type" ?
Avatar
David
Erreur de ma part

C'est la touche blocage majuscule que je voulais