formateur informatique

Fréquences de sortie des numéros du loto avec Excel

Accueil  >  Bureautique  >  Excel  >  Excel VBA  >  Fréquences de sortie des numéros du loto avec Excel
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 :


Fréquences des numéros du loto

Nous progressons dans le développement de notre application destinée à analyser les numéros des tirages du loto. Grâce aux travaux du volet précédent, nous avons réussi à importer les numéros de tous les tirages passés, sur la feuille Excel. Dans cette nouvelle étape, nous proposons de les analyser tous, pour livrer leurs fréquences de sorties respectives. En fonction des variations entre les uns et les autres, nous pourrons déjà commencer à comprendre s'il existe une certaine logique.



Classeur Excel à télécharger
Pour poursuivre le développement, nous devons commencer par récupérer les travaux au dernier indice. Comme nous en avons l'habitude désormais, la décompression livre le classeur Excel accompagné d'un fichier texte, pour le code VBA à réintégrer, mais aussi d'un sous dossier nommé tirages, pour accueillir le fichier du loto à télécharger et à décompresser.
  • Double cliquer sur le fichier du classeur pour l'ouvrir dans Excel,
  • Puis, cliquer sur le bouton Activer la modification du bandeau de sécurité,
Grille des tirages du loto su feuille Excel

Nous débouchons sur la première feuille de ce classeur. Tous les numéros des tirages passés apparaissent dans une grille, entre les colonnes B et H. Une mise en forme conditionnelle prédéfinie aide à repérer, dans des couleurs différentes, les fréquences de sorties des numéros du dernier tirage dans l'ensemble des données récoltées.



Réintégrer le code VBA
Avant de poursuivre le développement, nous devons actualiser ces tirages au dernier indice pour livrer des statistiques pertinentes. Pour cela, il est question de réintégrer le code VBA dans le projet pour procéder au téléchargement du fichier distant, à sa décompression et à l'importation des données du fichier Csv résultant.
  • A la racine du dossier de décompression, double cliquer sur le fichier texte pour l'ouvrir,
  • Réaliser le raccourci clavier CTRL + A pour tout sélectionner,
  • Puis, réaliser le raccourci clavier CTRL + C pour copier tout le code VBA,
  • Revenir sur le classeur Excel et réaliser le raccourci ALT + F11 pour basculer dans l'éditeur VBA,
  • Dans l'explorateur sur la gauche, double cliquer sur l'élément Feuil1 (tirages),
Ainsi, nous affichons la feuille de code qui lui est associée au centre de l'écran.
  • Dès lors, réaliser le raccourci CTRL + V pour importer le code des précédents travaux,
Ce code nécessite une librairie bien précise pour exécuter des méthodes particulières, issues des lignes de commande de l'ancestral système d'exploitation DOS. Cette librairie a disparu des références du fait que nous ayons enlevé les lignes de programmation, pour les besoins du téléchargement. Nous devons réintégrer cette référence.
  • En haut de l'éditeur, cliquer sur le menu Outils,
  • Dans les propositions, cliquer sur la rubrique Références,
  • Dans la boîte de dialogue, cocher la case Microsoft Shell Controls And Automation,
Si elle est déjà cochée, vous n'avez rien à faire.
  • Cliquer sur le bouton Ok pour valider cette intégration,
Désormais, si vous cliquez sur le bouton Actualiser de la première feuille, une erreur peut survenir. Nous le savons désormais, la première requête http peut ne pas aboutir. Nous veillerons à intercepter et à gérer cette anomalie à l'avenir. Mais si vous cliquez une seconde fois, après avoir arrêté l'exécution du projet, plus aucune erreur ne jaillit. Et si vous consultez le sous-dossier tirages, le fichier téléchargé et sa décompression sont bien présents. Grâce à eux, les numéros des tirages du loto ont été mis à jour sur la feuille Excel grâce à la procédure nommée importer. Nous allons donc pouvoir les analyser pour en ressortir les fréquences respectives dans un premier temps.



Les grilles des fréquences
Nous l'avons avancé, l'objectif de ce volet est de dégager quelques statistiques. Et pour cela, une seconde feuille est prévue.
  • Revenir sur la feuille Excel (ALT + Tab),
  • En bas de la fenêtre, cliquer sur l'onglet frequences pour activer sa feuille,
Feuille Excel pour calculer les fréquences de sorties des numéros du loto

Comme vous pouvez le voir, cette feuille héberge deux tableaux de deux colonnes. Le premier doit accueillir tous les numéros des boules tirées avec leurs fréquences à calculer à partir de l'historique dont nous disposons. Le second doit livrer tous les numéros chance avec les fréquences qui les ont vu apparaître au fil des tirages. Tous ces numéros, devront être triés dans l'ordre croissant, sur les deux tableaux, en fonction des fréquences de sorties. Nous saurons ainsi quels sont ceux qui sont le moins souvent sortis et si les écarts sont importants.

La procédure VBA des statistiques
Pour commencer, nous devons créer la procédure VBA qui se déclenchera au clic sur le second bouton de la première feuille.
  • En bas de la fenêtre Excel, cliquer sur l'onglet tirages pour revenir sur la première feuille,
  • En haut de la fenêtre Excel, cliquer sur l'onglet Développeur pour activer son ruban,
  • Dans la section Contrôles du ruban, cliquer sur le bouton Mode Création,
Ainsi, nous accédons au mode conception des objets présents sur cette feuille.
  • De fait, double cliquer sur le bouton intitulé Stats,
De cette manière, nous basculons dans l'éditeur VBA Excel, entre les bornes de la procédure événementielle stats_Click. Son code VBA se déclenchera au clic de l'utilisateur sur ce bouton. Et c'est ce code qui doit livrer les statistiques sur les fréquences de sorties.

Les déclarations et affectations
Pour dresser ces statistiques, nous avons inévitablement besoin de variables qu'il est impératif de déclarer et d'affecter.
  • Entre les bornes de la procédure, ajouter les déclarations et affectations suivantes :
...
Dim tabB As Variant: Dim tabC As Variant
Dim ligne As Integer: Dim colonne As Byte
Dim boule As Byte: Dim chance As Byte

ReDim tabB(1 To 49)
ReDim tabC(1 To 10)
ligne = 4
...


Les deux premières variables ne sont pas typées (As Variant). Nous les utiliserons comme tableaux à dimensionner pour accueillir les fréquences des boules et des numéros chance. Les deux variables suivantes sont respectivement typées comme un entier classique (Integer) et comme un entier court (Byte). Nous les utiliserons comme variables de boucle afin de parcourir les lignes et les colonnes des numéros tirés à analyser. Enfin, les variables boule et chance, elles aussi typées comme des entiers courts, serviront à mémoriser les numéros au fil de l'analyse par les boucles. En effet, nous devons parcourir le tableau de l'historique des tirages, aussi bien en ligne qu'en colonne, pour n'omettre aucun numéro. Ensuite nous dimensionnons les deux tableaux de variables : Le premier sur les 49 boules possibles et le second sur les 10 numéros chance possibles. Puis, nous calons l'indice de ligne sur la ligne du dernier tirage à analyser, soit sur la première ligne (4) du tableau de la feuille tirages.



Parcourir les lignes des tirages
Pour analyser tous les numéros tirés, nous devons commencer par parcourir toutes les lignes du tableau de la feuille tirages, tant que la première ligne vide n'est pas atteinte. Et pour cela, une boucle Do While, émettant un critère, est particulièrement prédestinée.
  • A la suite du code de la procédure, créer la boucle suivante :
...
Do While Cells(ligne, 3).Value <> ""

ligne = ligne + 1
Loop
...


A partir de la quatrième ligne du tableau (ligne), tant que la première cellule vide de la troisième colonne n'est pas atteinte (Do While Cells(ligne, 3).Value <> ""), nous engageons une analyse de toutes les lignes. A chaque passage et après des traitements qui restent à entreprendre, nous n'oublions pas d'incrémenter la variable nommée ligne. C'est ainsi que nous pourrons pointer précisément sur les cellules des lignes suivantes.

Toutes les colonnes de chaque ligne
Pour que chaque numéro sorti soit analysé, pour chaque ligne passée en revue, nous devons étudier les numéros de chaque colonne. Pour cela donc, nous devons intégrer une seconde boucle dans la première. Elle est forcément bornée car nous connaissons l'indice de colonne de la première comme de la dernière boule. Donc, une boucle For Next fera parfaitement l'affaire.
  • Dans la boucle Do While, intégrer la boucle For Next comme suit :
...
Do While Cells(ligne, 3).Value <> ""
For colonne = 3 To 7

Next colonne

ligne = ligne + 1
Loop
...


Pour chaque ligne donc, nous parcourons les colonnes de chaque boule, de la C à la G (3 To 7).

Cumuler les fréquences
Désormais, grâce au premier tableau de variables, dès qu'un numéro de boule est rencontré, nous allons pouvoir stocker sur son indice, les fréquences de ses sorties. Il suffit d'incrémenter les anciens décomptes au fur et à mesure des numéros passés en revue par cette double boucle.
  • Dans la boucle imbriquée, ajouter les deux lignes VBA suivantes :
...
boule = Cells(ligne, colonne).Value
tabB(boule) = tabB(boule) + 1
...


Nous prélevons le numéro (Value) de la boule parcourue pour l'indice de ligne (ligne) et l'indice de colonne (colonne) en cours, dans la variable boule. Sur cet indice (tabB(boule)), nous incrémentons la fréquence de sortie (tabB(boule) + 1) à chaque fois que ce numéro est effectivement rencontré.



Fréquences des numéros chance
Concernant les numéros chance, il n'y a pas de colonne à parcourir. Ils sont tous dans la même rangée. Donc, dans la première boucle et en dehors de la seconde, il suffit de prélever les numéros pour incrémenter leurs fréquences dans le tableau de variables dédié à cet effet.
  • Avant l'incrémentation de la boucle parent, ajouter les deux instructions VBA suivantes :
...
Next colonne
chance = Cells(ligne, 8).Value
tabC(chance) = tabC(chance) + 1

ligne = ligne + 1
Loop
...


Le principe est le même. Nous récupérons la valeur du numéro rencontré pour incrémenter sa fréquence dans le tableau de variables dédié (tabC), à chaque fois que ce chiffre est croisé.

Inscrire les fréquences
A l'issue du traitement de cette double boucle, les deux tableaux de variables renferment toutes les fréquences de sorties des boules et des numéros chance. Dans l'ordre, nous n'avons donc plus qu'à les restituer dans les tableaux de la seconde feuille, nommée fréquences.
  • Après la double boucle, créer la nouvelle boucle suivante :
...
Loop

For ligne = 4 To 52
Sheets("frequences").Cells(ligne, 4).Value = ligne - 3
Sheets("frequences").Cells(ligne, 5).Value = tabB(ligne - 3)
If (ligne < 14) Then
Sheets("frequences").Cells(ligne, 7).Value = ligne - 3
Sheets("frequences").Cells(ligne, 8).Value = tabC(ligne - 3)
End If
Next ligne


End Sub
...


Nous parcourons de nouveau toutes les boules du tableau (4 To 52). Sur la feuille frequences, nous inscrivons les numéros en colonne D (Cells(ligne,4).Value) pour la ligne en cours. Bien sûr, les numéros sont réajustés de trois unités pour partir du chiffre 1, étant donné que nous débutons à partir de la ligne 4. Pour chacun, nous inscrivons dans la colonne E suivante (Cells(ligne, 5).Value), les fréquences correspondantes en partant là encore, du premier indice du tableau de variables, réajusté de trois unités (tabB(ligne - 3)), pour les mêmes raisons que précédemment.

Puis, nous nous occupons des numéros chance par la même occasion jusqu'à la ligne 13 (<14) et cette fois pour les colonnes 7 et 8, soit G et H. Pour chaque numéro, nous inscrivons en regard la fréquence décelée et stockée dans le second tableau de variables (tabC(ligne -3)).



Trier les tableaux des fréquences
Il ne nous reste plus qu'à trier les deux tableaux des fréquences par ordres croissants. Ainsi, nous y verrons plus clair. Pour cela, nous proposons simplement de restituer un code que nous avions développé à l'occasion d'une astuce VBA Excel pour trier des tableaux de longueurs variables.
  • A la suite du code de la procédure, ajouter les instructions VBA suivantes :
...
Sheets("frequences").Sort.SortFields.Clear
Sheets("frequences").Sort.SortFields.Add2 Key:=Range("E3:E52")
With Sheets("frequences").Sort
.SetRange Range("C3:E52")
.Header = xlYes
.Orientation = xlTopToBottom
.Apply
End With

Sheets("frequences").Sort.SortFields.Clear
Sheets("frequences").Sort.SortFields.Add2 Key:=Range("H3:H13")
With Sheets("frequences").Sort
.SetRange Range("G3:H13")
.Header = xlYes
.Orientation = xlTopToBottom
.Apply
End With

Sheets("frequences").Activate
Sheets("frequences").Range("A1").Select

Set tabB = Nothing
Set tabC = Nothing
...


Nous agissons donc sur la feuille nommée frequences. Tout d'abord, nous effaçons les anciennes potentielles préférences de tri (Clear). Puis, dans les deux cas, nous définissons la colonne à utiliser pour les tris (E3:E52 et H3:H13), soit les fréquences de sorties. Dès lors, nous engageons les réorganisations (Sort), sans toucher aux entêtes, soit aux titres (Header = xlYes). Enfin, nous déchargeons les objets utilisés comme tableaux de variables et comme nous en avons l'habitude, en les réinitialisant à Nothing.

Etablir les statistiques
Nous pouvons maintenant exécuter le code VBA sur l'intégralité des tirages pour livrer les statistiques sur les fréquences de sorties des numéros du loto.
  • Enregistrer les modifications (CTRL + S) et basculer sur la feuille (ALT + Tab),
  • Dans le ruban Développeur, cliquer sur le bouton Mode Création,
Ainsi, nous désactivons la conception pour libérer l'exécution.
  • Cliquer alors sur le bouton Stats,
Comme vous pouvez l'apprécier, les fréquences sont calculées et triées en un temps records, quand dans le même temps le visuel est rendu à la feuille frequences pour permettre à l'utilisateur de consulter les données à décortiquer.

Statistiques sur les fréquences de sorties des numéros du loto

Comme vous pouvez le voir, au jour de l'exécution de ce programme, les boules 1 et 2 sont les moins souvent utilisées. Et si vous faites défiler le tableau vers le bas, vous constatez un net écart entre les numéros les plus souvent sortis et les moins souvent sortis. Le constat est assez similaire pour les numéros chance du second tableau. Pourtant ne dit-on pas qu'un équilibre existe et que statistiquement ces fréquences doivent se lisser dans le temps ? C'est tout l'enjeu de ce développement.

Comme vous le savez, il est très simple de vérifier ces résultats analytiques. Il suffit d'engager la fonction Nb.Si sur le tableau des tirages pour confronter les fréquences avec celles calculées par le code VBA.

 
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