Bonjour Olivier,
Tu trouveras en pièce jointe un exemple qui, si je l'ai bien compris, devrait répondre au problème posé.
Il évalue en colonne A et B toutes les combinaisons possibles des cellules (Contigües) A1:An. Il supprime toutes les combinaisons équivalentes (Ex: 1,4 et 4,1), ainsi que tous les doublons (Ex: 4,1 et 4,1).
=====================================================
Private Sub CommandButton1_Click()
Dim InputRange, OutPutRange As Range
Dim Val As String
'Initialisation
Set InputRange = Range("A1:" & Range("A1").End(xlToRight).Address)
'Enumération des combinaisons
OutputRow = 2
For i = 1 To InputRange.Columns.Count
For j = 1 To InputRange.Columns.Count
If i <> j Then
Rows(OutputRow).Cells(1, 1) = InputRange.Cells(1, i).Value
Rows(OutputRow).Cells(1, 2) = InputRange.Cells(1, j).Value
OutputRow = OutputRow + 1
End If
Next j
Next i
Set OutPutRange = Range("A2:B" & OutputRow - 1)
'Arrangement des combinaisons pour détection des symétries
For Each Row In OutPutRange.Rows
If Row.Cells(1, 2) < Row.Cells(1, 1) Then
Val = Row.Cells(1, 1).Value
Row.Cells(1, 1).Value = Row.Cells(1, 2).Value
Row.Cells(1, 2).Value = Val
End If
Next Row
'Tri des combinaisons pour éliminer les combinaisons doubles
OutPutRange.Sort Key1:=Range("A2"), Order1:=xlAscending, Key2:=Range("B2"), _
Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2:=xlSortNormal
'Elimination des combinaisons doubles
For Each Row In OutPutRange.Rows
If Row.Cells(1, 1).Value = "" Then Exit For
If Row.Cells(1, 1).Value = Row.Offset(1, 0).Cells(1, 1).Value And _
Row.Cells(1, 2).Value = Row.Offset(1, 0).Cells(1, 2).Value Then
Rows(Row.Offset(1, 0).Row).Delete Shift:=xlUp
End If
Next Row
End Sub
=====================================================
Bon courage pour la suite ....
Omicron