Déclaration de tableau

Résolu
cs_akdmks Messages postés 14 Date d'inscription jeudi 18 novembre 2004 Statut Membre Dernière intervention 2 mai 2005 - 27 févr. 2005 à 20:44
cs_Warning Messages postés 516 Date d'inscription samedi 3 février 2001 Statut Membre Dernière intervention 24 octobre 2006 - 28 févr. 2005 à 00:45
Voila mon prob,

Dans mon programme, je clik sur un bouton "ouvrir", je load un fichier
que je lis et que je rentre dans un tableau, avec les données de ce
tableau je voudrais faire un calcul mais j'arrive pas a acceder au
tableau, j'ai l'impression que des que la Sub a fini d'etre executée,
le tableau disparait .... Que faire, que faire ??? JE voudrais bien
garder tout le temps le tableau en mémoire ... Au niveau de la
fonction, c ok, moi je voudrais juste bien pigé la délcaratin de ce
tableau pour la suite





Option Explicit



Private Sub Form_Load()

Static data()

End Sub



Public Static Sub Ouvrir_Click()

Dim Ligne_courante As Variant

Dim Ligne_courante2 As Variant

Dim Ligne As String

Dim nFic

Dim s, i, j, nbr_ligne, nbr_colonne

i = 0

j = 0

' Saisie le nom du fichier

On Error Resume Next

CMDialog.ShowOpen

' Annulation

If Err Then Exit Sub



Je lis un fichier et trouve son nombre de ligne et de colonne.



ReDim data(nbr_ligne - 2, nbr_colonne) /je redimension mon tableau dynamik a la bonne taille



je remplis le tableau



End Sub



Public Static Sub Command2_Click()

Dim debut, fin As Integer

Dim result As Boolean

Dim i



debut = CInt(Text1.Text)

fin = CInt(Text2.Text)

Text3.Text = validite(debut,fin), je lance la fonction validité et la ca plante !!!!!

End Sub



Public Function validite (deb as integer, fin as integer) as boolean



For i = debut To fin

If data(i, 2) = "D" Then

count = count + 1

End If

Next



validite = ((count / (fin - debut)) >= 0.75)

Text3.Text = validite



End Function

4 réponses

Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
27 févr. 2005 à 21:02
une variable déclarée en Static dans une Sub n'est visible que pour cette Sub.
si tu veux qu'elle soit visible pour toute la Forme, il faut mettre la déclaration au niveau général donc juste derrière option Explicit.

ps: évite le type Variant qui consomme plus de mémoire et plus de temps de tritement

Option Explicit

<STRIKE>Private Sub Form_Load()
Static data()
End Sub</STRIKE>

Dim data() As String

Daniel
3
cs_akdmks Messages postés 14 Date d'inscription jeudi 18 novembre 2004 Statut Membre Dernière intervention 2 mai 2005
27 févr. 2005 à 21:32
Euh ben j'ai mis comme tu as dis, mais je n'arrive tjs pas aller dans le tableau .. désolé
0
cs_akdmks Messages postés 14 Date d'inscription jeudi 18 novembre 2004 Statut Membre Dernière intervention 2 mai 2005
27 févr. 2005 à 21:37
Option Explicit

Dim data() As String



Private Sub Accueil_Click()

Form2.Hide

Form1.Show

End Sub





Public Static Sub Ouvrir_Click()

Dim Ligne_courante As Variant

Dim Ligne_courante2 As Variant

Dim Ligne As String

Dim nFic

Dim s, i, j, nbr_ligne, nbr_colonne

i = 0

j = 0

' Saisie le nom du fichier

On Error Resume Next

CMDialog.ShowOpen

' Annulation

If Err Then Exit Sub



' Ouvre le fichier

On Error GoTo ErrOuv

nFic = FreeFile

Open CMDialog.FileName For Input As nFic



' Le lit



nbr_ligne = -1 'calcul du nombre de ligne du fichier !!!

Do

Input #nFic, Ligne

Ligne_courante = Ligne

nbr_ligne = nbr_ligne + 1

Loop While (Ligne <> "")



Reset

Open CMDialog.FileName For Input As nFic

Input #nFic, Ligne

Input #nFic, Ligne

Ligne_courante = Split(Ligne, ";")

nbr_colonne = UBound(Ligne_courante)



Reset



ReDim data(nbr_ligne - 2, nbr_colonne)



Open CMDialog.FileName For Input As nFic

On Error GoTo ErrLit

Input #nFic, Ligne

Do While Not EOF(nFic)

Input #nFic, Ligne

Ligne_courante2 = Split(Ligne, ";")

For Each s In Ligne_courante2

data(i, j) = s

j = j + 1

Next

j = 0

i = i + 1

Loop



' Ferme le fichier

Close nFic



Exit Sub



' Erreur à l'ouverture

ErrOuv:

MsgBox "Ne peut ouvrir le fichier " +
CMDialog.FileName + Chr(13) + "Erreur" + Str(Err.Number) + " - " +
Err.Description

Exit Sub



' Erreur à la lecture ou au remplissage

ErrLit:

MsgBox "Erreur à la lecture ou au remplissage" +
Chr(13) + "Erreur" + Str(Err.Number) + " - " + Err.Description

Close nFic

Exit Sub

End Sub



Private Sub Quitter_Click()

Form2.Hide

End

End Sub



Public Static Sub Command2_Click()

Dim debut, fin As Integer

Dim result As Boolean

Dim i

Dim validite



debut = CInt(Text1.Text)

fin = CInt(Text2.Text)



If (validite(debut, fin) = False) Then

Text3.Text = "ok"

End If



End Sub



Public Function validite(d As Integer, f As Integer) As Boolean

Dim count As Integer



For i = d To f

If data(i, 2) = "D" Then

count = count + 1

End If

Next



validite = ((count / (fin - debut)) >= 0.75)

End Function
0
cs_Warning Messages postés 516 Date d'inscription samedi 3 février 2001 Statut Membre Dernière intervention 24 octobre 2006 2
28 févr. 2005 à 00:45
Deja je te conseil d'enlever le on error resume next car ça t'empeche de voir s'il y a une erreur dans ton code qui empeche de remplir le tableau correctement.


Warning
Admin Codes-Sources.com
http://www.decompiler-vb.net/
0
Rejoignez-nous