Mesdames, messieurs les jurés... ;)
Bon déjà je m'excuse pour mon titre peu explicite...
C'est mon trois ou quatrième post concernant le même projet, mais là, ce sont les bugs finaux :)
1ER PROBLEME
Premièrement, sur mon formulaire j'ai une partie qui permet de saisir des données relatives à des élèves, tous définis par un numéro unique. Sur ce même formulaire, j'ai une autre partie dans laquelle l'utilisateur peut CONSULTER les données liées aux élèves, uniquement en mettant le NUMERO. Tout cela se fait grace au bout de code suivant:
Private Sub TxtNumEleve_Change()
If RemplissageCases = True Then
Open "C:\eleve.txt" For Random As 1 Len = Len(SaveEleve)
i = 0
While Not EOF(1) 'not eof= non fin de fichier
i = i + 1
Get 1, i, SaveEleve
If SaveEleve.numeroeleve = TxtNumEleve.Text Then
TxtNomEleve.Text = SaveEleve.nomeleve
TxtPrenomEleve = SaveEleve.prenomeleve
TxtClasseEleve = SaveEleve.classeeleve
End If
Wend
Close 1
End If
End Sub
Dans lequel TxtNumEleve est la zone de saisie du numéro de l'élève.
Tout fonctionne à merveille, à l'exception du moment où je ne mets
rien dans la zone de saisie. Si je vide complètement ce champ, j'ai une erreur qui apparait: "Type incompatible"... Donc je cherche une solution pour que,
par exemple ( et surtout au pire lol), il me mette la valeur à 0 si jamais l'utilisateur décide de vider cette zone. Au mieux, ça serait de pouvoir mettre la zone vide, et qu'il n'y ai plus de message d'erreur :)
DEUXIEME PROBLEME
Une autre erreur, un peu en rapport avec le bout de code ci-dessus d'ailleurs. Lorsque l'utilisateur veut supprimer un élève, il saisi uniquement le numéro de l'élève et les données correspondant à l'élève s'affichent. Après il n'a plus qu'à cliquer sur OK. Cependant, la suppression entraine une ouverture du fichier Eleve.txt, une suppression des données, puis une fermeture. Le problème c'est que j'ai une erreur qui se créée, m'indiquant que Eleve.txt est déjà ouvert. En effet, il a été ouvert par le code que j'ai écrit ci dessus... que faire? Sachant que mon bout de code correspondant à la suppression est le suivant :
Private Sub BtnOkSuppEleve_Click()
Open "C:\eleve.txt" For Random As 1 Len = Len(SaveEleve)
SaveEleve.numeroeleve = 0
SaveEleve.nomeleve = ""
SaveEleve.prenomeleve = ""
SaveEleve.classeeleve = ""
Put 1, TxtNumEleve, SaveEleve
TxtNumEleve.Text = ""
TxtNomEleve.Text = ""
TxtPrenomEleve.Text = ""
TxtClasseEleve.Text = ""
Close 1
End Sub
TROISIEME PROBLEME
Dans une autre partie de mon programme, l'utilisateur peut saisir des notes, selon le numéro de l'élève. Mais lorsque je valide, j'ai le message d'erreur suivant:
Opération Get ou Put impossible sur une variable référence d'objet ou une variable de type défini par l'utilisateur contenant une référence d'objet (ouf!)
Lorsque je clique sur OK, j'ai la première ligne qui est surlignée en jaune et le mot "saveNote" qui est surligné en bleu.
Je vous donne donc le code correspondant à la saisie d'une note:
Private Sub BtnOkAjoutNote_Click()
If TxtNumEleve.Text = "" Or TxtNomEleve.Text = "" Or TxtNumExam.Text = "" Or TxtNomMatiere.Text = "" Or TxtNomExam.Text = "" Or TxtNomMatiere.Text = "" Or TxtNomExam.Text = "" Or TxtNumSalle.Text = "" Then
MsgBox ("Vous n'avez pas saisi tous les champs"), vbCritical
Exit Sub
End If
Open "C:\note.txt" For Random As 2 Len = Len(SaveNote)
SaveNote.numeroeleve = TxtNumEleve.Text
SaveNote.numeronote = TxtNomNote.Text
SaveNote.numexam = TxtNumExam.Text
SaveNote.nommatiere = TxtNomMatiere.Text
SaveNote.nomexam = TxtNomExam.Text
'SaveNote.dateexam = TxtDateExam.Value
SaveNote.numsalle = TxtNumSalle.Text
Put 2, TxtNumEleve, SaveNote
TxtNumEleve.Text = ""
TxtNomNote.Text = ""
Close 2
End Sub
Et je pense qu'il est utile que je vous livre ma définition du type lié aux notes (qui est dans un module):
Public Type NOTE
numeroeleve As Integer
nomeleve As String * 50
prenomeleve As String * 50
classeeleve As String * 10
numeronote As Integer
numexam As Integer
nommatiere As String * 50
nomexam As String * 50
dateexam As DTPicker
numsalle As String * 50
End Type
Je me demande bien si ça ne vient pas de la date tout ça.... (type dtpicker)
Bon voilà, j'arrête de vous embêter là. Je me suis permis de mettre ces trois questions dans un même topic puisque finalement ils sont tous un peu liés, et ça m'évite de redéfinir mon problème à chaque fois :)
Merci beaucoup pour votre aide qui me fait toujours autant plaisir :)
David