Autres Combinaisons

ALEA()

XLDnaute Occasionnel
Bonjour,
J'ai en ligne 1, A1:T1, 20 nombres.
Je voudrais toutes les combinaisons de 7 nombres/20 à partir de la colonne U1 (autour de 77000 lignes)

Merci et bon Noël à tous...
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Alea, Mapomme,
Un petit essai. Hop! avec :
VB:
Sub Tirage()
Dim Tin(), Tout(), n
Tin = Range("A1:T1")
ReDim Tout(77520, 1)
Range("U:U").ClearContents
Application.ScreenUpdating = False
n = 0
For a = 1 To 14: For b = a + 1 To 15: For c = b + 1 To 16: For d = c + 1 To 17: For e = d + 1 To 18: For f = e + 1 To 19: For g = f + 1 To 20
    Tout(n, 0) = Tin(1, a) & "-" & Tin(1, b) & "-" & Tin(1, c) & "-" & Tin(1, d) & "-" & Tin(1, e) & "-" & Tin(1, f) & "-" & Tin(1, g)
    n = n + 1
Next: Next: Next: Next: Next: Next: Next
Range("$U$1").Resize(UBound(Tout, 1), UBound(Tout, 2)) = Tout
End Sub
Bestial, simple, mais rapide.
 

Pièces jointes

  • Tirage.xlsm
    856.7 KB · Affichages: 12

mapomme

XLDnaute Barbatruc
Supporter XLD
Bestial, simple, mais rapide.

Bonjour @sylvanu et très joyeux Noël à toi et tes proches,

J'ai fait un peu plus compliqué car ma fonction ne fixe ni N ni P dans l'écriture du code. N et P sont des paramètres de la fonction.
C'était ça le challenge de Function TableauCombiPparmiN(p As Long, n As Long) et aussi ne pas employer la récursivité (qui consomme énormément de ressources et augmente la durée d'exécution).

TableauCombiPparmiN(...,...) retourne un tableau des combinaisons de P parmi les N premiers entiers.
Il suffit ensuite de remplacer les valeurs de ce tableau par les éléments de départ.
 
Dernière édition:

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Alea, Usine à gaz, Mapomme,
Je préfère, cette année, que vous souhaiter une très très bonne sante à vous et à vos proches. je ne trouve pas le "joyeux" de circonstance. 🥳🥳😨

@mapomme,
J'ai vu et décortiqué.;)
Mais comme c'était bien avancé, j'ai livré.
Par contre, sur mon PC, votre macro tourne en 1.226s, la mienne en 0.589s.
Le prix, je pense, à l'universalité de la votre, la mienne étant spécifique.
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re @sylvanu,

Sur mon portable prof. (intel i5 8350U à 1,70 GHz) je trouve respectivement 0,52 s pour mapomme et 0,35 s pour sylvanu.

Il n'y a pas que le prix de l'universalité qui peut coûter. Il y a aussi l'écriture sur la feuille. Je restitue 7 colonnes et toi seulement une.

Hors restitution, effacement, etc., ton traitement prend 0,22 s et le mien 0,10 s.

Mais comme dit @job75 (que je salue et à qui je souhaite un bon Noël ainsi qu'à sa famille :) ), la restitution fait partie de la solution ;).
 

Discussions similaires

Réponses
13
Affichages
389
Réponses
5
Affichages
432

Statistiques des forums

Discussions
311 725
Messages
2 081 943
Membres
101 849
dernier inscrit
florentMIG