A voir également:
- Comparer les cellules puis faire un choix
- Liste déroulante de choix excel - Guide
- Excel additionner des cellules - Guide
- Verrouiller cellules excel - Guide
- Comparer prix amazon - Guide
- Figer les cellules excel - Guide
2 réponses
conrade82
Messages postés
96
Date d'inscription
dimanche 21 avril 2013
Statut
Membre
Dernière intervention
9 septembre 2016
4
Modifié par conrade82 le 1/04/2014 à 15:42
Modifié par conrade82 le 1/04/2014 à 15:42
Bonjour,
Que se passe-t-il si A1 reste supérieur à la suite de nombre et que malgré les soustractions, A1 reste supérieur à zéro ?
Je pensais à ceci:
ATTENTION: penser à supprimer les données de la colonne E avant de relancer la macro.
https://www.cjoint.com/?DDbpPndx7FE
Poru ce qui est du clic, il suffira de créer un bouton relié à cette macro.
Cdt,
Conrade 82
Que se passe-t-il si A1 reste supérieur à la suite de nombre et que malgré les soustractions, A1 reste supérieur à zéro ?
Je pensais à ceci:
Sub test1()
Dim i As Integer, rCell As Range, a As Integer, lastli As Integer, L As Integer
lastli = Sheets("sheet1").Cells(1, 3).End(xlDown).Row
'Tri croissant des valeurs de la suite de nombre
Range(Cells(1, 3), Cells(lastli, 3)).Sort Key1:=Cells(1, 3), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
'Tant que A1 est strictement supérieur à 0
Do Until Cells(1, 1) <= 0
'La macro s'arrête si la première cellule de la suite de nombre est vide
If Cells(1, 3) <> "" Then
'détermine le rang de la dernière cellule non vide de la colonne C
lastli = Cells(65356, 3).End(xlUp).Row
'Si A1 est supérieur au plus grand nombre de la colonne C
If Cells(1, 1) > Cells(lastli, 3) Then
'A1 est diminué de la valeur la plus grande de la colonne C
Cells(1, 1) = Cells(1, 1) - Cells(lastli, 3)
'Détermine la dernière cellule non vide de la colonne E
L = Cells(35536, 5).End(xlUp).Row
'Si E1 est vide
If Cells(L, 5) = 0 Then
'On copy la valeur soustraite de A1
Cells(lastli, 3).Copy
'On la colle dans la colonne E
Cells(L, 5).PasteSpecial
'On supprime la cellule copiée
Cells(lastli, 3).ClearContents
'Si E1 n'est pas vide
Else
'On copy la valeur soustraite de A1
Cells(lastli, 3).Copy
'On la colle dans la colonne E en dernière position
Cells(L + 1, 5).PasteSpecial
'On supprime la cellule copié
Cells(lastli, 3).ClearContents
End If
'Si A1 est compris entre le plus petit et le plus grand nombre de la colonne C
Else
'On recherche la cellule dont la valeur est immédiatement supérieure à A1
For Each rCell In Range(Cells(1, 3), Cells(lastli, 3))
'Arrête la boucle si A1 est inférieur ou égal à 0
If Cells(1, 1) <= 0 Then
Exit For
Else
'Si la cellule sélectionnée est immédiatement supérieur à A1
If rCell >= Cells(1, 1) + 0.001 Then
'alors A1 est diminué de la valeur de cette cellule
Cells(1, 1) = Cells(1, 1) - rCell
L = Cells(35536, 5).End(xlUp).Row
'cette cellule est coupée / Collée en colonne E
If Cells(L, 5) = 0 Then
Cells(rCell.Row, 3).Copy
Cells(L, 5).pastspecial
Cells(rCell.Row, 3).Delete Shift:=xlUp
Else
Cells(rCell.Row, 3).Copy
Cells(L + 1, 5).PasteSpecial
Cells(rCell.Row, 3).Delete Shift:=xlUp
End If
End If
End If
Next rCell
End If
Else
Exit Sub
End If
Loop
End Sub
ATTENTION: penser à supprimer les données de la colonne E avant de relancer la macro.
https://www.cjoint.com/?DDbpPndx7FE
Poru ce qui est du clic, il suffira de créer un bouton relié à cette macro.
Cdt,
Conrade 82
bonjour Conrade 82,
merci pour l'Intérêt que tu porte a mon problème.
A1 est la masse d'un lot de produits chimique
la suite de nombre, chaque nombre représente la capacité (en masse) que d'un conteneurs.
tant que mon lot de colis a une masse supérieur à toutes les capacités,
on choisit le conteneur qui a la plus grande capacité
on note sa capacité et son ID ailleurs
on soustrait la masse de colis de cette capacité
dès que la masse du lot devient comprise entre la plus petite et la plus grande capacité,
on choisit la capacité la plus proche.
l'objectif est d'avoir une liste de conteneurs dans lesquelles seront mis mes produits.
donc, chaque fois qu'on choisit un conteneur, celui-ci est chargé et A1 diminue jusqu'à devenir inférieur ou égal à 0
merci pour l'Intérêt que tu porte a mon problème.
A1 est la masse d'un lot de produits chimique
la suite de nombre, chaque nombre représente la capacité (en masse) que d'un conteneurs.
tant que mon lot de colis a une masse supérieur à toutes les capacités,
on choisit le conteneur qui a la plus grande capacité
on note sa capacité et son ID ailleurs
on soustrait la masse de colis de cette capacité
dès que la masse du lot devient comprise entre la plus petite et la plus grande capacité,
on choisit la capacité la plus proche.
l'objectif est d'avoir une liste de conteneurs dans lesquelles seront mis mes produits.
donc, chaque fois qu'on choisit un conteneur, celui-ci est chargé et A1 diminue jusqu'à devenir inférieur ou égal à 0