Lister les combinaisons de n chiffres pris 2 a 2

claude09

XLDnaute Occasionnel
Bonsoir.Ma demande n'est pas originale,j'ai bien consulté des sujets sur ce problème qui sont bien plus compliqués que ma demande.La seule difficulté ,serait d'afficher les couplés sur 2 colonnes.
Ci joint un fichier.
Merci de vos réponses.
 

Pièces jointes

  • Classeur couples.xlsm
    8.3 KB · Affichages: 77

Dranreb

XLDnaute Barbatruc
Bonjour.
Pour 2 j'ai cette fonction perso :
VB:
Function Versus(ByVal VS As Long) As Variant()
Dim J As Long, A As Long
A = Int(Sqr(2 * VS - 1.75) + 1.5)
J = VS - A * (A - 3) \ 2 - 1
Versus = Array(J, A)
End Function
Elle serait utilisable directement dans une formule en F3, à propager sur 78 lignes et 2 colonnes :
Code:
=INDEX($D$3:$D$15;INDEX(Versus(LIGNE()-2);1;COLONNE()-5);1)
Attention, elle les sort dans un ordre différent. J'ai également la fonction inverse :
VB:
Function NumVS(ByVal J As Long, ByVal A As Long) As Long
If J > A Then
   NumVS = J * (J - 3) \ 2 + A + 1
ElseIf J < A Then
   NumVS = A * (A - 3) \ 2 + J + 1
Else: NumVS = 0: End If
If NumVS <= 0 Then Err.Raise 9999, , "NumVS(" & J & ", " & A & ") impossible."
End Function
 

Dranreb

XLDnaute Barbatruc
Si vous voulez des formules plus simple sans fonction perso mais 2 colonnes supplémentaires vous pouves faire :
En H3 :
Code:
1
En H4, à propager sur 77 lignes :
Code:
=MOD(H3;I3-1)+1
En I3 :
Code:
2
En I4, à propager sur 77 lignes :
Code:
=I3+(H4=1)
En F3, à propager sur 78 lignes et 2 colonnes :
Code:
=DECALER($D$2;H3;0)
 

job75

XLDnaute Barbatruc
Bonsoir claude09, Bernard,

Une solution sans colonnes auxiliaires à condition d'accepter des lignes séparatrices.

En G2 à tirer vers le bas :
Code:
=SIERREUR(INDEX(DECALER(D$3:D$15;NB.SI(G$1:G1;"-");;MAX(NBVAL(D$3:D$15)-NB.SI(G$1:G1;"-");));LIGNE()-EQUIV("zzz";G$1:G1)-LIGNE(G$1)+1);"-")
En F2 à tirer vers le bas :
Code:
=SI(G2="-";"-";DECALER(D$2;NB.SI(F$1:F1;"-");))
Fichier joint.

Bonne fin de soirée.
 

Pièces jointes

  • Classeur couples(1).xlsm
    18.6 KB · Affichages: 59

job75

XLDnaute Barbatruc
Bonjour le fil, le forum,

Formule matricielle en G2 pour traiter aussi bien des textes que des nombres :
Code:
=SIERREUR(INDEX(DECALER(D$3:D$15;NB.SI(G$1:G1;"-");;MAX(NBVAL(D$3:D$15)-NB.SI(G$1:G1;"-");));LIGNE()-EQUIV("zzz";SI(G$1:G1="-";G$1:G1))-LIGNE(G$1)+1);"-")
A valider par Ctrl+Maj+Entrée.

Fichier (2).

Bonne journée.
 

Pièces jointes

  • Classeur couples(2).xlsm
    24.6 KB · Affichages: 58

Discussions similaires

Réponses
2
Affichages
569

Statistiques des forums

Discussions
312 103
Messages
2 085 312
Membres
102 860
dernier inscrit
fredo67