Etablir une liste de combinaisons (exemple loto)

corneliusdrusus

XLDnaute Nouveau
Bonjour,

Je souhaite trouver un moyen sur excel pour énumérer toutes les combinaisons de n parmi k.

Exemple avec le loto: (5 parmi 49)

1-2-3-4-5
1-2-3-4-6
etc...

(Si possible, la valeur sortie serait au format 102030405; 102030406; etc...)

je devrai trouver 1906884 combinaisons au total, de quoi remplir une bonne feuille excel.

Il y a beaucoup de sujet avec le langage VBA mais je suis novice en la matière contrairement aux fonctions déjà intégrées. Pourtant je pense que c'est le seul moyen.

Je vous remercie pour votre aide sur le sujet.
 

Staple1600

XLDnaute Barbatruc
Dernière édition:

Modeste geedee

XLDnaute Barbatruc
Re : Etablir une liste de combinaisons (exemple loto)

Bonsour®
je devrai trouver 1906884 combinaisons au total, de quoi remplir une bonne feuille excel.

Il y a beaucoup de sujet avec le langage VBA mais je suis novice en la matière contrairement aux fonctions déjà intégrées. Pourtant je pense que c'est le seul moyen.

:cool:
Novice ???
quel interet autre que la programmation ?
que faire de cette liste ?

Mathématiquement cette liste est définissable, connue et reconstitituable par "quelques boucles".

Un simple générateur aléatoire ne suffirait-il pas à tes expérimentations ?.

edit : Bonsoir staple1600
https://www.excel-downloads.com/threads/code-vba-combinaison-5-numero-sur-49.179923/
 

Pièces jointes

  • 5 sur 49.xls
    43.5 KB · Affichages: 986
  • 5 sur 49.xls
    43.5 KB · Affichages: 903
  • 5 sur 49.xls
    43.5 KB · Affichages: 996
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Etablir une liste de combinaisons (exemple loto)

Re


Modeste:
Plusieurs codes du fil que nous citons font ici planter Excel. (PC sous XP et XL 2003)
Je suis en train de tester celui de pierrejean (le post que tu cites)
Pour le moment Excel respire encore ;)
 

Modeste geedee

XLDnaute Barbatruc
Re : Etablir une liste de combinaisons (exemple loto)

Bonsour®
Plusieurs codes du fil que nous citons font ici planter Excel. (PC sous XP et XL 2003)
Je suis en train de tester celui de pierrejean (le post que tu cites)
Pour le moment Excel respire encore ;)

oupsss... celui cité fonctionne mais est erroné (nombre de combinaisons incorrect)
Regarde la pièce jointe 871050
Voir plus loin dans le fil https://www.excel-downloads.com/threads/code-vba-combinaison-5-numero-sur-49.179923/
d'autres codes plus performants...
mais hélas plusieurs ne gérent par le nombre de lignes et font planter les versions antérieures à Excel 2007
 

Pièces jointes

  • 5 49 pierrejean.JPG
    5 49 pierrejean.JPG
    15.3 KB · Affichages: 742

Staple1600

XLDnaute Barbatruc
Re : Etablir une liste de combinaisons (exemple loto)

ReBonsoir et juste après ce message Bonne nuit ;)

Pour éviter de planter Excel, je sors de la cellule ;)
VB:
Sub CombinaisonsTXT()
'Variation textuelle à partir
'd'un code de pierrejean (salut à toi ;-) )
For m = 1 To 49
 For n = m + 1 To 49
     For o = n + 1 To 49
          For p = o + 1 To 49
               For q = p + 1 To 49
                 If m Mod 2 <> 0 Or n Mod 2 <> 0 Or o Mod 2 <> 0 Or p Mod 2 <> 0 Or q Mod 2 <> 0 Then
                    Open "C:\temp\649.txt" For Append As #1
                    Print #1, m; n; o; p; q
                    Close #1
                  End If
                Next q
          Next p
     Next o
 Next n
Next m
End Sub

RESULTAT: Un fichier texte de 38 Mo :eek:créé en plus ou moins 13 minutes.
649.jpg


Et pour laisser Excel tranquille et le laisser retourner à des tâches dignes d'un tableur, j'espère qu'une bonne âme du forum viendra ici pendant ma nuit trop courte déposer un script vbs qui générera ce même fichier texte en s'affranchissant d'Excel.

A demain donc.

PS1: Tant pis pour la coquille ;)

PS2: Pour l'instant ma transcription VBS avec:
objFSO.createtextfile et
strTmp = m & " " & n & " " & " " & o & " " & p & " " & q
objTF.writeline strTmp
plante donc dodo de suite
 
Dernière édition:
J

JJ1

Guest
Re : Etablir une liste de combinaisons (exemple loto)

Bonjour à tous,

Voici un code de Roger qui fonctionne parfaitement (1 mn sous Excel 2007 sur 2 colonnes texte)

ps: Cornelius, Kendev t'avait déjà répondu au mois de juin, est-ce le même projet?

Sub combinaisons()
Dim lin&, col&, rc&, m%, n%, o%, p%, q%, tir$()
lin = 1
col = 0
rc = Rows.Count
ReDim tir(1 To rc, 0)
For m = 1 To 49
For n = m + 1 To 49
For o = n + 1 To 49
For p = o + 1 To 49
For q = p + 1 To 49

tir(lin, col) = m & " " & n & " " & o & " " & p & " " & q
lin = lin + 1
If lin > rc Then
col = col + 1
lin = 1
ReDim Preserve tir(1 To rc, col)
End If

Next q
Next p
Next o
Next n
Next m
Range(Cells(1, 1), Cells(rc, col + 1)).Value = tir
End Sub


A+
 

Staple1600

XLDnaute Barbatruc
Re : Etablir une liste de combinaisons (exemple loto)

Bonjour à tous

JJ1:
Pour infos le code que tu soumets était déjà dans le fil que nous citions Modeste et moi ;)

PS: Personne pour un petit vbs de derrière les fagots (cf message précédent)
 

Staple1600

XLDnaute Barbatruc
Re : Etablir une liste de combinaisons (exemple loto)

Re à tous et bon appétit à ceux qui sont encore à table

En espérant toujours une bonne âme de passage ici et friande de VBS ;)
Le script VBS ci-dessous fonctionne (Copier dans le bloc-notes et enregistrer avec extension vbs)
Code:
On Error Resume Next
Dim i
' Constants for FileSystemObject
Const FOR_READING = 1
Const FOR_WRITING = 2
Const FOR_APPENDING = 8
strFileOutput = ".\abcde.txt"
' Create a Script Runtime FileSystemObject.
Set objFSO = CreateObject("Scripting.FileSystemObject")
' Check to see if the output file exists. If so, open it for writing or appending.
' If not, create it and open it for writing.
If objFSO.FileExists(strFileOutput) Then
Set objOutputFile = objFSO.OpenTextFile (strFileOutput, FOR_APPENDING)
Else
Set objOutputFile = objFSO.CreateTextFile(strFileOutput)
End If
If Err <> 0 Then
Msgbox "Unable to open " & strFileOutput & " for output."
End If
For i= 1 to 100
objOutputFile.Write "Ligne " & i & " | " & Date & ", " & Now  & vbCrlf
Next
objOutputFile.close
'source code d'origine

Mais si j'essaie de remplacer la boucle For i=1 to 100 par celle du code de Pierrejean
(voir le message #6)
(avec les Dim adéquats), le script génère une erreur.

Merci à ceux qui sauront me filer un coup de pouce.
 
Dernière édition:

Efgé

XLDnaute Barbatruc
Re : Etablir une liste de combinaisons (exemple loto)

Bonjour à tous, @ Staple : Je ne sais pas si j'ai bien compris, mais ce mélange de ton vbs et le code de Pierrejean me crée un fichier de 26Mo sans plantage. Il me semble que cela fonctionne si on ne met pas "Next x" mais juste "Next" . en espérnt avoir fait avancé le schmilblik. Cordialement
 

Pièces jointes

  • Test.txt
    1.1 KB · Affichages: 445
  • Test.txt
    1.1 KB · Affichages: 433
  • Test.txt
    1.1 KB · Affichages: 518

corneliusdrusus

XLDnaute Nouveau
Re : Etablir une liste de combinaisons (exemple loto)

Bonjour à tous,

Que de réponses, mais cela fait ma joie, car j'ai recherché longtemps avant que les réponses soient claires pour mon esprit, puisque le langage VBA je ne le connait pas, j'avais du mal à changer quoi que ce soit.

Mon projet est différent de celui de juin, auquel une personne à bien répondu, je m'excuse de ne pas vous avoir félicité à temps. Sur l'ancien projet, il s'agissait d'optimisation. Ici, le but est de recenser toutes les combinaisons possibles dans le but de traiter cette liste pour une recherche approfondi sur le hasard. A défault de VBA, j'en été venu à faire avec des fonctions simples des tableaux pour croiser les combinaisons de rang inférieur avec 50 N° en abscisse. Toutefois, après avoir réussi à passer le cap des 4n° parmi 50, je ne me suis pas senti le courage d'aller jusqu'à 5n°.

J'ai testé le code de JJ1 qui semble bien retranscrire ce que je souhaitais. Toutefois, je pense que le fichier devient trop volumineux pour mon ordinateur. Excel ne répond plus après avoir effectué l'opération.

Sinon j'ai remarqué que les chiffres était en 1 2 3 4 5. Serait ce possible de modifier le code pour qu'il m'affiche 0102030405. Vous voyez ce que je veux dire, convertir les chiffres en rajoutant un 0 devant et pas d'espace entre les différents nombres. Cette manipulation me permettra de mieux réutiliser l'information dans les traitements à venir sur excel.

Merci à tous

Cornelius Drusus
 

Staple1600

XLDnaute Barbatruc
Re : Etablir une liste de combinaisons (exemple loto)

Bonsoir à tous

Efgé: Merci ma bonne âme d'avoir suppléer mon aveuglement vbscriptique.
Pffff..... tout cela à cause d'un bête caractère en trop.
En guise de pénitence, je vais m'infliger d'essayer de retranscrire le code de ROGER2327 en vbs, tout en écoutant de la musique d’ascenseur, les pieds dans un cuvette d'eau froide.

PS: Cornelius:
Rendons à César... ;)
Le code de JJ1 est celui de ROGER2327 (issu du fil mis en lien par Modeste et moi-même)
Le code qui s'affranchit d'Excel est à l'origine de Pierrejean, maladroitement tenté en VBS par moi-même et finalement rendu fonctionnel par Efgé.
 

Staple1600

XLDnaute Barbatruc
Re : Etablir une liste de combinaisons (exemple loto)

Re


Cornelius:
Essaies le fichier proposé par Efgé (qui corrige ma bévue)
Tu ouvres le fichier Test.txt et tu le renommes Test.vbs puis tu doubles-cliques dessus
Selon la puissance de ton PC, après une minute à deux minutes , tu obtiendras un fichier nommé abdce.txt avec tes combinaisons.

Ensuite tu pourras dans un premier temps l'ouvrir dans WordPad pour voir ce qui s'y trouve ;)
 

corneliusdrusus

XLDnaute Nouveau
Re : Etablir une liste de combinaisons (exemple loto)

Bonsoir à tous,

Génial, super.

Tout marche, c'est le graal. Cela faisait si longtemps, et en plus j'ai pu importer les combinaisons sur excel en utilisant le séparateur point virgule, du coup, maintenant je peux mettre toutes les combinaisons au format que je veux.

Le plus, c'est qu'en ne passant pas par excel, le fichier ne plante pas, même s'il fait un peu moins de 30Mo, (pour mon ordinateur, un fichier excel de plus de 15 Mo plante) j'importe par la suite les données qui m’intéresse.

Merci à tous et à ceux qui ont fait cette formule.

Question complémentaire, comment je peux modifier cette formule pour faire n parmi k, (exemple si je veux euromillions, 5 parmi 50) Je doit remplacer 49 par 50?
De même, si je veux les combinaisons du rang inférieur, 4 n° parmi 49 (ou 50), etc...

Merci encore

Cornelius Drusus
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Etablir une liste de combinaisons (exemple loto)

Re

Ici, le but est de recenser toutes les combinaisons possibles dans le but de traiter cette liste pour une recherche approfondi sur le hasard

J'espère que tu penseras à partager ici le fruit de tes recherches ;)
Car c'est bien ce que tu vais prévu, non?
Comme un juste retour des choses ... sur un forum d'entraide et de partage des connaissances. ;)

Pour répondre à ta dernière question, sois curieux, fais les modifications que tu suggères et testes le vbs ainsi modifié.
 

Discussions similaires

Statistiques des forums

Discussions
314 661
Messages
2 111 627
Membres
111 238
dernier inscrit
patrick01