Boucle avec soustraction et reste

kenzo1245

XLDnaute Nouveau
Bonjour,

Voilà, j'ai une liste de nombre variable, ex. : (50, 50, 50, 40, 30, 15, 15) et j'ai une valeur variable de "120" par exemple.

Il faudrait prendre dans la liste le nombre juste en dessous de "120" et le soustraire à "120" et supprimer le nombre qu'on vient d'utiliser de la liste pour ne pas l'utiliser deux fois de suite.
Ça ferai : 120 -50 = 70 et ensuite supprimer le premier 50 de la liste
et faire pareil avec le 70 et ainsi de suite mais je ne veux pas aller en dessous de "0".

Exemple avec 120 :
120 -50 = 70
70 - 50 = 20
20 - 15 = 5

Il reste "5" comme résultat car il n'y a pas de nombre dans la liste plus petit que lui.

Voilà, j’espère que j'ai été clair dans mes explications.

Merci.
 

Pièces jointes

  • test.xlsm
    10.1 KB · Affichages: 34
  • test.xlsm
    10.1 KB · Affichages: 41
  • test.xlsm
    10.1 KB · Affichages: 39

JBARBE

XLDnaute Barbatruc
Re : Boucle avec soustraction et reste

Bonjour à tous,

Peut-être ceci :

Code:
Option Explicit

Sub essai()
Dim i As Long
Range("E4") = Range("C4")
 For i = 4 To 65536
  If Cells(i, 1) = "" Then Exit For
   If Cells(i, 1) < Range("E4") Then
   Range("E4") = Range("E4") - Cells(i, 1)
   Cells(i, 1).ClearContents
   End If
 Next i
End Sub

bonne journée
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Boucle avec soustraction et reste

Bonjour à tous,

Un essai avec une fonction personnalisée:Reste(x, xPlage As Range)
x est le nom dont on soustrait des élements de xPlage.

Le code de la fonction:
VB:
Function Reste(x, xPlage As Range)
Dim ech As Boolean, aux, i&
  'xplage en tableau à une dimension
  ReDim tablo(1 To xPlage.Count)
  For Each aux In xPlage
    i = i + 1: tablo(i) = aux
  Next aux
  'tri du tablo
  Do
    ech = False
    For i = 1 To UBound(tablo) - 1
      If tablo(i) < tablo(i + 1) Then
        ech = True: aux = tablo(i): tablo(i) = tablo(i + 1): tablo(i + 1) = aux
      End If
    Next i
  Loop Until Not ech
  'recherche du reste
  Reste = x
  For i = 1 To UBound(tablo)
    If Reste - tablo(i) >= 0 Then Reste = Reste - tablo(i)
  Next i
End Function
 

Pièces jointes

  • Boucle avec soustraction et reste v1.xlsm
    18.7 KB · Affichages: 36

Discussions similaires

Réponses
2
Affichages
520

Statistiques des forums

Discussions
312 220
Messages
2 086 381
Membres
103 199
dernier inscrit
ATS1