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

Résolu
Signaler
Messages postés
56
Date d'inscription
dimanche 26 décembre 2004
Statut
Membre
Dernière intervention
4 août 2005
-
Messages postés
56
Date d'inscription
dimanche 26 décembre 2004
Statut
Membre
Dernière intervention
4 août 2005
-
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

Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
31
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 109 internautes nous ont dit merci ce mois-ci

Messages postés
809
Date d'inscription
mercredi 11 octobre 2000
Statut
Membre
Dernière intervention
29 septembre 2010
9
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
Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Modérateur
Dernière intervention
13 mars 2006
18
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 !?
Messages postés
745
Date d'inscription
mardi 30 novembre 2004
Statut
Membre
Dernière intervention
15 septembre 2009
4
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...

@+
Messages postés
56
Date d'inscription
dimanche 26 décembre 2004
Statut
Membre
Dernière intervention
4 août 2005

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.
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
31
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
Messages postés
56
Date d'inscription
dimanche 26 décembre 2004
Statut
Membre
Dernière intervention
4 août 2005

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.
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
31
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
Messages postés
56
Date d'inscription
dimanche 26 décembre 2004
Statut
Membre
Dernière intervention
4 août 2005

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
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
31
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
Messages postés
56
Date d'inscription
dimanche 26 décembre 2004
Statut
Membre
Dernière intervention
4 août 2005

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 ?
Messages postés
56
Date d'inscription
dimanche 26 décembre 2004
Statut
Membre
Dernière intervention
4 août 2005

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.
Messages postés
56
Date d'inscription
dimanche 26 décembre 2004
Statut
Membre
Dernière intervention
4 août 2005

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.
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
31
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
Messages postés
56
Date d'inscription
dimanche 26 décembre 2004
Statut
Membre
Dernière intervention
4 août 2005

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
Messages postés
56
Date d'inscription
dimanche 26 décembre 2004
Statut
Membre
Dernière intervention
4 août 2005

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.