Rapport de message :*
 

Re: Analyse combinatoire

Titre du sujet : Re: Analyse combinatoire
par Marco57 le 29/06/2008 15:42:50

Bonjour le fil et toi le Forum,
De passage parmi vous, ce fil m'a remémoré une histoire de combinaisons possibles du Loto.
Il semble que Lotus27 cherchait à créer les différentes combinaisons possibles.
Citation :
D'autre part serait-il possible de créer dans une autre feuille la liste des arrangements lettres et valeurs obtenus

a mon avis une seule feuille (excel2002) ne suffit pas car le nombre de combinaisons doit être énorme.
La macro suivante génère ces différentes possibilités mais les ressources de ma machine (un peu vieille) font que je suis tombé en manque de ressources après avoir écrit 2 023 703 combinaisons. C'est peu quand on sait que cette combinaison est constituée de AIYMHU. A la louche, je dirai qu'on va dépasser les 50 millions de combinaisons.
En attendant d'avoir une machine mieux sourcée, je vous joins le code utilisé pour générer ces combinaisons:
Sub Combinaisons()
'by Marco57 28/06/08
Dim Num1 As Byte, Num2 As Byte, Num3 As Byte, Num4 As Byte, Num5 As Byte, Num6 As Byte
Dim L&, N&, C As Byte, Alpha As Variant, T#
  
  Alpha = Array("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", _
                "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z")

  T = Timer
  L = 1
  C = 0
'  
Application.ScreenUpdating False
  
For Num1 0 To UBound(Alpha)
    For 
Num2 0 To UBound(Alpha)
      For 
Num3 0 To UBound(Alpha)
        For 
Num4 0 To UBound(Alpha)
          For 
Num5 0 To UBound(Alpha)
            For 
Num6 0 To UBound(Alpha)
              If 
Not (Num1 Num2 Or Num1 Num3 Or Num1 Num4 Or Num1 Num5 Or Num1 Num6 Or _
                      Num2 
Num3 Or Num2 Num4 Or Num2 Num5 Or Num2 Num6 Or _
                      Num3 
Num4 Or Num3 Num5 Or Num3 Num6 Or _
                      Num4 
Num5 Or Num4 Num6 Or Num5 Num6Then
                L 
11
                
If 65002 Then
                  C 
22:  ActiveCell.Offset(02).Select
                End 
If
                
Cells(LC) = Alpha(Num1) & Alpha(Num2) & Alpha(Num3) & Alpha(Num4) & Alpha(Num5_
                                  
Alpha(Num6)
                
Cells(LC) = N
              End 
If
            
Next Num6
          Next Num5
        Next Num4
      Next Num3
    Next Num2
  Next Num1
  
  MsgBox Format
((65000 C) + L"#,##0") & " Combinaisons calculées en " Format(Timer T"0.00") & " secondes."
  
End Sub


Pour l'instant tout est sur la même feuille mais en plusieurs colonnes. Le changement de feuille éventuellement nécessaire n'est pas très complexe mais je vais d'abord tenter de trouver une machine capable de mémoriser tout cela.

A+

Marco57