Boucle avec soustraction et reste

  • Initiateur de la discussion Initiateur de la discussion kenzo1245
  • 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 !

K

kenzo1245

Guest
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

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
 
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

- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Retour