Bonjour Mapomme,Bonjour à tous,
Pour illustrer le fil, voici un exemple de ce qu'on pourrait faire pour compter les groupes de quatre nombres des tirages passés.
3 onglets :
Pour lancer la macro, cliquer sur "Hop !" de l'onglet "Menu".
- onglet "Menu" : pour lancer la macro
- onglet "Stat" : liste des 916 895 combinaisons possibles (4 parmi 70) et en face le nombre de fois où cette combinaison est apparue dans les tirages passés.
- onglet Tirages" : Liste des tirages passés (source FdJ) => 2 428 tirages
Avec ma bécane, la durée d’exécution est d'environ 66 s. Config : PC, AMD Ryzen 7 3700X, 16 Go mémoire.
Bonsoir Mapomme et bonsoir le forum,Bonjour à tous,
Pour illustrer le fil, voici un exemple de ce qu'on pourrait faire pour compter les groupes de quatre nombres des tirages passés.
3 onglets :
Pour lancer la macro, cliquer sur "Hop !" de l'onglet "Menu". L'avancement du traitement des tirages se voit dans la barre d'état.
- onglet "Menu" : pour lancer la macro
- onglet "Stat" : liste des 916 895 combinaisons possibles (4 parmi 70) et en face le nombre de fois où cette combinaison est apparue dans les tirages passés.
- onglet Tirages" : Liste des tirages passés (source FdJ) => 2 428 tirages
Avec ma bécane, la durée d’exécution est d'environ 66 s. Config : PC, AMD Ryzen 7 3700X, 16 Go mémoire.
Te serait-il possible d'intégrer le calcul des écarts de sortie actuels en colonne C ("Ecarts") de manière à ce qu'il s'affiche (par exemple) "8 " en C4 en face de la combinaison 1-2-3-6 qui est sortie il y a 8 tirages, le 10 février 2024?
La réponse est oui !Est-il possible (ou plutôt est-ce qu'il te serait possible) soit :
- d'intégrer une colonne dans le fichier présentant les combinaisons par colonne en plus de la colonne A?
- (ou) de transformer la colonne A en 4 colonnes de nombres distincts (ce qui permettrait de filtrer)?
Comme la procédure a été écrite cela n'a pas d'importance. Les tirages ajoutés doivent être de la forme : la date suivie des 20 nombres.Une petite question subsidiaire pour l'actualisation des tirages: est il mieux de rajouter ligne par ligne en insérant chaque tirage en copié/collé dans la feuille tirage ou vaut il mieux coller le tableau intégral de la fdj après l'avoir expurgé des données inutiles?
Sub Principale() ' mapomme - XLD Dim t, tCombins, tvals, k&, tLesTirages, i&, tcombinPN, j&, s$, n&, ts, debut debut = Timer With Sheets("Stat") .Range("a1").CurrentRegion.Clear ' liste des combinaisons de 3 parmi 1,2,3,4,5,...,87,688,89,90 Application.StatusBar = "Liste de toutes les combinaisons 3 parmi 90" tCombins = TableauCombiPparmiN(3, 90) 'Sub o function non definita ' transformer les combinaisons en nombre For i = 1 To UBound(tCombins): tCombins(i, 1) = CLng(Format(tCombins(i, 1), "00") & Format(tCombins(i, 2), "00") & _ Format(tCombins(i, 3), "00")): Next ReDim Preserve tCombins(1 To UBound(tCombins), 1 To 1) ' écriture sur la feuille .Range("a1") = "Combinaisons": .Range("b1") = "nn1": .Range("c1") = "nn2" .Range("d1") = "nn3": .Range("e1") = "Occurence" .Range("f1") = "Ecart/dernier tirage" .Range("a2").Resize(UBound(tCombins)) = tCombins 'tableau des valeurs et écarts ReDim tvals(1 To UBound(tCombins), 1 To 1) ReDim tecarts(1 To UBound(tCombins), 1 To 1) End With ' lecture des tirages et des dates Application.StatusBar = "trie et lecture des tirages" With Sheets("Tirages") .Range("a1").CurrentRegion.Sort key1:=.Range("a1"), order1:=xlDescending, MatchCase:=False, Header:=xlYes k = .Cells(Rows.Count, "a").End(xlUp).Row tLesTirages = .Range("b2:f" & k) End With tcombinPN = TableauCombiPparmiN(3, 5) 'les combinaisons de 4 parmi 1,2,3,4,5,...,17,18,19,20 Application.ScreenUpdating = True For i = 1 To UBound(tLesTirages) If (i Mod 100) = 0 Then Application.StatusBar = "Tirage n° " & Format(i, "# ##0") & " / " & Format(UBound(tLesTirages), "# ##0") For k = 1 To UBound(tcombinPN) s = "" For j = 1 To UBound(tcombinPN, 2): s = s & Format(tLesTirages(i, tcombinPN(k, j)), "00"): Next j n = DichoTablo(tCombins, CLng(s)) tvals(n, 1) = tvals(n, 1) + 1 'PER ADESSO SI FERMA QUI ERRORE DI RUN TIME 9 'INDICE NON INCLUSO NELL'INTERVALLLLO If tecarts(n, 1) = "" Then tecarts(n, 1) = i - 1 Next k Next i ' tableau pour afficher les résultats Application.StatusBar = "Construction tableau des résulats pour affichage" ReDim Preserve tCombins(1 To UBound(tCombins), 1 To 6) For i = 1 To UBound(tCombins) s = tCombins(i, 1): If Len(s) = 6 Then s = "0" & s For j = 1 To 4 tCombins(i, j + 1) = Mid(s, 1 + 2 * (j - 1), 2): Next tCombins(i, 5) = tvals(i, 1) tCombins(i, 6) = tecarts(i, 1) Next i ' affichage et formatage Application.StatusBar = "affichage et formatage" Application.ScreenUpdating = False With Sheets("Stat") .Columns(2).Resize(, 3).NumberFormat = "00" .Range("a2").Resize(UBound(tCombins), UBound(tCombins, 2)) = tCombins .Range("a1").CurrentRegion.AutoFilter .Range("a1").CurrentRegion.Borders.LineStyle = xlDash .Range("a1").Resize(, UBound(tCombins, 2)).EntireColumn.AutoFit .Range("a1").CurrentRegion.Columns(1).Interior.Color = RGB(220, 220, 220) .Range("a1").CurrentRegion.Columns(2).Resize(, 3).Interior.Color = RGB(240, 240, 240) .Range("a1").Resize(, 6).Interior.Color = RGB(220, 220, 255) Application.Goto .Range("a1"), True End With Application.StatusBar = False Application.ScreenUpdating = True MsgBox Format(Timer - debut, "0.0\ sec.") End Sub | |||||||||||||
| |||||||||||||
| |||||||||||||
| |||||||||||||
| |||||||||||||
| |||||||||||||
| | ||||||||||||
| |||||||||||||
| |||||||||||||
| |||||||||||||
|