IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Soucis avec un module de classe en Vba [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut Soucis avec un module de classe en Vba
    Bonjour à tous,

    J'ai le code ci-dessous d'un module de Classe qui me permet de mettre des TextBox au format horaire (00:00). Si on tape autre chose que du numérique un message d'erreur s'affiche.
    Mais dès que je tape un chiffre à partir du clavier numérique, le message apparaît.
    Je ne vois pas où se situe l'erreur.
    Pouvez-vous m'aider s'il vous plait ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    Option Explicit
    Public WithEvents txt As MSForms.TextBox, c As Control
     
    Private Sub txt_Change()
    For Each c In UFsais.Controls
    If TypeOf c Is MSForms.TextBox Then
    If Val(c) > 24 Then MsgBox "Erreur de saisie": c = "": Exit Sub
    If c.TextLength = 2 Then: c = c & ":"
    End If: Next c
    End Sub
     
    Private Sub txt_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If InStr("0123456789", Chr(KeyAscii)) = 0 Then KeyAscii = 0
    End Sub
    Ps : Précision importante, lors de la première ouverture de l'User ça marche, mais dès la deuxième saisie, le message d'erreur apparaît si je veux saisir une heure

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    242
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 242
    Par défaut
    Bonjour,

    Pourquoi dans la proc txt_Change() balaies-tu tous les contrôles du userform et appliques-tu tes vérifications sur tous les TextBox et pas seulement sur txt ?

    Essaie plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub txt_Change()
        If Val(txt) > 24 Then MsgBox "Erreur de saisie": txt = "": Exit Sub
        If txt.TextLength = 2 Then: txt = txt & ":"
    End Sub
    ça devrait suffire.

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    682
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 682
    Par défaut
    Salut,

    Tu devrais faire des tests sur l'ensemble de tes variables, une par une, avec des MsgBox par exemple histoire de voir ce que ça donne. Peut--être qu'il manque une initialisation de variable.

    Regarde aussi du côté de ton traitement du ASCII.

    N'étant pas très à l'aise sur le sujet, je contournerais le problème.

    J'avais tiré ça d'un tuto pour une TextBox, ça sera pas trop dur à adapter je pense :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If Not IsNumeric(Right(TextBox2, 1)) And TextBox2.Value <> "" Then
        MsgBox "Le caractere saisi n'est pas valide : Merci de saisir uniquement des chiffres ! !"
        TextBox2 = Left(TextBox2, Len(TextBox2) - 1)
    End If
    A chaque fois que tu saisis autre chose qu'un chiffre, le message apparaît et ça revient automatiquement d'un caractère en arrière. Tu peux rajouter tes ":" comme tu veux dedans.

  4. #4
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Bonjour Zenpbb et DeaD78,

    Merci pour vos suggestions. J'ai retenue celle de Zenpbb qui fonctionne bien. DeaD78 je n'ai pas testé la tienne mais je la retiens on ne sais jamais.
    Merci encore à vous deux
    Cordialement

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Module de Classe, simulation VBA d'un groupe de contrôle
    Par mortalino dans le forum Contribuez
    Réponses: 1
    Dernier message: 09/04/2014, 19h49
  2. soucis avec le module SSH2
    Par baloo81 dans le forum Modules
    Réponses: 2
    Dernier message: 07/09/2011, 17h45
  3. [Toutes versions] Problème avec un module de classe
    Par LeForestier dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 10/07/2009, 11h19
  4. soucis avec le module GD::Simple
    Par shiro_ dans le forum Modules
    Réponses: 5
    Dernier message: 21/01/2009, 16h37
  5. Soucis avec mon menu horizontal : class et id
    Par ero-sennin dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 08/08/2008, 15h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo