Contrôle de saisie sur un renvoi d'erreur [Résolu]

Messages postés
22
Date d'inscription
mardi 17 août 2010
Statut
Membre
Dernière intervention
4 juin 2016
- - Dernière réponse : lmlmike
Messages postés
22
Date d'inscription
mardi 17 août 2010
Statut
Membre
Dernière intervention
4 juin 2016
- 17 sept. 2010 à 17:32
Hello :)

Je cherche en VBA a gérer la saisie pour une textbox.

La personne doit rentrer une valeur au format hh:mm pour le formater sur cdate() et le déduire d'une cellule au même format.

Vous avez une idée de comment s'y prendre ?

Merci :)
Afficher la suite 

2 réponses

Meilleure réponse
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
61
3
Merci
Salut
En VBA pur, il n'y a pas de composant permettant de controler la saisie.
Mais tu peux très bien le faire avant de valider : En testant :
- la longueur du champ (4 ou 5 carctères seulement) --> Len
- la présence d'un : en position 2 ou 3 uniquement --> Instr
- que les chiffres à gauche du : sont compris entre 0 et 23 --> Mid, Val
- que les chiffres à droite du : sont compris entre 1 et 59 --> Mid, Val

Si, sur ta machine, tu as un fichier nommé %Windows%/System32/msmask32.ocx, tu peux le faire apparaitre dans ta barre d'outil VBA sous le nom "Microsoft Masked Edit Control version 6.0 (SP6)"
Lui te permettra de contrôler le format pendant la saisie.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 195 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Jack
Messages postés
22
Date d'inscription
mardi 17 août 2010
Statut
Membre
Dernière intervention
4 juin 2016
0
Merci
J'ai déjà controlé la saisie via keypress :

Public Sub Text1_keypress(ByVal Keyascii As MSForms.ReturnInteger)
   
    If InStr("1234567890.", Chr(Keyascii)) = 0 _
    Or InStr(text1.Value, ".") <> 0 And Chr(Keyascii) = "." Then
       Keyascii = 0: Beep
    End If

End Sub


Pour n'avoir que des chiffres et éviter le plantage. Maintenant avec tes conseils je suis capable de contrôler le temps ;)

Merci beaucoup !
Commenter la réponse de lmlmike