Combinaison pour somme

kenzo1245

XLDnaute Nouveau
Bonjour,

J'ai trouvé un petit programme sur le net qui affiche un message avec toutes les possibilités de termes pour une somme donnée.
J'aimerais juste pouvoir la modifier pour qu'il me donne qu'une seul des possibilités sans chercher toutes les autres en sélectionnant les bonnes cellules.

Merci d'avance.


Sub trouve()

Dim bse, lng As Long, x As Long, u As Long, sol As String
Dim i As Long, j As Long
bse = Selection.Value
lng = UBound(bse, 2) - LBound(bse, 2) - 1
u = bse(1, UBound(bse, 2))
For i = 0 To 2 ^ (lng + 1)
x = 0
For j = 0 To lng
If (i \ (2 ^ j)) Mod 2 Then x = x + bse(1, j + 1)
Next j
If x = u Then
sol = u & "="
For j = 0 To lng
If (i \ (2 ^ j)) Mod 2 Then sol = sol & bse(1, j + 1) & "+"
Next j
MsgBox Left$(sol, Len(sol) - 1)
End If
Next i
End Sub
 

Pièces jointes

  • Combinaison somme.xlsm
    17.9 KB · Affichages: 44

Paf

XLDnaute Barbatruc
Re : Combinaison pour somme

Bonjour,

ci dessous le code modifié
Code:
Sub trouve()
Dim bse, lng As Long, x As Long, u As Long, sol As String
Dim i As Long, j As Long, plage as string
   bse = Selection.Value
   lng = UBound(bse, 2) - LBound(bse, 2) - 1
   u = bse(1, UBound(bse, 2))
   For i = 0 To 2 ^ (lng + 1)
      x = 0
      For j = 0 To lng
         If (i \ (2 ^ j)) Mod 2 Then x = x + bse(1, j + 1)
      Next j
      If x = u Then
        plage = ""
         sol = u & "="
         For j = 0 To lng
            If (i \ (2 ^ j)) Mod 2 Then
                'sol = sol & bse(1, j + 1) & "+"
                plage = plage & Cells(5, j + 4).Address & ","
            End If
         Next j
         plage = Left$(plage, Len(plage) - 1)
         Range(plage).Select
         'MsgBox Left$(sol, Len(sol) - 1)
         Exit Sub
      End If
   Next i
End Sub

A+
 

Discussions similaires

Réponses
11
Affichages
304

Statistiques des forums

Discussions
312 345
Messages
2 087 486
Membres
103 557
dernier inscrit
gerard.messerlin68@orange