Comment générer toutes les combinaisons ?

pipo

XLDnaute Nouveau
J'ai une liste de n lignes avec 3 colonnes
exemple :
ABC
DEF
GHI

Je souhaite afficher toutes les combinaisons , sans les doublons
exemple :

ADG
ADH
ADI
AEG
AEH
AEI
...etc

je cherche à faire une macro en VBA pour générer toutes les combinaisons possibles (à n lignes).
Merci de votre aide.
 

cibleo

XLDnaute Impliqué
Re : Comment générer toutes les combinaisons ?

Bonjour Pipo,

Soit plus explicite, on n'a pas vraiment compris.

Au départ ta question c'est de l'arithmétique.

Exemple : soit 6 nombres 1, 2, 3, 4, 5 et 6

Il y a 720 combinaisons soit 6*5*4*3*2*1

1.2.3.4.5.6
1.2.3.4.6.5 etc...

Au bout du compte çà peut faire des quantités astronomiques de combinaisons.

Cibleo
 

pipo

XLDnaute Nouveau
Re : Comment générer toutes les combinaisons ?

Je precise un peu
exemples de 3 elements (3 lignes)

ABC
DEF
GHI

Il y a 27 combinaisons 3^3 :

A D G
A D H
A D I
A E G
A E H
A E I
A F G
A F H
A F I
B D G
B D H
B D I
B E G
B E H
B E I
B F G
B F H
B F I
C D G
C D H
C D I
C E G
C E H
C E I
C F G
C F H
C F I

en fait je cherche à faire une fonctions récursive pour me génerer toutes les combinaisons à n elements mais sans afficher de doublons ( exemple ADG et AGD est un doublon)
 

pipo

XLDnaute Nouveau
Re : Comment générer toutes les combinaisons ?

Merci Skoobi
c'est exactement ça .

sauf que je souhaite faire une fonction pour n lignes
car je ne veut pas imbriquer n boucles.

j'ai entendu parler de fonctions récursives...
 

skoobi

XLDnaute Barbatruc
Re : Comment générer toutes les combinaisons ?

Re,

voici pour plus de 3 lignes.
 

Pièces jointes

  • combinaisons2.zip
    8.4 KB · Affichages: 615
  • combinaisons2.zip
    8.4 KB · Affichages: 578
  • combinaisons2.zip
    8.4 KB · Affichages: 638

pipo

XLDnaute Nouveau
Re : Comment générer toutes les combinaisons ?

ça ne genere pas toutes les combinaisons
il y a 243 combinaisons pour 5 lignes (3^5 = 243)

au delà de 4 lignes ça génere toujours 81 combinaisons ?
j'dois modifier une varibales dans le codes ?
 

skoobi

XLDnaute Barbatruc
Re : Comment générer toutes les combinaisons ?

oui, c'est vrai, la macro s'arrêtait à la première ligne.
Cette fois-ci je pense que c'est bon:

Code:
Sub combi()
Columns("D").Clear
For lig1 = 1 To [A1].End(xlDown).Row - 2
    For i = 1 To 3
        For lig2 = lig1 +1 To [A1].End(xlDown).Row - 1
            For j = 1 To 3
                For k = 1 To 3
                    [D65536].End(xlUp).Offset(1, 0).Value = Cells(lig1, i).Value & _
                    Cells(lig2, j).Value & Cells(lig2 + 1, k).Value
                Next
            Next
        Next
    Next
Next
End Sub
Edit: au fait, ça ne fait pas 243 possibilités car ce nombre inclus les doublons.
 
Dernière édition:

pipo

XLDnaute Nouveau
Re : Comment générer toutes les combinaisons ?

Pierrejean ,

il me faut des combinaison du type :
ADG
ADH
ADI
AEG
AEH
AEI
...etc

là ton exemple genere des combinaisons de ce type :
A B C
A B D
A C D
A B E
A C E

Skoobi , ton exemple ne convient pas car il ne genere pas le bon nombre de combinaisons
 

skoobi

XLDnaute Barbatruc
Re : Comment générer toutes les combinaisons ?

Re bonjour,
salut Pierrejean :),

Skoobi , ton exemple ne convient pas car il ne genere pas le bon nombre de combinaisons

Peux-tu préciser stp car comme je te l'ai dis, d'après moi le total de 243 contiendrai les "doublons" à moins que je me trompe.
Si je regarde de nouveau ton exemple, ça devrait coller ou alors j'ai rien compris.
Il me semble que la combinaison est un peu particulière.
 

pipo

XLDnaute Nouveau
Re : Comment générer toutes les combinaisons ?

Bonjour
Non c'est bien 243 combinaisons pour 5 lignes
3^5=243

voici un exemple de ce que j'ai fait avec des FOR imbriqués
 

Pièces jointes

  • testcombin0.xls
    32 KB · Affichages: 412
Dernière édition:

skoobi

XLDnaute Barbatruc
Re : Comment générer toutes les combinaisons ?

Re,

euhhh je crois qu'on c'est mal compris ou plutôt que tu as mal expliqués ta demande.
D'ailleurs pour juste dire que le nombre de combinaisons était pas bonne alors que tu es passé à 5 valeurs sans le signaler.....:mad:
 

zeb33

XLDnaute Junior
Re : Comment générer toutes les combinaisons ?

Salut à tous,

Voir le fichier joint,

le nombre de combinaisons me semble être trés différent, car ca ressemble à une progression et non un calcul combinatoire de type 3^5.
3^5 c'est valable pour toutes les combinaisons de 5 caractères parmi tes listes, la preuve que c'est pas la bonne idée, calculons le nombre de combinaisons avec ABC et DEF, réponse ZERO, puisque l'on ne peut pas avoir 3 caractères. Or avec 3^2=9, on a pas la bonne réponse.

Zeb
 

Pièces jointes

  • combinaisons V3.zip
    18 KB · Affichages: 414

CBernardT

XLDnaute Barbatruc
Re : Comment générer toutes les combinaisons ?

Bonsoir Pipo et tout le forum,

Si j'ai bien compris, le nombre d'arrangement est :

n = Nbre lignes

=n*(n-1)*(n-2)/6*3^3

Une solution par macro :

Sub combinaisons()
Dim Lig As Integer, i As Integer, j As Integer, k As Integer, X As Byte, Y As Byte, Z As Byte, N As Integer
Application.ScreenUpdating = False
Columns("E").Clear
Lig = Range("A65536").End(xlUp).Row
For i = 1 To Lig - 2
For X = 1 To 3
For j = i + 1 To Lig - 1
For Y = 1 To 3
For k = j + 1 To Lig
For Z = 1 To 3
N = N + 1
Cells(N, 5) = Cells(i, X) & " " & Cells(j, Y) & " " & Cells(k, Z)
Next Z
Next k
Next Y
Next j
Next X
Next i
End Sub

Cordialement

Bernard
 

Pièces jointes

  • ArrangementParTroisLignes.xls
    40 KB · Affichages: 570
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 103
Messages
2 085 319
Membres
102 862
dernier inscrit
Emma35400