formateur informatique

Fréquences des numéros au moment de leurs sorties

Accueil  >  Bureautique  >  Excel  >  Excel VBA  >  Fréquences des numéros au moment de leurs sorties
Livres à télécharger


Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :


Inscription Newsletter    Inscription Newsletter
Sujets que vous pourriez aussi aimer :


Calculer les fréquences au moment des tirages

Dans le volet précédent, pour notre application destinée à analyser les numéros du loto, nous avons dressé des statistiques. Elles livrent les fréquences de sorties des numéros en tenant compte de tout l'historique des tirages. Pour tenter de dresser une certaine "logique comportementale", nous proposons ici de calculer la fréquence qu'avait chaque numéro au moment où il a été appelé par un tirage. Et pour que la période soit suffisamment représentative, nous suggérons d'étudier les 48 derniers tirages. Comme trois tirages sont réalisés chaque semaine, nous allons agir sur pratiquement les quatre derniers mois. Et nous le verrons, il existe a priori une certaine logique. Et ce ne sont pas les numéros en déficit de fréquences qui sont forcément appelés, bien au contraire.



Classeur Excel à télécharger
Pour poursuivre le développement, nous devons commencer par récupérer les travaux au dernier indice. Comme lors du volet précédent, le classeur Excel est accompagné d'un fichier texte et d'un sous dossier. Le fichier texte héberge le code VBA à réintégrer au projet. Le sous dossier doit accueillir le fichier téléchargé de l'historique des tirages.
  • Double cliquer sur le fichier du classeur pour l'exécuter dans Excel,
  • Puis, cliquer sur le bouton Activer la modification du bandeau de sécurité,
Nous débouchons sur la première feuille de ce classeur. Elle est nommée tirages. C'est elle qui restitue tous les numéros des tirages passés, après un clic de l'utilisateur sur le bouton Actualiser. Dès lors, un clic sur le bouton Stats dresse les statistiques sur les fréquences de sorties dans la deuxième feuille nommée fréquence.

Statistiques sur les fréquences de sortie des numéros du loto en VBA Excel

Désormais et dans l'enchaînement de ce traitement, nous souhaitons livrer une autre analyse. Deux tableaux sont prévus à cet effet dans la feuille stats_sortie.

Tableau Excel pour calculer les fréquences des numéros du loto en VBA

C'est le premier tableau qui nous intéresse ici dans un premier temps, entre les colonnes C et H. Pour chacun des derniers tirages, nous devons inscrire les boules et le numéro chance sortis, dans une première ligne. Les fréquences respectives qu'ils détenaient au moment où ils ont été appelés doivent être calculées dans chaque ligne du dessous.

Réintégrer le code VBA
Nous l'avons expliqué dans un précédent volet, les antivirus sont sensibles au code VBA que nous avons développé. Ils se trompent pourtant. Mais c'est la raison pour laquelle, nous devons néanmoins le réintégrer dans le projet.
  • A la racine du dossier de décompression, double cliquer sur le fichier texte pour l'ouvrir,
  • Sélectionner tout son contenu (CTRL + A),
  • Puis le copier (CTRL + C),
  • Dès lors, revenir sur le classeur Excel (ALT + Tab),
  • Basculer ensuite dans l'éditeur VBA Excel (ALT + F11),
  • Dans l'explorateur sur la gauche, double cliquer sur l'élément Feuil1 (tirages),
Nous affichons ainsi la feuille de code associée à la première feuille du classeur. Elle apparaît au centre de l'écran et elle est fort naturellement vierge.
  • Dans cette feuille de code, coller (CTRL + V) les lignes précédemment prélevées,
  • En haut de l'éditeur, cliquer sur le menu Outils,
  • Dans les propositions, choisir la rubrique Références,
  • Dans la boîte de dialogue, cocher la case Microsoft Shell Controls And Automation,
  • Puis, valider cette intégration par le bouton Ok,
  • Dès lors, enregistrer le projet (CTRL + S),
Nous l'avons dit dans les développements précédents, cette librairie est essentielle pour notamment exécuter des fonctions qui réalisent des actions empruntées aux commandes du DOS.



La procédure et ses variables
Pour un code parfaitement structuré et articulé, nous proposons de réaliser ce développement dans une nouvelle procédure. Bien sûr, elle devra être appelée par la procédure stats_Click.
  • Après cette procédure stats_Click, créer la procédure freq_sortie comme suit :
Private Sub freq_sortie()
Dim boule As Byte: Dim bouleC As Byte: Dim freq As Integer: Dim freqC As Integer
Dim lig1 As Byte: Dim col1 As Byte
Dim ligD As Integer: Dim col2 As Byte
Dim tabB As Variant: Dim tabC As Variant
Dim compteur As Byte: Dim ligR As Byte: Dim colR As Byte
Dim ligC As Integer: Dim ligCR As Byte

ReDim tabB(1 To 240, 1 To 3)
ReDim tabC(1 To 240, 1 To 3)
compteur = 1: ligR = 4: ligCR = 4: colR = 3

End Sub


Nous déclarons donc une tripotée de variables. Pour les analyses à engager, les traitements sont en effet relativement conséquents. Nous déclarons des variables de boucle ainsi que des variables pour stocker et cumuler les fréquences ou encore pour mémoriser les boules et les numéros chance. Nous exploitons la fonction Redim pour dimensionner les deux tableaux de variables qui doivent mémoriser l'indice, le numéro de boule et sa fréquence. C'est la raison pour laquelle nous les dimensionnons sur trois colonne (1 to 3) mais aussi sur 240 lignes. En effet 48 tirages multipliés par 5 boules correspondent bien à une analyse de 240 sorties. Comme le tableau des numéros chance sera engagé sur la même boucle que celui des boules, nous le dimensionnons de la même façon, quitte à ne pas le remplir complètement. Puis, nous calons les indices de ligne et de colonne sur les premières données du tableau de la feuille tirages.

Fréquences des numéros chance
Maintenant que les tableaux de variables sont dimensionnés, nous allons pouvoir les remplir. Nous allons commencer par le traitement le plus simple, celui des numéros chance. Un seul est en effet choisi par tirage. Pour les parcourir sur les 48 derniers tirages, nous devons engager une boucle For Next.
  • A la suite du code VBA, créer la double boucle suivante :
...
For lig1 = 4 To 51 'Pour 48 tirages car le 4 est inclus
freqC = 0
bouleC = Cells(lig1, 8).Value
ligC = lig1 + 1
Do While Cells(ligC, 3).Value <> ""
If (Cells(ligC, 8).Value = bouleC) Then freqC = freqC + 1
ligC = ligC + 1
Loop

tabC(compteur, 1) = compteur
tabC(compteur, 2) = bouleC
tabC(compteur, 3) = freqC
Sheets("stats_sortie").Cells(ligCR, 8).Value = tabC(compteur, 2)
Sheets("stats_sortie").Cells(ligCR + 1, 8).Value = tabC(compteur, 3)
ligCR = ligCR + 3

compteur = compteur + 1
Next lig1
...


Nous engageons donc une première boucle sur les 48 derniers tirages, de la ligne 4 à la ligne 51. Nous réinitialisons la fréquence de sortie (freqC = 0) pour qu'elle ne se cumule pas avec la précédente. En colonne H (8), nous prélevons le numéro chance dans la variable bouleC. Puis, nous positionnons le curseur sur la ligne suivante (ligC = lig1 + 1). C'est ainsi que nous pourrons engager une boucle Do While sur tous les tirages jusqu'à celui en cours d'analyse, sans l'inclure. C'est avec cette astuce que nous pourrons connaître la fréquence de sortie du numéro chance au moment de son tirage. Nous remplissons alors le tableau de variables des informations avec la fréquence cumulée pour le numéro chance en cours. Puis, nous inscrivons ce numéro et cette fréquence sur la feuille stats_sortie en colonne 8 pour la ligne en cours et la suivante. Et nous n'oublions pas de sauter 3 unités (ligCR = ligCR + 3), pour la prochaine inscription, en raison de la configuration de ce tableau. De même, nous incrémentons la variable compteur pour que les prochaines inscriptions se fassent sur la ligne suivante du tableau de variables.

Nous pouvons déjà tester ce premier traitement à ce stade. Mais pour cela, encore faut-il que la procédure freq_sortie soit appelée par la procédure événementielle stats_Click.
  • A la fin de la procédure stats_Click, ajouter l'appel suivant :
...
Set tabB = Nothing
Set tabC = Nothing

freq_sortie

End Sub
...
  • Enregistrer les modifications (CTRL + S) et revenir sur la première feuille du classeur,
  • Cliquer sur le bouton intitulé Stats,
  • Puis, cliquer sur l'onglet stats_sortie pour afficher sa feuille,
Statistiques sur le numéro Chance du Loto en VBA Excel

Comme vous pouvez le voir, les numéros et leurs fréquences respectives sont effectivement retournés dans les bons emplacements du tableau de réception.



Fréquences de sorties des boules
Nous devons maintenant analyser les fréquences de sorties de chacune des cinq boules pour chacun des 48 derniers tirages. Pour cela, nous devons engager une nouvelle double boucle dans l'actuelle boucle For qui parcourt les lignes. En effet, en plus des lignes, nous devons parcourir les colonnes pour analyser les cinq numéros de chaque tirage.
  • A la suite du code, avant l'incrémentation du compteur, ajouter les instructions VBA suivantes :
...
ligCR = ligCR + 3

For col1 = 3 To 7
boule = Cells(lig1, col1).Value
freq = 0: ligD = lig1 + 1
Do While Cells(ligD, 3).Value <> ""
For col2 = 3 To 7
If (Cells(ligD, col2).Value = boule) Then
freq = freq + 1
End If
Next col2
ligD = ligD + 1
Loop
If (compteur < 241) Then
tabB(compteur, 1) = compteur
tabB(compteur, 2) = boule
tabB(compteur, 3) = freq
Sheets("stats_sortie").Cells(ligR, colR).Value = tabB(compteur, 2)
Sheets("stats_sortie").Cells(ligR + 1, colR).Value = tabB(compteur,3)
End If

compteur = compteur + 1
Next col1

Next lig1
...


Pour chacun des 48 derniers tirages, nous parcourons les colonnes de la 3 à la 7, soit de la C à la G, celles des boules. Nous prélevons le numéro de la boule en cours dans la variable boule. Puis, nous parcourons tous les tirages (Do While Cells(ligD, 3).Value <> "") à partir de la ligne suivante (ligD = lig1 + 1). Pour chacun de ces tirages, nous analysons de nouveau chaque boule (For col2 = 3 To 7). Dès qu'un numéro concorde avec celui qui a été prélevé (If (Cells(ligD, col2).Value= boule) Then), nous incrémentons sa fréquence de sortie (freq = freq + 1). A l'issue, nous remplissons le tableau de variables nommé tabB. Enfin, nous restituons ces données sur les deux lignes correspondantes de la feuille stats_sortie. La variable compteur doit être incrémentée dans cette boucle For.

Sauter trois lignes
A chaque fois que le cinquième numéro est atteint, nous devons sauter trois lignes. C'est ainsi que nous pourrons poursuivre les inscriptions dans ce tableau architecturé d'une façon toute particulière. Pour cela, la question est de savoir si la valeur portée par la variable compteur est un multiple de 5. En effet, elle est incrémentée après chaque boule analysée. C'est bien sûr l'opérateur Mod que nous devons faire intervenir.
  • A la suite du code de la boucle For, ajouter les instructions VBA suivantes :
...
Sheets("stats_sortie").Cells(ligR + 1, colR).Value = tabB(compteur,3)
End If
colR = colR + 1
If compteur Mod 5 = 0 Then
ligR = ligR + 3
colR = 3
End If

compteur = compteur + 1
Next col1
...


Nous incrémentons naturellement la variable colR d'une unité pour pointer sur la colonne suivante, pour chaque nouvelle boule. Mais si la fin de la rangée est atteinte (If compteur Mod 5 = 0 Then), non seulement nous sautons trois lignes (ligR = ligR + 3) mais en plus de cela, nous replaçons le pointeur sur la première colonne (colR= 3) de la nouvelle ligne.

Récolter les fréquences
Le développement de cette nouvelle étape est terminé. Il est temps de tester.
  • Enregistrer les modifications et revenir sur la feuille tirages,
  • Cliquer sur le bouton Stats puis afficher la feuille stats_sortie,
Calculer les fréquences de sorties des numéros du loto en VBA Excel

Comme vous pouvez l'apprécier, sur les 48 derniers tirages, pour chaque numéro appelé, nous obtenons sa fréquence avant sa nouvelle sortie. Le moins que l'on puisse dire est que ces fréquences sont majoritairement élevées. Donc, le concept des numéros les moins tirés semble tomber à l'eau. Dans un prochain volet, nous proposerons une idée pour suggérer des numéros à jouer, sur la base de ces fréquences de sorties recoupées.

 
Sur Facebook
Sur Youtube
Les livres
Contact
Mentions légales



Abonnement à la chaîne Youtube
Partager la formation
Partager sur Facebook
Partager sur Twitter
Partager sur LinkedIn