Probleme sur VB

Résolu/Fermé
haddadmarc Messages postés 59 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 1 octobre 2012 - 27 avril 2008 à 18:12
haddadmarc Messages postés 59 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 1 octobre 2012 - 27 avril 2008 à 22:13
Bonjour,
je suis debutant en programmation sur Visual Basic et j'ai des problemes avec quelques boutons comme supprimer et suivant dont voici les codes:

SUPPRIMER

Dim rep As String * 1
rep = InputBox("voulez vous vraiment supprimer o/n")
If UCase(rep) = "n" Then Exit Sub
Else
i = 1
j = 1
Open "D:\VB HADDAD\voitures1.txt" For Random Access Read Write As #166 Len = Len(vt)
Do While i < LOF(165) / Len(et)
Get #165, i, vt
If Trim(vt.mat) <> Trim(mat) Then
Put #166, j, vt
j = j + 1
End If
i = i + 1
Loop
Close
Kill "D:\VB HADDAD\voitures.txt"
Name "D:\VB HADDAD\voitures1.txt" As "D:\VB HADDAD\voitures.txt"
Open "D:\VB HADDAD\voitures.txt" For Random Access Read Write As #165 Len = Len(vt)
Unload Me
Form1.Show
i = 1
Get #165, i, vt
vt.mat = mat
vt.model = model
vt.typ = typ
vt.coul = coul
vt.pr = pr
vt.nbre = nbre
End If

SUIVANT

i = Loc(165)
If i = 1 Then
MsgBox "c'est deja le dernier"
Else
Get #165, i + 1, vt
mat = vt.mat
model = vt.model
typ = vt.typ
coul = vt.coul
pr = vt.pr
nbre = vt.nbre
End If

j'espere que vous pourrez m'aider parce que ca fait maintenat 2 semaines que ces boutons me bloque
merci pour votre aide
A voir également:

4 réponses

bonjour,

Qu'est ce que tu n'arrive pas à faire?

J'ai regardé ton code.
A la place de ImputBox, j'aurais utilisé MsgBox en tant que fonction

ret = MsgBox("voulez vous vraiment supprimer", vbInformation + vbYesNo, "Suppression")
If ret = vbNo Then Exit Sub

A chaque suppression, tu réécrit complètement le fichier, c'est assez lourd.
A ta place, j'aurais réservé une variable Status as Boolean dans le Record vt. A chaque suppression, il suffit de mettre Status = False et mettre à jour l'enregistrement.
A chaque nouvelle création, on récupère une place libre s'il y en a. Un seul fichier suffit, plus de Kill ni de Name.

Mais à part ces différence de méthodes, ton code à l'air de tenir. Alors qu'est ce qui ne marche pas?

A+.
0
haddadmarc Messages postés 59 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 1 octobre 2012 1
27 avril 2008 à 19:35
slt et merci de m'avoir repondu.
le probleme c'est que quand je lance l'application tout marche mais quand je veux supprimer un enregidtrement je click sur supprimer on me met: Erreur de Compilation; Else sans If
je ne comprend pas
et pou le bouton suivant quand je suis sur le premier enregistrement que je click sur suivant on me met le message que contient mon msgbox pourtant ya plusieurs enregistrement.
excusez si je vous fatigue
merci d'avance
0
OK,

La première erreur est là:

If UCase(rep) = "n" Then Exit Sub
Else ' <----Supprime cette ligne
i = 1
j = 1
'
'
'
vt.nbre = nbre
End If ' <----Supprime cette ligne


Ou alors il faut mettre

If UCase(rep) = "n" Then
Exit Sub
Else
'
'
'
vt.nbre = nbre
End If


Pour la seconde erreur i = Loc(165) tedonne la position corante dans le fichier
pour te positionner dans le fichier, il faut donner une valeur à i
pour le suivant:
i=i+1
Get #165, i + 1, vt

Il faut juste verifier que i >0 et i <=LOF(165)/Len(vt)

Pour le suivant:
if i = LOF(165)/Len(vt) then exit sub
i=i+1
End If ' <----Supprime cette ligne


Ou alors il faut mettre

If UCase(rep) = "n" Then
Exit Sub
Else
'
'
'
vt.nbre = nbre
End If


Pour la seconde erreur i = Loc(165) te donne la position courante dans le fichier
pour te positionner dans le fichier, il faut donner une valeur à i
pour le suivant:
i=Loc(165)
if i = LOF(165)/Len(vt) then exit sub
i=i+1
Get #165, i + 1, vt

pour le prédedent
i=Loc(165)
if i=1 then exit sub
i=i-1
Get #165, i + 1, vt

A+.
0
haddadmarc Messages postés 59 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 1 octobre 2012 1
27 avril 2008 à 21:56
merci pour ton aide ca passe
0
Je crois qu'il y a eu un cafouillage dans les copie/colle du précédent post , j'espère que t'a réussi à décoder.

A+.
0
J'espère que tu avais vu que je m'étais trompé là:

i=Loc(165)
if i = LOF(165)/Len(vt) then exit sub
i=i+1
Get #165, i + 1, vt
il faut mettre juste
Get #165, i, vt

pareil pour là
pour le prédedent
i=Loc(165)
if i=1 then exit sub
i=i-1
Get #165, i, vt

bonne continuation
0
haddadmarc Messages postés 59 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 1 octobre 2012 1
27 avril 2008 à 22:13
oui je l'ai corrigé merci encore
0