Générer une liste de combinaisons

nohrad

XLDnaute Nouveau
Bonjour,

J'ai un classeur Excel avec trois feuilles. Chacune de ses feuilles comprend une liste d'identifiants en première colonne sous forme "AAA" ou "A00". L'objectif est de pouvoir générer automatiquement dans une quatrième feuille l'ensemble des combinaisons d'identifiants de la forme "AAA-BBB-CCC" (AAA, identifiants du feuillet 1, BBB = feuillet 2, CCC = feuillet 3).

J'ai pensé à faire une boucle en VBA mais j'avoue que je suis un peu perdu.

Si quelqu'un peut m'aider ???

Merci :)
 

CBernardT

XLDnaute Barbatruc
Re : Générer une liste de combinaisons

Bonsoir nohrad et le forum,

Bienvenue sur le forum.

Il serait souhaitable de nous soumettre le fichier du début de ton projet comme base de travail.

Cordialement


Bernard
 

job75

XLDnaute Barbatruc
Re : Générer une liste de combinaisons

Bonjour nohrad, salut Bernard,

Si l'ordre des identifiants n'a pas d'importance dans les résultats en 4ème feuille, il s'agit bien de combinaisons.
Si par contre l'ordre des identifiants a de l'importance dans les résultats, il s'agit d'arrangements, il y en a 6 fois plus, et la durée du traitement sera donc très augmentée.

Merci de confirmer.

A+
 
Dernière édition:

nohrad

XLDnaute Nouveau
Re : Générer une liste de combinaisons

Hello,

Bon je ne suis pas certains de bien voir la différence entre combinaison et arrangement, mais je dirais qu'il s'agit de la combinaison des éléments de trois ensembles distincts. J'ai joint un modèle de doc pour mieux se rendre compte de quoi il s'agit.

Merci
 

Fichiers joints

job75

XLDnaute Barbatruc
Re : Générer une liste de combinaisons

Re,

J'ai finalement fait les 2 possibilités.

Pour les combinaisons 3 boucles For (une par feuille).

Pour les arrangements, 6 x 3 boucles For.

La durée du calcul pourra être diminuée en stockant les valeurs dans des tableaux avant de les copier dans la feuille. Je ne l'ai pas encore fait.

A+
 

Fichiers joints

nohrad

XLDnaute Nouveau
Re : Générer une liste de combinaisons

Super :)
C'est tout à fait ça (il s'agissait donc bien de combinaisons). Merci beaucoup pour cette aide précieuse.

Bonne soirée.
 

job75

XLDnaute Barbatruc
Re : Générer une liste de combinaisons

Re,

Maintenant avec un tableau pour stocker les valeurs, la durée du calcul est réduite de :

- 49% pour les combinaisons (durée 1,01 s sur mon ordi)

- 31% pour les arrangements (durée 13,15 s).

Ce n'est pas mal mais j'espérai mieux.

Bonne nuit.

A+
 

Fichiers joints

Dernière édition:

13GIBE59

XLDnaute Accro
Re : Générer une liste de combinaisons

Bonjour à tous.

Juste pour éclaicir les choses :

- combinaisons : l'ordre du tirage n'a aucune importance. Ex : loto.
- arrangements : l'ordre du tirage est pris en compte. Ex : tiercé.

Il y a donc toujours plus d'arrangements que de combinaisons à partir d'un même lot.

CQFD.:D
 

job75

XLDnaute Barbatruc
Re : Générer une liste de combinaisons

Bonjour le fil, le forum, un petit coucou à Jean-Bernard,

J'ai amélioré les performances en utilisant des tableaux dynamiques (redimensionnés régulièrement). Le gain par rapport à la version (1) devient conséquent :

- pour les combinaisons 59% (0,82 s)

- pour les arrangements 38% (11,74 s)

De plus j'utilise un tableau transposé (remplissage par ligne) et la feuille est donc mieux utilisée.

A+
 

Fichiers joints

Paritec

XLDnaute Barbatruc
Re : Générer une liste de combinaisons

Bonjour Job, 13gibe,nohrad
test de tes macros chez moi
combinaisons 0,49 S
arrangements 6,62 S
bonne journée
a+
Papou
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Générer une liste de combinaisons

Salut Papou,

Mon ordi est un 2 Ghz, mais il va avoir 3 ans...

Je me suis amusé à détailler le temps de traitement pour les arrangements :

- traitement des 3 boucles ....... 3,25 s
- copie du tableau sur la feuille...8,50 s

A+
 

Looolo76

XLDnaute Nouveau
Re : Générer une liste de combinaisons

Bonjour à tous,

Je me permets de relancer cette discussion qui date tout de même un pe:)

J'ai exactement le même besoin que Nohrad.

La seule différence est qu'au lieu de souhaiter générer les combinaisons à partir de 3 listes, je souhaite en générer à partir de 4 , voire 5 ou plus
Je n'y connais rien en macro..mais peut-on, à partir de la macro programmée par job75, la modifier pour pouvoir faire le traitement sur un autre nombre de listes?

Merci d'avance pour votre aide
Laurent
 

job75

XLDnaute Barbatruc
Re : Générer une liste de combinaisons

Bonsoir Looolo76,

Je vous avais conseillé par MP d'être clair et précis si vous vouliez des réponses.

De quoi s'agit-il, de combinaisons ou d'arrangements ? La différence a été clairement expliquée sur ce fil.

Quant à ceci :

La seule différence est qu'au lieu de souhaiter générer les combinaisons à partir de 3 listes, je souhaite en générer à partir de 4 , voire 5 ou plus
on ne fait pas joujou n'importe comment avec les combinaisons ou les arrangements, car leur nombre augmente exponentiellement et peut dépasser rapidement les possibilités des machines, que ce soit en durée de calcul ou en capacité de stockage.

Si vous regardez 30 secondes les fichiers que j'ai déposés ici, vous verrez que les 3 listes contiennent peu d'éléments : 40+30+20, et ça prend tout de même du temps.

Enfin montrez-nous votre fichier, on vous dira s'il est possible de faire quelque chose.

A+
 

job75

XLDnaute Barbatruc
Re : Générer une liste de combinaisons

Re,

Puisqu'on repasse par là, j'en profite pour améliorer les macros des 2 fichiers.

Au lieu d'étudier les 3 plages de cellules, on étudie 3 tableaux avec leurs valeurs.

Combinaisons => 0,38 s
Arrangements => 9,00 s

J'étais un peu jeune à l'époque :)

A+
 

Fichiers joints

Looolo76

XLDnaute Nouveau
Re : Générer une liste de combinaisons

Merci de votre réponse job75

Désolé, j'avais pourtant essayé d'être clair, pas assez manifestement :)

Il s'agit bien de combinaisons (et non arrangements).
Par ailleurs je devrais avoir besoin de 5 ou 6 listes à combiner (au max).
dont une seule très longue (200 termes environ).
ci-joint un exemple de fichier.
effectivement on arrive à des nombres astronomiques de combinaison.
le délai de traitement n'est pour moi pas un facteur grave.

Voilà, à votre disposition pour plus de précision si nécessaire.

Bonne soirée
Merci!
Laurent
 

Fichiers joints

job75

XLDnaute Barbatruc
Re : Générer une liste de combinaisons

Re,

Merci pour les précisions, mais :

ci-joint un exemple de fichier.
il faut le fichier réel avec toutes les listes à traiter.

Ici il n'y a que 3 feuilles...

Normalement je ne serai pas libre avant mercredi après-midi 09/02, désolé.

A+
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Générer une liste de combinaisons

Bonjour Looolo76, le forum,

Je vous ai fait le travail avant de partir.

Ce n'est pas compliqué : il faut autant de boucles que de listes, sans oublier de compléter la ligne :

tablo(col, lig) = txt1 & "-" & txt2 & "-" & txt3 & "-" & txt4

Chez moi (Excel 2003) la durée du traitement est de 13 s.

Vous devriez être capable de vous débrouiller pour 5 listes je pense :)

A+
 

Fichiers joints

Looolo76

XLDnaute Nouveau
Re : Générer une liste de combinaisons

Bonjour Job75,

Merci beaucoup!!!
en fait,oups!, je suis désolé, mais je vous ai envoyé un fichier avec une macro qui donne les résultats en tableau. or je souhaitais les résultats sur une seule colonne..
est-ce possible de retoucher la macro dans ce sens?
bon j'espère que je ne vous en demande pas trop ..:)

merci,
Laurent
 

job75

XLDnaute Barbatruc
Re : Générer une liste de combinaisons

Bonsoir Laurent,

en fait,oups!
Tout petit gémissement, à votre place j'aurais dit Arrrrrrrrrrrrrrghhhhhhhhh !!!

Avec votre fichier, il y a 241380 combinaisons à afficher.

Sur une seule colonne il faut bien sûr Excel 2007 ou 2010.

C'est le moment d'acheter une nouvelle version si vous êtes sur Excel 2003.

J'ai revu la macro sur mon portable avec Excel 2010, voir fichier .xlsm joint.

A+
 

Fichiers joints

Discussions similaires


Haut Bas