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
292

Membres actuellement en ligne

Statistiques des forums

Discussions
312 215
Messages
2 086 329
Membres
103 184
dernier inscrit
Di Martino