XL 2013 Combiner des sommes de nombres.

dionys0s

XLDnaute Impliqué
Bonjour le forum,

j'aimerais développer la fonction suivante :
En argument de la fonction , j'ai N nombres (ParamArray). Chacun de ces nombres est unique et supérieur à zéro.
En sortie, j'obtiens la liste de toutes les sommes possibles de 1 à N nombres parmi N.

Donc par exemple un code du style
VB:
Sub MaSub

  Dim Elt As Variant

  For Each Elt In MaFonction(2, 8, 3)
    Debug.Print Elt
  Next Elt

End Sub

Function MaFonction(ParamArray LesNombres() As Variant) as Variant()

End Function
renverrait 2, 8, 3,10 (2 + 8), 5 (2 + 3), 11 (8 + 3) et 13 (2 + 8 + 3)

Donc je sais pas si je résume ça correctement, mais il me faut lister toutes les sommes de 1 à N nombres parmi N.

D'avance, merci pour votre aide.
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Je dirais :
VB:
Function MaFonction(ParamArray LesNombres() As Variant) As Variant()
Dim T(), N&, P&
ReDim T(1 To 2 ^ (UBound(LesNombres) + 1) - 1)
For N = 1 To UBound(T)
   For P = 0 To UBound(LesNombres)
      If 2 ^ P And N Then T(N) = T(N) + LesNombres(P)
      Next P, N
MaFonction = T
End Function
 

Discussions similaires

Réponses
11
Affichages
523

Statistiques des forums

Discussions
312 196
Messages
2 086 101
Membres
103 116
dernier inscrit
kutobi87