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...)
Desole a la previsualisation, l'indentation des lignes a disparu
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
Quelle est mon erreur?
[Edit bbil]
discussion initiale de référence.
Partager