Erreur de code

Résolu
cs_petchy Messages postés 710 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 19 mai 2015 - 19 avril 2005 à 18:27
cs_petchy Messages postés 710 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 19 mai 2015 - 19 avril 2005 à 22:03
bonsoir
Voila,j'ai une erreur de code sur la ligne en rouge,
auriez vous une idée

Private Sub Form_Load()
Dim intVideo As Integer
intVideos = LOF(1) / Len(NewVideo)
intCompteur = intVideos
intNumTemp = intVideos + 1

Dim intTemp As Integer
For intTemp = 1 To intVideos
Get #1, intTemp, NewVideo
lstfilm.AddItem (NewVideo.Numero & " - " & NewVideo.Titre)
Next intTemp
End Sub

merci
@ plus
petchy

15 réponses

Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
19 avril 2005 à 21:38
bon on avance un peu !
le fichier a dû être fermé quelque part non ?

Private Sub Form_Load()
Dim intVideos As Integer

Dim intTemp As Integer

Dim strPath As String
strPath = App.Path & "\videos.loc"
Open strPath For Random As #1 Len = Len(NewVideo)

intVideos = LOF(#1
) \ Len(NewVideo)
intCompteur = intVideos
intNumTemp = intVideos + 1

For intTemp = 1 To intVideos
Get #1, intTemp, NewVideo
lstfilm.AddItem (NewVideo.Numero & " - " & NewVideo.Titre)
Next intTemp

close #1

End Sub

Daniel
3
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
19 avril 2005 à 18:40
où il est l'OPEN du fichier ?

Daniel
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
19 avril 2005 à 18:51
Salut
Diviser des entiers par des entiers ... ça va donner des résultats bizarres.
Au lieu de dimensionner en 'Integer' qui, comme tu le sais surement (après avoir regardé l'aide de VB6), ne permet que de stocker des chiffres entre -32768 et +32767
De toute façon, la notation Integer disparait avec VB.Net
Remplaces tous tes 'Integer' par 'Long'

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
0
JoePatent Messages postés 171 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 20 juillet 2008
19 avril 2005 à 18:56
Diviser des entiers par des entiers ... ça va donner des résultats bizarres.

C'est nouveau pour moi ca.... j'aimerait plus d'éclaircissement svp. 4/2 donne quoi de bizarre qui serait different avec un long ?

Ton fichier est-il ouvert ? La structure NewVideo est déclarée à quel endroit ?

As-tu essayer ton code sur l'évènement activate au lieu de load et vois-tu une difference.

Juste quelques pistes pour t'aider a trouver le bobo.

http://www.joepatent.comJoe Patent
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_petchy Messages postés 710 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 19 mai 2015 4
19 avril 2005 à 19:03
Rebonsoir
d'abord merci pour vos réponses.
1) Gobillot
il n'y à pas de fichier open,en fait j'ai repris se code d'une
autre appli,est elle fonctionne.
2) jack
j'ai bien remplacé 'Integer' par 'Long' mis cela ne donne rien

3) JoePatent
j'ai placé mon code dans activate mais rien,j'ai une erreur
"variables non définies"
merci
@ plus
petchy
0
econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 24
19 avril 2005 à 19:09
LOF(1) = Longueur d'un fichier dont le numéro d'ouverture est 1

S'il n'y a pas de fichier ouvert, que vaut LOF(1) ?




Len(NewVideo) :



NewVideo est de quel type ? String ?

Quel intérêt ?



Il ne faut pas recopier un code sans en comprendre le sens. Parce que là, visiblement, c'est ce qui s'est passé ...


Manu
-------------------------------------------
Une question bien posée, c'est une chance de réponse bien adaptée.
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
19 avril 2005 à 19:09
c'est quoi le libellé de l'erreur ?
tu pourras pas avoir la longueur du fichier s'il est pas ouvert !
en plus il y a des GET#1 , une longueur d'enregistrement, un calcul du nombre d'enregistrements.
apparemment ce serait un fichier Random.

Open nomfichier For Random As #1

Daniel
0
econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 24
19 avril 2005 à 19:12
En lisant le code, il semble que



NewVideo soit une structure de donnée,avec au moins un champ Nom et un champ Titre ... Mais où est la définition de ce type ?




Get #1, intTemp, NewVideo <=== Un fichier a été ouvert, puisqu'on y fait un Get#1.

Mais où est l'ouverture du fichier ???





En tous cas, l'erreur apparaît parce que le type NewVideo n'est pas défini.






Manu
-------------------------------------------
Une question bien posée, c'est une chance de réponse bien adaptée.
0
cs_petchy Messages postés 710 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 19 mai 2015 4
19 avril 2005 à 19:23
ReRe
désolé Gobillot j'ai mon open dans le Load de la form

Private Sub Form_Load()


Dim strPath As String
strPath = App.Path & "\videos.loc"
Open strPath For Random As #1 Len = Len(NewVideo)
'FlagVideo = True
Dim intVideo As Long
intVideos = LOF(1) / Len(NewVideo)
ajout.Caption = intVideos & " Vidéos enregistrés"
intCompteur = intVideos
intNumTemp = intVideos + 1
lblNumeroR.Caption = "# " & intNumTemp
end sub

et la j'ajoute mes données dans un fichier loc
Private Sub Command1_Click() 'ajouter
intVideos = LOF(1) / Len(NewVideo)
intNum = intVideos + 1
NewVideo.TITRE = txttitre.Text
NewVideo.ACTEUR = txtacteur.Text
NewVideo.GENRE = txtgenre.Text
NewVideo.Numero = intNum





Put #1, intCompteur + 1, NewVideo
msgAjoute = MsgBox("Le film: '" & txttitre.Text & "' à été ajouter à la liste des films!", vbOKOnly + vbInformation, "Le film à été ajouter!")


intVideo = LOF(1) / Len(NewVideo)
ajout.Caption = intVideos & " Vidéos enregistrés"
intCompteur = intVideo


txttitre.Text = ""
txtacteur.Text = ""
txtgenre.Text = ""
lblNumeroR.Caption = "# " & intNum + 1
End Sub
mais en fait je voudrais récupéré le titre dans une listbox
qui se trouve dans une autre form .
petchy
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
19 avril 2005 à 19:48
si je comprend bien il y a plusieurs formes et le fichier a été ouvert par une autre forme ?

est-ce que les variables ont bien été définies partout ?
parce là je vois dans Form_Load:
Dim intVideo As Long
et ensuite dans la Sub Command1_Click() intVideo est utilisé sans être redéfini, un nom identique pour des variables différentes c'est pas bon !
vérifie bien toutes tes variables, et est-ce qu'il y a un module avec des variables Public ?
inutile de recalculer intVideo LOF(1) / Len(NewVideo) à chaque fois, il suffit de faire intVideo intVideo + 1 lorsque tu crées un nouvel enregistrement.

sinon si tu veux utiliser un contrôle d'une autre forme, il faut mettre le nom de la forme devant:
NomdelaForme.listfilm.List(index)

Daniel
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
19 avril 2005 à 19:53
mais on ne sais toujours pas le type d'erreur.
est-ce c'est une division par zéro ? parce que si pas d'Option Explicit et que NewVideo n'est pas défini, Len(Newvideo) retournera zéro.
est-ce que c'est un dépassemant de capacité, plus de 32767 enregistrements ?

Daniel
0
cs_petchy Messages postés 710 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 19 mai 2015 4
19 avril 2005 à 20:50
merci Gobillot de me répondre,en fait il me met comme
erreur sur intVideos :
"erreur de compilation
variable non définie"
pourtant j'ai bien un module avec les variables Public.

en plus je suis novice en VB et je ne sait pas se que ça veut dire une
division par zéro.
Au niveau des enregistrement j'en suis à 15
un grand merci
petchy
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
19 avril 2005 à 20:58
"erreur de compilation variable non définie"

ça c'est plus clair et ça prouve que t'as mis Option explicit.
en fait j'ai fait l'erreur aussi et j'ai confondu les 2 variables "intVideo" et "intVideos" sont 2 variables différentes.
est-ce que c'est voulu ou quoi ?

Dim intVideos As Integer

Daniel
0
cs_petchy Messages postés 710 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 19 mai 2015 4
19 avril 2005 à 21:23
en fait le "s" se met tout seul,quand j'enleve le "s" ça me
met une erreur d'éxécution 52
"nom ou numéro de fichier incorrect"
0
cs_petchy Messages postés 710 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 19 mai 2015 4
19 avril 2005 à 22:03
un grand MERCI Daniel ça fonctionne .
Cette appli je l'ait réalisé en VBA et je voudrais la
reproduire en VB mais dur-dur,il y a une grande différence
de langage.
bonne fin de soirée
@ plus
petchy
0
Rejoignez-nous