generateurs

B

bonoo

Guest
bonjour a tous
Dans le classeur ci joint , je cherche a generer toutes les combisaisons possible du quinté + c est a dire toutes les combinaisons de 5 chevauux ainsi que la valeur total de ces chevaux .Peut etre qu une personne du forum a deja fait ou deja vu cela quelque part , merci beaucoup pour ce coup de main
merci
bono
 

Pièces jointes

  • combinaisons.zip
    2.5 KB · Affichages: 42
  • combinaisons.zip
    2.5 KB · Affichages: 37
  • combinaisons.zip
    2.5 KB · Affichages: 38
T

Ti

Guest
j'ai effectivement déjà mis en ligne un programme qui affichait toutes les combinaisons ou les arrrangements, selon les cas. Il faudrait que tu fasses une recherche dans le forum pour le retrouver.
 
B

Bernard

Guest
Bonjour Joel


Joint un fichier qui j'espère correspond à tes souhaits ?

Tes données sont très certainement importées d'un site internet, leur format ne permet pas de les inexploiter immédiatement sur excel. Il faut donc les copier/coller en valeur avant de les placer dans le tableau de base bleu.

Cordialement

Bernard
 

Pièces jointes

  • combinaisonsV1.zip
    12.6 KB · Affichages: 78
  • combinaisonsV1.zip
    12.6 KB · Affichages: 78
  • combinaisonsV1.zip
    12.6 KB · Affichages: 86
B

Bernard

Guest
Bonsoir Bonoo et le forum

Je pense que l'on peut accélérer la procédure de tirage du fichier combinaisonsV1 !
Cependant à ce niveau, je suis en limite de rupture et je serais très heureux si parmi les pros VBA de ce forum, quelqu'un voulait bien se donner la peine de lui donner plus de vélocité et nous en exposer les raffinements.

Option Explicit
Sub Tirage()
Dim MaLigne As Long
Dim ModeCalcul As Long
Dim NbPart As Byte
Dim i As Long, j As Long, k As Long, l As Long, m As Long
ModeCalcul = Application.Calculation

Application.ScreenUpdating = False
Sheets("Calcul").Select
Sheets("Calcul").Range("C5:D20000").ClearContents

MaLigne = 4
NbPart = [NbParts]

ReDim tabPart(NbPart)
For i = 1 To NbPart
tabPart(i) = Range("Refparts").Cells(i, 1)
Next i
For i = 1 To NbPart - 1
For j = i + 1 To NbPart
For k = j + 1 To NbPart
For l = k + 1 To NbPart
For m = l + 1 To NbPart
MaLigne = MaLigne + 1
Cells(MaLigne, 3) = Str(tabPart(i)) & " " & Str(tabPart(j)) & " " & Str(tabPart(k)) & " " & Str(tabPart(l)) & " " & Str(tabPart(m))
Next m
Next l
Next k
Next j
Next i

MaLigne = 4
ReDim tabPoint(NbPart)
For i = 1 To NbPart
tabPoint(i) = Range("Refpoints").Cells(i, 1)
Next i
For i = 1 To NbPart - 1
For j = i + 1 To NbPart
For k = j + 1 To NbPart
For l = k + 1 To NbPart
For m = l + 1 To NbPart
MaLigne = MaLigne + 1
Cells(MaLigne, 4) = tabPoint(i) + tabPoint(j) + tabPoint(k) + tabPoint(l) + tabPoint(m)
Next m
Next l
Next k
Next j
Next i

Application.Calculation = ModeCalcul
Range("G2").Select
Application.ScreenUpdating = True
End Sub

Merci de votre bienveillance.

Cordialement

Bernard
 
B

bonoo

Guest
bonsoir

Bernard crois tu que l on peut integrer , par exemple le choix de chevaux a garder en consideration , comme par exemple je veux le 108 et le 105 dans toutes les combinaisons , ou seulement 1 cheval ou trois , suivant mon choix , questions de reduction !
merci bien
joel
 
Z

Zon

Guest
Salut,

Bernard , tu peux affecter directement une plage de cellules à un tableau et vice versa on évite un 2 éme passage:

Sub Tirage()
Dim TabPart, TabRes
Dim I&, J&, K&, L&, M&, N&, NbPart As Byte
Dim ModeCalcul As Long
ModeCalcul = Application.Calculation

Application.ScreenUpdating = False
Sheets("Calcul").Select 'je le laisse pour les utilisateurs XL97
Sheets("Calcul").Range("C5:D20000").ClearContents
N = 1
NbPart = [NbParts]
TabPart = Range([A5], [B65536].End(xlUp)).Value
ReDim TabRes(1 To [B2].Value, 1 To 2)
For I = 1 To NbPart - 1
For J = I + 1 To NbPart
For K = J + 1 To NbPart
For L = K + 1 To NbPart
For M = L + 1 To NbPart
' Maligne = Maligne + 1
TabRes(N, 1) = Str(TabPart(I, 1)) & " " & Str(TabPart(J, 1)) & " " & Str(TabPart(K, 1)) & " " & Str(TabPart(L, 1)) & " " & Str(TabPart(M, 1))
TabRes(N, 2) = TabPart(I, 2) + TabPart(J, 2) + TabPart(K, 2) + TabPart(L, 2) + TabPart(M, 2)
N = N + 1
Next M
Next L
Next K
Next J
Next I
[C5].Resize(UBound(TabRes), UBound(TabRes, 2)) = TabRes

Application.Calculation = ModeCalcul
Range("G2").Select
Application.ScreenUpdating = True
End Sub

J'ai eu beau cherché Ti dasn tes nombreux posts, je n'ai rien retrouvé.

A+++

Lien supprimé
 
B

Bernard

Guest
Bonjour Zon et le forum

Je découvre la macro new look et je n'ai que deux mots à dire "Bravo" et "Merci".

Bravo parce que le résultat et bien là et merci pour ta sollicitude.

Effectivement, l'utilisation de deux tableaux en parallèle évite la redondance de procédure et la méthode d'affichage employée fait toute la différence en matière de vélocité.

Au plaisir de lire à nouveau tes oeuvres sur ce forum.

Cordialement

Bernard
 

Discussions similaires

Réponses
4
Affichages
363