Macro pour retenir un prix selon la tranche Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
Avatar du membre
Steelson
Fanatique d'Excel
Fanatique d'Excel
Messages : 13'562
Appréciations reçues : 753
Inscrit le : 13 octobre 2014
Version d'Excel : 2013 FR
Téléchargements : Mes applications

Message par Steelson » 19 novembre 2019, 16:52

Tu as raison ... je ne comprends pas ce qui se passe ...

O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸ O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸
PI = 3.14159 26535 89793 23846 26433 83279 50288 41971 69399 37510 58209 74944 59230 78164 06286 20899 86280

( ͡• ͜ʖ ͡• )
Avatar du membre
Steelson
Fanatique d'Excel
Fanatique d'Excel
Messages : 13'562
Appréciations reçues : 753
Inscrit le : 13 octobre 2014
Version d'Excel : 2013 FR
Téléchargements : Mes applications

Message par Steelson » 19 novembre 2019, 17:07

Bon, tu as raison, assez bricolé avec les matricielles, je vais le faire en fonction personnalisée
Function prix(cel As Range)
prix = 0
For i = Cells(cel.Row, Columns.Count).End(xlToLeft).Column To cel.Column + 3 Step -2
    If Cells(cel.Row, i - 1) >= cel Then prix = Cells(cel.Row, i) * 1
Next
End Function
En même temps c'est plus tolérant à l'égard des nombres entrés comme texte avec un espace des milliers !
Modifié en dernier par Steelson le 20 novembre 2019, 00:25, modifié 1 fois.

O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸ O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸
PI = 3.14159 26535 89793 23846 26433 83279 50288 41971 69399 37510 58209 74944 59230 78164 06286 20899 86280

( ͡• ͜ʖ ͡• )
a
abd2010
Membre habitué
Membre habitué
Messages : 57
Inscrit le : 16 novembre 2019

Message par abd2010 » 19 novembre 2019, 19:19

C'est parfait !

La seule et dernière modification que j'aimerai, après je ne vous embête plus c'est: que la macro tienne en compte que si la quantité saisie est inférieure à la tranche 1, de prendre le prix associé à cette tranche (même si ça vous parait non logique), et si la quantité saisi est supérieure à la dernière tranche connue, de prendre le prix de cette tranche: exemple à la 1ère ligne si on met 2000 comme besoin, au lieu d'afficher 0 comme prix, j'aimerai qu'il affiche 5,24 le prix de la tranche 1000 (dernière tranche connue).

Si j'ai ça c'est top !
Avatar du membre
Steelson
Fanatique d'Excel
Fanatique d'Excel
Messages : 13'562
Appréciations reçues : 753
Inscrit le : 13 octobre 2014
Version d'Excel : 2013 FR
Téléchargements : Mes applications

Message par Steelson » 20 novembre 2019, 00:24

Pas de soucis, il fat que cela donne le résultat attendu !
Function prix(cel As Range)
prix = Cells(cel.Row, cel.Column + 3) * 1
For i = cel.Column + 2 To Cells(cel.Row, Columns.Count).End(xlToLeft).Column Step 2
    If Cells(cel.Row, i) > cel Or Cells(cel.Row, i) = "" Then Exit For
    prix = Cells(cel.Row, i + 1) * 1
Next
End Function
tab.xlsm
(25.54 Kio) Téléchargé 6 fois

O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸ O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸
PI = 3.14159 26535 89793 23846 26433 83279 50288 41971 69399 37510 58209 74944 59230 78164 06286 20899 86280

( ͡• ͜ʖ ͡• )
a
abd2010
Membre habitué
Membre habitué
Messages : 57
Inscrit le : 16 novembre 2019

Message par abd2010 » 20 novembre 2019, 09:23

Super !

Maintenant j'aimerai créer une nouvelle colonne de besoin réel selon prix total, qui:

si le besoin exprimé est inférieur à la première tranche, qu'il retienne la valeur de la première tranche: ensuite si en faisant les produits 2 à 2 (tranche1*prix1 à comparer avec tranche2*prix2, etc...) si on se rencontre qu'il y'a une tranche dont le prix total (tranche*prix) est inférieur ou égal au prix de la tranche retenue* son prix , notre tranche initialement retenue bascule à cette nouvelle tranche .

Si par contre le besoin exprimé est supérieur ou égal à la première tranche, on le retient, puis on fait la comparaison comme précédemment (prix*tranche) pour retenir le moins cher ou égal au prix total de la tranche initialement prévue.
Avatar du membre
Steelson
Fanatique d'Excel
Fanatique d'Excel
Messages : 13'562
Appréciations reçues : 753
Inscrit le : 13 octobre 2014
Version d'Excel : 2013 FR
Téléchargements : Mes applications

Message par Steelson » 20 novembre 2019, 10:34

J'ai repris le fichier, supprimé les blancs insécables des valeurs supérieures à 1000 et ajouté des colonnes Totaux.
Pourrais-tu illustrer sur le fichier les exemples que tu donnes ?
Merci.
tab (1).xlsm
(30.23 Kio) Téléchargé 2 fois

O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸ O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸
PI = 3.14159 26535 89793 23846 26433 83279 50288 41971 69399 37510 58209 74944 59230 78164 06286 20899 86280

( ͡• ͜ʖ ͡• )
a
abd2010
Membre habitué
Membre habitué
Messages : 57
Inscrit le : 16 novembre 2019

Message par abd2010 » 20 novembre 2019, 13:03

D'abord je veux créer une nouvelle colonne "Besoin réel" tel que :

Besoin réel=SI([@[Besoin Exprimé]]<[@[Tranche 1]];[@[Tranche 1]];[@[Besoin Exprimé]]).

Et modifier la formule de la colonne "Total" en: Total=[@[Besoin réel]]*[@Prix]
Avatar du membre
Steelson
Fanatique d'Excel
Fanatique d'Excel
Messages : 13'562
Appréciations reçues : 753
Inscrit le : 13 octobre 2014
Version d'Excel : 2013 FR
Téléchargements : Mes applications

Message par Steelson » 20 novembre 2019, 17:29

tab (1).xlsm
(32.39 Kio) Téléchargé 2 fois

O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸ O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸
PI = 3.14159 26535 89793 23846 26433 83279 50288 41971 69399 37510 58209 74944 59230 78164 06286 20899 86280

( ͡• ͜ʖ ͡• )
a
abd2010
Membre habitué
Membre habitué
Messages : 57
Inscrit le : 16 novembre 2019

Message par abd2010 » 20 novembre 2019, 19:09

Enfin j'aimerai créer une nouvelle colonne notée "Quantité optimisée", qui ramène une quantité tel que:
s'il y'a qu'une tranche de prix dans l'historique, qu'il retienne le "besoin réel" saisi.
(On compare les totaux de prix) Si Total<=Total tranche (de là où démarre le besoin réel): ici je veux dire par exemple à la ligne 1, on a un besoin réel de "400" , donc Total tranche (de là où démarre le besoin réel)=Total tranche 4: Ainsi on s'intéresse au Total tranche suivant: c'est à dire "Total tranche 7"
Par la suite à partir de Total tranche 7, Total tranche 10,....,Total tranche 58 , on cherche quel "Total tranche i" est <= Total tranche 4
Si on en trouve, on ramène la tranche correspondante. Si jamais il y'a plusieurs "Total tranche i" qui satisfont cette condition on ramène la tranche maximale correspondante.

Merci encore !
Avatar du membre
Steelson
Fanatique d'Excel
Fanatique d'Excel
Messages : 13'562
Appréciations reçues : 753
Inscrit le : 13 octobre 2014
Version d'Excel : 2013 FR
Téléchargements : Mes applications

Message par Steelson » 21 novembre 2019, 02:09

J'espère avoir bien saisi !!
Function prix(cel As Range) ' cel étant la quantité réelle
For i = (Asc("J") - 64) To Cells(cel.Row, Columns.Count).End(xlToLeft).Column Step 3
    If Cells(cel.Row, i) > cel Or Cells(cel.Row, i) = "" Then Exit For
    prix = Cells(cel.Row, i + 1)
Next
End Function

Function optimum(cel As Range) ' cel étant la quantité réelle
For i = (Asc("J") - 64) To Cells(cel.Row, Columns.Count).End(xlToLeft).Column Step 3
    If Cells(cel.Row, i + 2) < cel.Offset(0, 2) And Cells(cel.Row, i + 2) <> "" Then optimum = Cells(cel.Row, i)
Next
optimum = Application.Max(optimum, cel.Value)
End Function
tab (1).xlsm
(37.59 Kio) Téléchargé 4 fois

O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸ O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸
PI = 3.14159 26535 89793 23846 26433 83279 50288 41971 69399 37510 58209 74944 59230 78164 06286 20899 86280

( ͡• ͜ʖ ͡• )
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message