XL 2016 [résolu]Additions possibles pour atteindre une valeur cible

  • Initiateur de la discussion Initiateur de la discussion Etn
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Etn

XLDnaute Occasionnel
Bonjour,

Je sais pas trop comment l'exprimer donc je suis pas sûr que le titre signifie grand chose...

Bref, je souhaite atteindre une valeur cible à partir d'une addition d'une liste de nombres prédéfinie.

Exemple : dans ma colonne A j'ai une plage de 10 cellules avec des nombres allant de 1 à 10.
Que faut il additionner pour atteindre 25 ?
(Donc 10+9+6, ou 8+6+4+5+2, ou 10+8+7, etc)

L'idée serait d'avoir la liste des possibilités pour atteindre une valeur cible à partir de l'addition d'une liste de nombres.

J'espère avoir été clair dans mon explication.

Merci d'avance pour votre aide.

Etn
 
Cette fonction perso renverrait dans une plage matricielle les nombres cherchés :
VB:
Function ListeSomme(ByVal Somme As Double, ByVal Rng As Range)
   Dim TDon(), TEss(), MeilDif As Double, N As Long, SEss As Double, LR As Byte, LD As Byte, Dif As Double
   TDon = Rng.Value
   MeilDif = (2 ^ 53 - 1) * 2 ^ 971
   For N = 1 To 2 ^ UBound(TDon, 1) - 1
      ReDim TEss(1 To UBound(TDon, 1), 1 To 1): SEss = 0: LR = 0
      For LD = 1 To UBound(TDon, 1)
         If N And 2 ^ (LD - 1) Then
            LR = LR + 1: TEss(LR, 1) = TDon(LD, 1)
            SEss = SEss + TDon(LD, 1): End If
         Next LD
      Dif = Abs(SEss - Somme)
      If Dif < MeilDif Then
         While LR < UBound(TEss, 1): LR = LR + 1: TEss(LR, 1) = "": Wend
         MeilDif = Dif: ListeSomme = TEss: End If
      Next N
   End Function
 
Bonjour @Etn, @Dranreb 😉,

Il y a quelques années, j'avais commis une macro assez rapide pour un lettrage de factures et/ou avoirs.
Il peut aussi servir à répondre à la question posée par @Etn.
les instructions sont dans le fichier joint.

En résumé :
  • mettre les 10 valeurs dans la colonne E à partir de E5
  • mettre en E3 la somme à composer
  • cliquer sur le bouton Hop
rem : si sur la feuille "Result", on sélectionne une cellule d'une solution , alors les constituants se mettent en gras dans l'en-tête en ligne 4
 

Pièces jointes

Dernière édition:
Je m'y connais un peu en VBA mais je comprends pas comment utiliser une fonction perso.
Elle renvoie un tableau, alors on peut l'affecter à un autre tableau.
Sinon on peut aussi l'utiliser dans une formule matricielle de cellules. Par exemple :
En B3:B7 validé par Ctrl+Maj+Entrée :
Code:
=ListeSomme(B$1;$A$2:$A$6)
Les nombres d'origine étant supposés en A2:A11, et la somme à approcher en B1.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour