1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| Sub subCombine(ByRef RngDonnees As Excel.Range, ByRef rngResult As Excel.Range, ByVal NbRepete As Integer)
Dim i As Long, j As Long, k As Integer, h As Long 'variables des boucles
Dim varD As Variant, NbVal As Long, Result() As String, NbResult As Long
'chargement des données
varD = RngDonnees.Value
'nombre de valeurs, nombre de combinaisons, redimensionnement du tableau de résultats
NbVal = UBound(varD) - LBound(varD) + 1
NbResult = NbVal * (NbVal - 1) * NbRepete
ReDim Result(1 To NbVal * (NbVal - 1) * NbRepete, 1 To 1)
'initialisation (inutile, juste pour la clarté) de h
h = 0
'élaboration des combinaisons
For i = 1 To NbVal - 1
For j = i + 1 To NbVal
For k = 1 To NbRepete
Result(h + k, 1) = varD(i, 1) & " - " & varD(j, 1)
Next k
h = h + NbRepete
Next j
Next i
'rangement du résultat
rngResult.Worksheet.Range(rngResult.Cells(1, 1), rngResult.Cells(1, 1).Offset(NbResult - 1, 0)) = Result
End Sub |
Partager