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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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)direction-ternoise@wanadoo.fr> a écrit dans le message
de news: uud80VmuEHA.2096@tk2msftngp13.phx.gbl...
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
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
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
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
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)direction-ternoise@wanadoo.fr> a écrit dans le message
de news: es6T3QnuEHA.3840@tk2msftngp13.phx.gbl...
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 ?
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
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" ?
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" ?