XL 2019 Lister les combinaisons de couples possibles dans une colonne

yvanhoe

XLDnaute Nouveau
Bonjour,
Dans une colonne j'ai une liste de lettre (ABCD...) Quelle est la fonction pour afficher, dans une autre colonne, tous les couples possibles (AB, AC, AD, BC, BD...)
Merci beaucoup !
 

yvanhoe

XLDnaute Nouveau
Bonjour,
justement, ma question était :
Combien de lettres avez-vous après les points de suspension ? 2,3 4 ... 22 ?
Cordialement,
Bonjour, comme c'est pour organiser des rencontres entre équipes, je ne connais pas encore le nombre total mais je dirais max 24. Maintenant comme il y a plusieurs catégories, je pourrais ne faire que 6 équipes par catéfgories et donc répéter après la formule... donc 6 lettres (et max 24)
 

Gégé-45550

XLDnaute Accro
Bonjour, comme c'est pour organiser des rencontres entre équipes, je ne connais pas encore le nombre total mais je dirais max 24. Maintenant comme il y a plusieurs catégories, je pourrais ne faire que 6 équipes par catéfgories et donc répéter après la formule... donc 6 lettres (et max 24)
Re
Si vous cherchez un peu sur le forum et dans les ressources, vous trouverez plein de trucs pour organiser des concours et les tirages au sort qui vont avec.
Lister tous les couples choisis parmi 6 équipes, cela fait 15 résultats, ça se fait à la main :
Combinaisons

1​
A - B
2​
A - C
3​
A - D
4​
A - E
5​
A - F
6​
B - C
7​
B - D
8​
B - E
9​
B - F
10​
C - D
11​
C - E
12​
C - F
13​
D - E
14​
D - F
15​
E - F
Cordialement,
 

yvanhoe

XLDnaute Nouveau
Bonjour,
justement, ma question était :
Combien de lettres avez-vous après les points de suspension ? 2,3 4 ... 22 ?
Cordialement,

Re
Si vous cherchez un peu sur le forum et dans les ressources, vous trouverez plein de trucs pour organiser des concours et les tirages au sort qui vont avec.
Lister tous les couples choisis parmi 6 équipes, cela fait 15 résultats, ça se fait à la main :
Combinaisons

1​
A - B
2​
A - C
3​
A - D
4​
A - E
5​
A - F
6​
B - C
7​
B - D
8​
B - E
9​
B - F
10​
C - D
11​
C - E
12​
C - F
13​
D - E
14​
D - F
15​
E - F
Cordialement,
oui, merci. Moi je cherche la formule !
 

mapomme

XLDnaute Barbatruc
Bonsoir à tous :),

Si vous tenez absolument à le faire avec des formules (et c'est votre droit 😉), voici une possibilité en utilisant la colonne B comme colonne auxiliaire :

Colonne A : les valeurs à "coupler"

Colonne B : en B1 mettre la valeur 1. Puis en B2, mettre la formule suivante et la recopier vers le bas (jusqu'à obtenir des cellules sans nombre - dans le classeur joint, on est allé jusqu'en ligne 1000). La formule en B2 est :
VB:
=SI(LIGNE()>(NBVAL($A$1:$A$99))*(NBVAL($A$1:$A$99)-1)/2;"";SI(NB.SI(B$1:B1;B1)<NBVAL($A$1:$A$99)-B1;B1;B1+1))

Colonne C (ce sera le résultat) : mettre en C1 la formule suivante et la recopier vers le bas (même niveau que la colonne B). La formule en C1 à recopier vers le bas est :
VB:
=SI(B1="";"";INDEX(A:A;B1) & "-" & INDEX(A:A;B1+NB.SI(B$1:B1;B1)))
 

Pièces jointes

  • yvanhoe- former couples- v1.xlsx
    57.1 KB · Affichages: 13
Dernière édition:

Dranreb

XLDnaute Barbatruc
Bonsoir.
Voyez si un des systèmes de tirage pourrait convenir.
Le classeur contient d'ailleurs aussi un fonction qui renvoie un Arrays de 2 n° correspondant à un indice commençant à 0 pour le couple {1, 2} :
VB:
Public Function JAVersus(ByVal VS As Long)
   Dim J As Long, A As Long
   A = Int(Sqr(2 * VS + 0.25) + 1.5)
   J = VS - A * (A - 3) \ 2
   JAVersus = Array(J, A)
   End Function
Et aussi la fonction inverse qui renvoie l'indice correspondant à une paire de numéros spécifiés :
Code:
Public Function VersusJA(ByVal J As Long, ByVal A As Long) As Long
   If A < J Then J = J - A: A = J + A: J = A - J
   If A > J Then VersusJA = A * (A - 3) \ 2 + J Else VersusJA = -1
   If VersusJA < 0 Then Err.Raise 9999, , "VersusJA(" & J & ", " & A & ") impossible."
   End Function
 

Pièces jointes

  • ListeAléat.xlsm
    569.7 KB · Affichages: 10

yvanhoe

XLDnaute Nouveau
Bonsoir à tous :),

Si vous tenez absolument à le faire avec des formules (et c'est votre droit 😉), voici une possibilité en utilisant la colonne B comme colonne auxiliaire :

Colonne A : les valeurs à "coupler"

Colonne B : en B1 mettre la valeur 1. Puis en B2, mettre la formule suivante et la recopier vers le bas (jusqu'à obtenir des cellules sans nombre - dans le classeur joint, on est allé jusqu'en ligne 1000). La formule en B2 est :
VB:
=SI(LIGNE()>(NBVAL($A$1:$A$99))*(NBVAL($A$1:$A$99)-1)/2;"";SI(NB.SI(B$1:B1;B1)<NBVAL($A$1:$A$99)-B1;B1;B1+1))

Colonne C (ce sera le résultat) : mettre en C1 la formule suivante et la recopier vers le bas (même niveau que la colonne B). La formule en C1 à recopier vers le bas est :
VB:
=SI(B1="";"";INDEX(A:A;B1) & "-" & INDEX(A:A;B1+NB.SI(B$1:B1;B1)))
9a
Bonsoir.
Voyez si un des systèmes de tirage pourrait convenir.
Le classeur contient d'ailleurs aussi un fonction qui renvoie un Arrays de 2 n° correspondant à un indice commençant à 0 pour le couple {1, 2} :
VB:
Public Function JAVersus(ByVal VS As Long)
   Dim J As Long, A As Long
   A = Int(Sqr(2 * VS + 0.25) + 1.5)
   J = VS - A * (A - 3) \ 2
   JAVersus = Array(J, A)
   End Function
Et aussi la fonction inverse qui renvoie l'indice correspondant à une paire de numéros spécifiés :
Code:
Public Function VersusJA(ByVal J As Long, ByVal A As Long) As Long
   If A < J Then J = J - A: A = J + A: J = A - J
   If A > J Then VersusJA = A * (A - 3) \ 2 + J Else VersusJA = -1
   If VersusJA < 0 Then Err.Raise 9999, , "VersusJA(" & J & ", " & A & ") impossible."
   End Function
Bonsoir.
Voyez si un des systèmes de tirage pourrait convenir.
Le classeur contient d'ailleurs aussi un fonction qui renvoie un Arrays de 2 n° correspondant à un indice commençant à 0 pour le couple {1, 2} :
VB:
Public Function JAVersus(ByVal VS As Long)
   Dim J As Long, A As Long
   A = Int(Sqr(2 * VS + 0.25) + 1.5)
   J = VS - A * (A - 3) \ 2
   JAVersus = Array(J, A)
   End Function
Et aussi la fonction inverse qui renvoie l'indice correspondant à une paire de numéros spécifiés :
Code:
Public Function VersusJA(ByVal J As Long, ByVal A As Long) As Long
   If A < J Then J = J - A: A = J + A: J = A - J
   If A > J Then VersusJA = A * (A - 3) \ 2 + J Else VersusJA = -1
   If VersusJA < 0 Then Err.Raise 9999, , "VersusJA(" & J & ", " & A & ") impossible."
   End Function
Bonsoir à tous :),

Si vous tenez absolument à le faire avec des formules (et c'est votre droit 😉), voici une possibilité en utilisant la colonne B comme colonne auxiliaire :

Colonne A : les valeurs à "coupler"

Colonne B : en B1 mettre la valeur 1. Puis en B2, mettre la formule suivante et la recopier vers le bas (jusqu'à obtenir des cellules sans nombre - dans le classeur joint, on est allé jusqu'en ligne 1000). La formule en B2 est :
VB:
=SI(LIGNE()>(NBVAL($A$1:$A$99))*(NBVAL($A$1:$A$99)-1)/2;"";SI(NB.SI(B$1:B1;B1)<NBVAL($A$1:$A$99)-B1;B1;B1+1))

Colonne C (ce sera le résultat) : mettre en C1 la formule suivante et la recopier vers le bas (même niveau que la colonne B). La formule en C1 à recopier vers le bas est :
VB:
=SI(B1="";"";INDEX(A:A;B1) & "-" & INDEX(A:A;B1+NB.SI(B$1:B1;B1)))

Bonsoir à tous :),

Si vous tenez absolument à le faire avec des formules (et c'est votre droit 😉), voici une possibilité en utilisant la colonne B comme colonne auxiliaire :

Colonne A : les valeurs à "coupler"

Colonne B : en B1 mettre la valeur 1. Puis en B2, mettre la formule suivante et la recopier vers le bas (jusqu'à obtenir des cellules sans nombre - dans le classeur joint, on est allé jusqu'en ligne 1000). La formule en B2 est :
VB:
=SI(LIGNE()>(NBVAL($A$1:$A$99))*(NBVAL($A$1:$A$99)-1)/2;"";SI(NB.SI(B$1:B1;B1)<NBVAL($A$1:$A$99)-B1;B1;B1+1))

Colonne C (ce sera le résultat) : mettre en C1 la formule suivante et la recopier vers le bas (même niveau que la colonne B). La formule en C1 à recopier vers le bas est :
VB:
=SI(B1="";"";INDEX(A:A;B1) & "-" & INDEX(A:A;B1+NB.SI(B$1:B1;B1)))
Merci beaucoup à tous. La formule de Mapomme est exactement ce que je voulais ! C'est super !
 

yvanhoe

XLDnaute Nouveau
Bonsoir à tous :),

Si vous tenez absolument à le faire avec des formules (et c'est votre droit 😉), voici une possibilité en utilisant la colonne B comme colonne auxiliaire :

Colonne A : les valeurs à "coupler"

Colonne B : en B1 mettre la valeur 1. Puis en B2, mettre la formule suivante et la recopier vers le bas (jusqu'à obtenir des cellules sans nombre - dans le classeur joint, on est allé jusqu'en ligne 1000). La formule en B2 est :
VB:
=SI(LIGNE()>(NBVAL($A$1:$A$99))*(NBVAL($A$1:$A$99)-1)/2;"";SI(NB.SI(B$1:B1;B1)<NBVAL($A$1:$A$99)-B1;B1;B1+1))

Colonne C (ce sera le résultat) : mettre en C1 la formule suivante et la recopier vers le bas (même niveau que la colonne B). La formule en C1 à recopier vers le bas est :
VB:
=SI(B1="";"";INDEX(A:A;B1) & "-" & INDEX(A:A;B1+NB.SI(B$1:B1;B1)))
Si je veux rajouter un titre et une ligne d'espace aux colonnes, soit 2 lignes en haut, est-ce faisable ?
 

Discussions similaires

Statistiques des forums

Discussions
315 127
Messages
2 116 534
Membres
112 771
dernier inscrit
mikadu49