> Tous les forumsBureautique

 Calcul excelSujet résolu
Statut du sujet : RESOLU Imprimer
 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

 Afficher le profil de dlxpatEnvoyer un message privé à dlxpat
 
 
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)

Afficher le profil de Bérylion Voir la configuration de BérylionEnvoyer un message privé à Bérylion
 Revenir en haut de la page
 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.

Afficher le profil de dlxpatEnvoyer un message privé à dlxpat
 Revenir en haut de la page
 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

Afficher le profil de JandyEnvoyer un message privé à Jandy
  Revenir en haut de la page
 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...
Afficher le profil de Bérylion Voir la configuration de BérylionEnvoyer un message privé à Bérylion
 Revenir en haut de la page
 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
Afficher le profil de Bérylion Voir la configuration de BérylionEnvoyer un message privé à Bérylion
 Revenir en haut de la page
 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)
Afficher le profil de Bérylion Voir la configuration de BérylionEnvoyer un message privé à Bérylion
 Revenir en haut de la page
 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

Afficher le profil de JandyEnvoyer un message privé à Jandy
  Revenir en haut de la page
Haut de la page 
Inscrivez-vous !
- Posez vos questions

- Résolvez vos problèmes

- Aidez les autres

- Participez et créez vos discussions

- Dialoguez en privé avec d'autres membres

- Suivez vos sujets préférés

- Affichez les signatures des membres

TOUT EST GRATUIT !

Je crée mon compte



Vous avez besoin d'aide ?
Des centaines d'experts sont à votre disposition sur les forums PC Astuces pour vous aider gratuitement, 24h/24, 7j/7.

Les derniers sujets résolus !
 

 > Tous les forumsBureautique

 
Forum PC Astuces© 1997-2008 WebastucesAller en haut de la page