Probleme sur VB

Résolu
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
Configuration: Windows XP
Internet Explorer 7.0

4 réponses

  1. 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+.
    1. 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
  2. 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+.
    1. merci pour ton aide ca passe
  3. 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+.
    1. 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
      1. oui je l'ai corrigé merci encore