Classement des boules de lotto pour statisque _ problème lors de l'affichage ?

Résolu
luca62 Messages postés 56 Date d'inscription dimanche 26 décembre 2004 Statut Membre Dernière intervention 4 août 2005 - 26 juil. 2005 à 00:12
luca62 Messages postés 56 Date d'inscription dimanche 26 décembre 2004 Statut Membre Dernière intervention 4 août 2005 - 26 juil. 2005 à 22:17
Voilà, j'ai une base de données contenant des numéros de lotto, et j'aimerai savoir combien de fois chaque boule est sortie...
Voici le code que j'ai écris, le problème est que lors de l'affichage, j'ai des zéro partout du au RAZ, mais aucun classement.

Voici le code :

stFichier = (App.Path & "\Lotto.dat")

Open stFichier For Input As #1

num_fiche_stat = 0

Do While Not EOF(1)
num_fiche_stat = num_fiche_stat + 1
Line Input #1, tabl1(num_fiche_stat, 6) => de 6 à 12 = 7 boules (6 boules + 1 compl) ==> 1 combinaison
Line Input #1, tabl1(num_fiche_stat, 7)
Line Input #1, tabl1(num_fiche_stat, 8)
Line Input #1, tabl1(num_fiche_stat, 9)
Line Input #1, tabl1(num_fiche_stat, 10)
Line Input #1, tabl1(num_fiche_stat, 11)
Line Input #1, tabl1(num_fiche_stat, 12)
Loop
Close #1



tot_fiches_stat = num_fiche_stat
num_fiche_stat = 1


' RAZ des labels
For i = 0 To 41 D'ou 42 boules
lblBoules(i).Caption = "0" RAZ des lblBoules
Next i



For i = num_fiche_stat To tot_fiches_stat De la première fiche à la dernière For j 6 To j 12 Chaque combinaison de boule => 7 boules (6+1compl)
K(j) = tabl1(i, j) - 1 -1 car les lblBoules commence à zéro (index) lblBoules(K(j)).Caption lblBoules(K(j)).Caption + 1 +1 comptabilisation des boules
Next j
Next i

Donc voilà, je ne sais pas où j'ai fais une erreur. Donc il m'affiche des zéros dans toutes les lblboules(i).

Merci d'avance pour votre aide.

Luca62

16 réponses

Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
26 juil. 2005 à 12:52
le type Variant est à éviter, tu n'as pas les erreurs tout de suite mais tu les as plus tard



tu fait un Dim au niveau général sans taille définie ou en public dans
un module pour pouvoir l'utiliser dans des Formes différentes.

Dim (ou Public) Tabl1() As Integer



ensuite dans la Form-Load de départ tu donnes la taille du tableau puisque tu la connais et quelle est fixe:



Redim Tabl1(72, 12)




Daniel
3
Zlub Messages postés 809 Date d'inscription mercredi 11 octobre 2000 Statut Membre Dernière intervention 29 septembre 2010 9
26 juil. 2005 à 00:40
Salut,

ça serait pas un probleme de Refresh ?

T'as tracé avec debug.print les valeurs des captions ?



ou alors t'as une faille dans ton tableau ... à priori non, vu que t'as le fichier pour vérifier ..

++

Zlub
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 18
26 juil. 2005 à 08:05
Salut, et si tu essayais
For j = 6 To 12
plutôt queFor j 6 To j 12

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
0
cs_drahcir Messages postés 745 Date d'inscription mardi 30 novembre 2004 Statut Membre Dernière intervention 15 septembre 2009 4
26 juil. 2005 à 09:10
Salut,

essaye ce que dis CaniLupus, car si tu mets 2 fois "j=" dans ta boucle, ton prog la parcours 2 fois, puis il sort...

@+
0

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

Posez votre question
luca62 Messages postés 56 Date d'inscription dimanche 26 décembre 2004 Statut Membre Dernière intervention 4 août 2005
26 juil. 2005 à 10:47
C'est plutôt bizarre, quand je retire le J, j'ai ce message d'erreur : "subscript out of range".

Cependant, j'ai modifié, un peut le code :

For i = num_fiche_stat To tot_fiches_stat
For j = 6 To 12
K(i, j) = tabl1(i, j) - 1
lblBoules(K(i, j)).Caption = lblBoules(K(i, j)).Caption + 1 Car le k(i,j), y a une valeur pour chaque i et charque k
'lblBoules(tabl1(i, j) - 1).Caption = lblBoules(tabl1(i, j) - 1).Caption + 1
Next j
Next i

Et par hasard, comment vous auriez déclaré le k(i,j) ?? Autrement je comprend pas ?? Par contre j'ai pas compris le truc de refresh, car je suis dans la form load, et donc il devrait de tout façon indiquer quelque chose non ?

Merci d'avance....

Luca62.
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
26 juil. 2005 à 11:04
si tu veux des intermédiaires il faut prendre des variables simples

d'autre pat dans la boucle For j 6 To j 12 comme j=6 il est jamais égal à 12

donc j = 12 est False donc zéro donc la boucle ne se fait pas.



Dim k1 As Integer

Dim k2 As Integer



For i = num_fiche_stat To tot_fiches_stat
For j = 6 To 12

k1 = tabl1(i, j) - 1

k2 = lblBoules(k1).Caption


lblBoules(k1)).Caption = k2 + 1

Next j
Next i

Daniel
0
luca62 Messages postés 56 Date d'inscription dimanche 26 décembre 2004 Statut Membre Dernière intervention 4 août 2005
26 juil. 2005 à 11:27
Ca semble un peu plus logique comme ça mais j'ai un type mismatch pour la ligne k1 = tabl1(i, j) - 1 ?

C'est bien quand il sais pas lire toute les données ça ?

Par hasard, y aurait-il pas quelqu'un qui pourrais me donner un lien sur ce que veux dire exactement tout les messages d'erreurs ?

Merci.

Luca62.
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
26 juil. 2005 à 11:38
et en quoi est défini tabl1() ?



Erreur n°13 : Type incompatible

si tu as les messages en anglais, installe VB6FR.dll ils seront en français mais seulement en compilé




Daniel
0
luca62 Messages postés 56 Date d'inscription dimanche 26 décembre 2004 Statut Membre Dernière intervention 4 août 2005
26 juil. 2005 à 12:06
Je ne l'ai pas défini, c'est un tableau, pour les autres frm, ça fonctionne. Lors de l'ouverture du fichier, je range les différentes valeurs dans tabl1()

Do While Not EOF(1)
num_fiche_stat = num_fiche_stat + 1
Line Input #1, tabl1(num_fiche_stat, 6) => de 6 à 12 = 7 boules (6 boules + 1 compl) ==> 1 combinaison
Line Input #1, tabl1(num_fiche_stat, 7)
Line Input #1, tabl1(num_fiche_stat, 8)
Line Input #1, tabl1(num_fiche_stat, 9)
Line Input #1, tabl1(num_fiche_stat, 10)
Line Input #1, tabl1(num_fiche_stat, 11)
Line Input #1, tabl1(num_fiche_stat, 12)
Loop
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
26 juil. 2005 à 12:18
vaut mieux définir tes variables,

parce que tabl1() à été pris en Variant contenant un tableau de string (type=8204)

ce qui peut géner pour faire des calculs et entraîne cette erreur type mismatch



' ce sont des exemples

Dim tabl1() As Integer

Redim tabl1(1 to 72, 6 to 12)

Redim Preserve tabl1(num_fiche_stat , 12)

etc ...




Daniel
0
luca62 Messages postés 56 Date d'inscription dimanche 26 décembre 2004 Statut Membre Dernière intervention 4 août 2005
26 juil. 2005 à 12:43
J'ai essayer pas mal de ces définitions dont :

dim tabl1() as integer
dim tabl1() as string
Les autres il ne les accepte pas ?

Et ensuite, j'ai des erreurs soit subcript out of range ou type mismatch et dans la procédure d'ouverture : Do While Not EOF(1)
num_fiche_stat = num_fiche_stat + 1
Line Input #1, tabl1(num_fiche_stat, 6)

Et quand je ne le déclare pas, j'ai pas d'erreur dedans .... Et pourquoi le faite qu'il soit variant engendre des erreurs ?
0
luca62 Messages postés 56 Date d'inscription dimanche 26 décembre 2004 Statut Membre Dernière intervention 4 août 2005
26 juil. 2005 à 13:11
Je me demandais si le problème venais pas du fait que je n'ouvrais pas tout le fichier j'ai selement ouvrer du 6 à 12 :

Line Input #1, tabl1(num_fiche_stat, 6)
Line Input #1, tabl1(num_fiche_stat, 7)
Line Input #1, tabl1(num_fiche_stat, 8)
Line Input #1, tabl1(num_fiche_stat, 9)
Line Input #1, tabl1(num_fiche_stat, 10)
Line Input #1, tabl1(num_fiche_stat, 11)
Line Input #1, tabl1(num_fiche_stat, 12)

Et que je n'ouvre pas ceux de 1 à 5 ??

Alors, je m'étais bien trompé, j'avais bien déclarer tabl1 comme ça dans un module : public tabl1 (5000,12)

alors, j'ai refais comme tu m'as montré, donc, public tabl1() as integer dans le module et dans la forme en question, ReDim Tabl1(5000, 12)

Mais il me met le message d'erreur suivant : invalid outside procedure en me selectionnant le ReDim Tabl1(5000, 12) ??

J'ai aussi réouvert tout le fichier : stFichier = (App.Path & "\Lotto.dat")

Open stFichier For Input As #1

Merci d'avance pour ton aide...

Luca62.
0
luca62 Messages postés 56 Date d'inscription dimanche 26 décembre 2004 Statut Membre Dernière intervention 4 août 2005
26 juil. 2005 à 13:24
Ha ok, j'y suis arrivé !! Tu avais bien entendu raison, c'est bien un problème de déclaration je suppose....

Donc, j'ai déclaré dans le module : Public Tabl1() et dans la forme : Dim Tabl1(5000, 13)

Car j'en avais oublié un (pas 12, 13) .... puis j'ai ouvert le fichier en totalité donc de 1 à 13 ....

Voilà, j'avance petit à petit dans ce petit programme .... enfin, c'est de l'amusement et on aprend aussi petit à petit....

Voilà, un tout grand merci à toi Gobillot !!


Luca62.
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
26 juil. 2005 à 13:28
n'oublie pas de mettre un Type;



'dans le module

Public Tabl1() As Integer ' ou Long, etc ...



'et ensuite un Redim au lieu d'un Dim



'dans la Forme

Redim Tabl1 (5000,13)


Daniel
0
luca62 Messages postés 56 Date d'inscription dimanche 26 décembre 2004 Statut Membre Dernière intervention 4 août 2005
26 juil. 2005 à 21:29
Voilà, quand je met le re, j'ai le message d'erreur suivant à l'ouverture de la feuille : invalid outside procedure

J'ai eu également un petit problème en fesant quelque modications cette après midi. Pour toujours le même code :

For i = num_fiche_stat To tot_fiches_stat
For j = 6 To 12
k1 = Tabl1(i, j) - 1
k2 = lblBoules(k1).Caption pour cette phrase j'ai le message d'erreur suivant : control array element '66' does not exist ???
lblBoules(k1).Caption = k2 + 1
Next j
Next i

Merci d'avance.

Luca62
0
luca62 Messages postés 56 Date d'inscription dimanche 26 décembre 2004 Statut Membre Dernière intervention 4 août 2005
26 juil. 2005 à 22:17
J'ai résolut le problème en rouge au dessus (bête bête ....)

Mais j'ai toujours celui du Re du Redim ? avec le message d'erreur suivant : invalid outside procedure ???

Voilà, je ne sais pas d'ou ça peux venir ? est ce que ça ne veux pas dire qu'il ne sais pas passer aux différentes formes ??

Merci. Luca62.
0