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.