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

VB 6 et antérieur Discussion :

créer un module de classe pour gérer un textbox


Sujet :

VB 6 et antérieur

  1. #1
    Candidat au Club
    Homme Profil pro
    Universitaire retraité
    Inscrit en
    Juin 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Universitaire retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2010
    Messages : 4
    Points : 2
    Points
    2
    Par défaut créer un module de classe pour gérer un textbox
    Bonjour,
    Je pense que c'est la première fois que j'interviens sur ce forum et je tiens donc a saluer tout le monde depuis la Thaïlande ou je vis depuis plus de six ans. Je suis en train de développer un projet complet de gestion d'école dont je suis le principal et ayant vb6 comme client et Access comme base de données.
    Un des modules est destine a permettre aux profs de rentrer leurs cotes a chaque examen.
    J'avais déjà réalisé une application autour d'excel mais le manque de discipline des utilisateurs plus le manque de fiabilité de VBA dans Excel 2007 m'a fait basculer vers cette solution-ci.



    La raison de mon post: une de mes feuilles comporte un controle msflexgrid que je fais survoler par un controle textbox pour encoder les donnees.
    Avec un TextBox "normal" tout fonctionne parfaitement.



    J'ai ecris un module de classe qui gere ce textbox en acceptant les valeurs 0 a 9 et le point (.) et qui limite le nombre de decimales a deux.
    J'ai voulu ecrire cette classe car il y a d'autres TextBox qui devraient repondre aux memes criteres
    J'essaye d'utiliser cette classe dans mon projet et j'obtiens le message d'erreur suivant
    "Erreur de compilation
    Le membre existe deja dans un module d'objets duquel le module d'objet est derive"

    J'ai cree une instance de ce controle en faisant
    Public txtNavigate As New NumTextBox
    et dans form load:
    Set txtNavigate.TextBox = txtNavigate

    voici le module de classe (je ne sais pas s'il y a des balises a ajouter lorsque l'on poste du code...)
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    Option Explicit
    Public WithEvents TextBox As TextBox
     
    Private Sub TextBox_KeyDown(KeyCode As Integer, Shift As Integer)
    Dim strMarks As String
    Dim strDecimal As String
        strMarks = CStr(TextBox.Text)
        If InStr(strMarks, ".") Then
            strDecimal = Split$(strMarks, ".")(1)
            If Len(strDecimal) > 2 Then
                strDecimal = Left$(strDecimal, 2)
                strMarks = Split$(strMarks, ".")(0) & "." & strDecimal
            End If
        End If
        TextBox.Text = strMarks
    End Sub
     
    Private Sub TextBox_KeyPress(KeyAscii As Integer)
    Select Case KeyAscii
        Case 48 To 57, 46  '0 to 9 and . are accepted
            KeyAscii = KeyAscii
        Case Else             'Discard anything else
            KeyAscii = 0
    End Select
    End Sub
    Desole a la previsualisation, l'indentation des lignes a disparu

    Quelle est mon erreur?


    [Edit bbil]
    discussion initiale de référence.

  2. #2
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 415
    Points : 5 805
    Points
    5 805
    Par défaut
    L'erreur est que le type attendu est incorrect.
    Remplace les occurrences de Split$ par Split et le tout compile sans problème.
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  3. #3
    Candidat au Club
    Homme Profil pro
    Universitaire retraité
    Inscrit en
    Juin 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Universitaire retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2010
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par l_autodidacte Voir le message
    L'erreur est que le type attendu est incorrect.
    Remplace les occurrences de Split$ par Split et le tout compile sans problème.
    Oui,merci, mais ce n'est pas le probleme qui m'amene qui est de faire un module de classe pour un controle textbox cfr le message d'erreur dont je parle dans mon premier post. Je pourrais repeter le code ci-dessus pour tout mes controles, mais independament de faire tourner une application qui m'aide dans mon boulot de tous les jours, je cherche surtout a tester un max de techniques.
    Pour rappel, voici le corps du delit:
    MESSAGE d'ERREUR
    "Erreur de compilation
    Le membre existe deja dans un module d'objets duquel le module d'objet est derive"

    J'ai cree une instance de ce controle en faisant
    Public txtNavigate As New NumTextBox
    et dans form load:
    Set txtNavigate.TextBox = txtNavigate
    en fait je n'ai jamais fait de module de classe et je voudrais bien passer le cap
    Faire un controle OCX serait l'autre solution a laquelle je pense
    Merci
    Images attachées Images attachées  

  4. #4
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 165
    Points
    17 165
    Par défaut
    As tu tenté de rechercher txtNavigate dans l'ensemble du projet, des fois qu'il soit déclaré, initié ailleurs ?
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  5. #5
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 415
    Points : 5 805
    Points
    5 805
    Par défaut
    Public WithEvents TextBox As TextBox
    Il est préférable, même un peu obligatoire, d'éviter les noms de variables identiques aux mots réservés ou des objets du langage. Une telle situation peut parfois conduire à des erreurs.
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

Discussions similaires

  1. [AC-2013] Module de classe pour gérer événements des contrôles d'un Formulaire
    Par kmaillet dans le forum VBA Access
    Réponses: 8
    Dernier message: 31/08/2023, 09h26
  2. Créer une classe pour gérer recette de cuisine
    Par filoulebauju dans le forum C++
    Réponses: 4
    Dernier message: 03/12/2013, 12h43
  3. Utilisation de classes pour gérer une table
    Par mathias dans le forum Access
    Réponses: 11
    Dernier message: 30/08/2006, 16h57
  4. Réponses: 1
    Dernier message: 20/08/2006, 13h36
  5. [DOM XML] Classe pour gérer du xml
    Par __fabrice dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 29/05/2006, 14h34

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