|
| dlxpat | Posté le 28/07/2008 @ 14:28 |
Petit astucien
23 Messages
| Bonjour à tous,
je voudrais dans un fichier EXCEL trouver une formule ou un calcul, qui me permette à partir d'un nombre de lots (par exemple), connaitre toutes les combinaisons possibles d'asoociation. Exemple :
j'ai quatre lots que je veux associer deux par deux : je peux avoir 1-3 ; 1-2 ; 1-4 ; 2-3 ; 2-4 ; 3-4
Merci d'avanve
|
| |
| |
| Publicité |
|
|
| Bérylion | Posté le 28/07/2008 à 15:45 |
Astucien
2321 Messages
| Message original par dlxpat
Bonjour à tous,
je voudrais dans un fichier EXCEL trouver une formule ou un calcul, qui me permette à partir d'un nombre de lots (par exemple), connaitre toutes les combinaisons possibles d'asoociation. Exemple :
j'ai quatre lots que je veux associer deux par deux : je peux avoir 1-3 ; 1-2 ; 1-4 ; 2-3 ; 2-4 ; 3-4
Merci d'avanve
Salut
sans plus d'explications, je pencherais pour une simple "combinatoire" : =COMBIN(nbre_d_elements;nbre_d_elements_choisis)
dans ton cas : =COMBIN(4;2) = 6 (1&2;1&3;1&4;2&3;2&4;3&4)
ce cas est le cas général dit "sans remise" (c-a-d que tu peux pas avoir 2 fois le meme)
dans le cas "avec remise", la formule est à peine plus compliquée :
ça donne qqch comme =combin(nb_d_elements + nb_d_elements_choisis -1;nb_d_elements_choisi)
dans ton cas : =combin(5;2) = 10 (1&1;1&2;1&3;1&4;2&2;2&3;2&4;3&3;3&4;4&4)

|
| |
|
| dlxpat | Posté le 31/07/2008 à 11:48 |
Petit astucien
23 Messages
| J'ai tardé un peu à répondre et j'en suis désolé. MAis je vais étudier cette proposition. En tous cas, encore merci. |
| |
|
| Jandy | Posté le 31/07/2008 à 14:24 |
Petit astucien
18 Messages
| Bonjour,
Je m'intéresse aussi à cette question.
Comment peut-on, à partir de cette formule, afficher les résultats, c.a.d les différentes combinaisons que l'on peut obtenir?
Merci bien
Jandy |
| |
|
| Bérylion | Posté le 31/07/2008 à 14:44 |
Astucien
2321 Messages
| Jandy a écrit :
Bonjour,
Je m'intéresse aussi à cette question.
Comment peut-on, à partir de cette formule, afficher les résultats, c.a.d les différentes combinaisons que l'on peut obtenir?
Merci bien
Jandy
très franchement, je sais pas si on peut généraliser
pour le cas présent ( C(n,2) ), on peut s'en tirer avec un truc simple du genre :
Sub combinaisons_2() Dim j% For i% = 1 To ActiveCell.Value - 1 k% = i Do j = j + 1 k = k + 1 Cells(ActiveCell.Row + j, ActiveCell.Column).Value = i & " " & k Loop Until k = ActiveCell.Value Next End Sub
le résultat est déroulé sous la cellule active.
pour généraliser à C(n,k), c'est de la haute voltige, et j'ai pas le temps de m'y consacrer en ce moment...
|
| |
|
| Bérylion | Posté le 31/07/2008 à 14:58 |
Astucien
2321 Messages
| petite précision : c'est SANS remise !!
AVEC - mais toujours dans le cas C(n,2) - ça donne :
Sub combinaisons_2avec() Dim j% For i% = 1 To ActiveCell.Value k% = i Do j = j + 1 Cells(ActiveCell.Row + j, ActiveCell.Column).Value = i & " " & k k = k + 1 Loop Until k = ActiveCell.Value + 1 Next End Sub
 Modifié par Bérylion le 31/07/2008 15:11 |
| |
|
| Bérylion | Posté le 31/07/2008 à 18:04 |
Astucien
2321 Messages
| la gaterie façon "roi des shadocks" (salut à toi  ) :
Function C_2n(n, Optional remise As Boolean = False)
Application.Volatile
Dim j%, temp()
ReDim temp(1 To Application.WorksheetFunction.Combin(n - remise, 2))
For i% = 1 To n - 1 - remise k% = i Do j = j + 1 k = k + 1 + remise temp(j) = i & " " & k k = k - remise Loop Until k = n - remise Next
C_2n = Application.Transpose(temp)
End Function
ça ne marche que pour C(n,2) mais avec ou sans remise...
attention : formule Matricielle à entrer sur le nombre de cellules égal à C(n,2)
|
| |
|
| Jandy | Posté le 04/08/2008 à 19:58 |
Petit astucien
18 Messages
| Merci pour les infos,
Un peu complexe à priori mais je vais essayer
Bonne soirée à tous
Jandy |
| |
|
|
| Haut de la page |