Macro pour retenir un prix selon la tranche

Je veux supprimer la colonne "Besoin réel" et intégré dans la macro cette formule qui s'applique à la colonne besoin exprimé:

Besoin exprimé=SI([@[Besoin Exprimé]]=0;0;SI([@[Besoin Exprimé]]<[@[Tranche 1]];[@[Tranche 1]];[@[Besoin Exprimé]]))

Merci

Bon, c'est assez compliqué car il faut en effet revoir les macros et je n'ai plus le sujet en tête !

Est-ce vraiment utile ?

Peux-tu juste masquer la colonne ?

C'est vraiment utile si je pouvais avoir ça (si ça ne vous dérange pas aussi) car il y'a une étape suivante qui va dépendre de ce résultat et le but aussi c'est d'avoir moins de colonnes sans avoir recours au masquage de colonnes (car je dois frotter ce fichier à un autre fichier qui a beaucoup de colonnes encore).

Merci beaucoup!

En espérant que ce soit correct

6tp.xlsm (19.54 Ko)

On y est presque mais je voudrai que quand on saisi en "besoin exprimé" 100 vu que la quantité de la tranche 1 est 200, que la valeur 100 tapé se transforme en 200 (genre se corrige) car il est inférieur à la tranche 1 et si la valeur saisi en "besoin" exprimé" est supérieur à la tranche 1, qu'il se maintienne et que "Total" (colonne E) s'actualise car j'ai constaté qu'avec la modification cette valeur est devenu figée (ne s'actualise pas en changeant la valeur du besoin dès fois)

Merci

ok

il faudra donc une macro événementielle ... à suivre

Merci.

Je voulais aussi fusionner les lignes (en un) où l'article se répéter: par exemple il y'a deux articles numéroter 2, l'étaler sur une ligne de 2.

je voudrai que quand on saisi en "besoin exprimé" 100 vu que la quantité de la tranche 1 est 200, que la valeur 100 tapé se transforme en 200

Private Sub Worksheet_Change(ByVal Target As Range)
Dim plage As Range, cel As Range
    Set plage = Intersect(Target, Columns("C"))
    If plage Is Nothing Then Exit Sub
    Application.EnableEvents = False
    For Each cel In plage
        If cel.Value <> "" And cel.Row > 1 And cel.Value < Range("I" & cel.Row).Value Then cel.Value = Range("I" & cel.Row).Value
    Next
    Application.EnableEvents = True
End Sub

Je voulais aussi fusionner les lignes (en un) où l'article se répéter: par exemple il y'a deux articles numéroter 2, l'étaler sur une ligne de 2.

Fusionner quelles colonnes ? car dans ce cas les numéros colonne B ne sont pas les mêmes, ni les tranches et prix ! S'il s'agit de "fusionner" la colonne A seulement, il vaut mieux le faire par MFC

5tp.xlsm (22.56 Ko)

Pour la fusion, je veux avoir qu'une ligne de 2 quand ça se répète(pour la colonne A) et qu'une ligne pour la colonne B ou on mettra dans une colonne les numéros séparés d'un tiret (genre 070109-170108, autant de fois qu'il y'a de numéros) puis pour les prix les mettre à la suite de l'autre ligne dans l'ordre croissant des quantités de tranches (et si c'est la même quantité de tranche sur les deux lignes retenir le prix le plus élevé associé à la tranche et si les tranches des deux lignes sont différentes , recopié la tranche supérieure à la suite de l'autre tranche de l'autre ligne)

Désolé, je ne fais pas de bidouilles comme cela. Cela dénature l'information de base. De plus, les données étant en tableau cela devient compliqué. Mais tu peux re-poster le sujet sur un nouveau topic pour que quelqu'un le prenne en charge.

Bonjour,

Je reviens vers vous pour le fichier. En fait si je déplace (concatène) une autre feuille vers la feuille ou il y'a les macros, et en mettant des formules recherche V dans la colonne "Besoin Exprimé" je constate que la colonne prix du macro n'amène pas le prix de la tranche (est ce que le fait de déplacer une feuille vers une autre qui contient des macros, désactive la macro).

Merci

Peux-tu illustrer cela dans un extrait du fichier excel ?

Par exemple sur ce fichier, avec la formule que j'ai mis dans la colonne C (Besoin exprimé) de la feuille 1, en changeant de valeur dans la feuille 2, colonne B(Qte), on constate que la colonne E(Prix) de la feuille 1 ne s'active pas.

Merci

4essai.xlsm (22.20 Ko)

Dans la dernière version ici https://forum.excel-pratique.com/viewtopic.php?p=829655#p829655 il y avait cette macro ...

Private Sub Worksheet_Change(ByVal Target As Range)
Dim plage As Range, cel As Range
    Set plage = Intersect(Target, Columns("C"))
    If plage Is Nothing Then Exit Sub
    Application.EnableEvents = False
    For Each cel In plage
        If cel.Value <> "" And cel.Row > 1 And cel.Value < Range("I" & cel.Row).Value Then cel.Value = Range("I" & cel.Row).Value
    Next
    Application.EnableEvents = True
End Sub

Désolé je m'étais trompé de fichier.

Comment je fait si je veux faire une rechercheV pour ramener les quantités 30 et 40 de la feuille 2 (colonne B) vers la feuille 1 en colonne Besoin exprimé (colonne C) : genre une rechercheV suivant l'article (numéro commun de part et d'autres)

Merci

2essai-nouv.xlsm (24.75 Ko)

Si je veux tenir compte que le besoin exprimé ne puisse pas être plus faible que la tranche 1 comme demandé ici : https://forum.excel-pratique.com/viewtopic.php?p=829422#p829422 , il faut qu'en plus de la recherchev je regarde la valeur de la tranche 1.

Et du coup, puisque le besoin exprimé n'est plus saisi dans cette page, on peut en effet enlever cette macro.

=SIERREUR(MAX([@[Tranche 1]];RECHERCHEV([@Article1];Tableau13;2;FAUX));0)
4essai-nouv.xlsm (22.86 Ko)

Super!

mais j'ai remarqué qu'une fois le fichier ouvert les macros sont activés et tout marche bien mais dès qu'on change les valeurs de la première et sixième ligne (en jaune) de la feuille 2, la recherchev marche bien mais que les valeurs prix (colonne D), Besoin optimisé (colonne F) et prix optimisé (colonne G) reste à zéro (ne s'actualise pas) sur la feuille 1 et je sais pas pourquoi.

Merci beaucoup de votre disponibilité et aide

la recherchev marche bien mais que les valeurs prix (colonne D), Besoin optimisé (colonne F) et prix optimisé (colonne G) reste à zéro (ne s'actualise pas) sur la feuille 1

la macro de la feuille 1

Private Sub Worksheet_Change(ByVal Target As Range)
Dim plage As Range, cel As Range
    Set plage = Intersect(Target, Columns("C"))
    If plage Is Nothing Then Exit Sub
    Application.EnableEvents = False
    For Each cel In plage
        If cel.Value <> "" And cel.Row > 1 And cel.Value < Range("I" & cel.Row).Value Then cel.Value = Range("I" & cel.Row).Value
    Next
    Application.EnableEvents = True
End Sub

tient compte des modifications manuelles de la colonne C, pas d'un résultat de calcul par RECHERCHEV.

Comme la colonne C est maintenant obtenue par calcul, j'ai intégré le résultat de cette macro dans la formule ... à savoir que le besoin exprimé ne peut être inférieur à la Tranche 1

Je viens d'intégrer la macro sur la feuille 1 mais je constate toujours que :

les valeurs prix (colonne D), Besoin optimisé (colonne F) et prix optimisé (colonne G) reste à zéro sur la feuille 1 si on change les valeurs de la feuille 2 (en jaune): les fonctions PRIX et OPTIMUM réponde qu'à l'ouverture du fichier, une fois ouvert ça ne répond plus après changement des valeurs de la feuille 2.

Je sais pas comment m'y prendre. Merci

J'ai ajouté ceci

Private Sub Worksheet_Activate()
    Application.CalculateFull
End Sub
6essai-nouv.xlsm (24.10 Ko)
Rechercher des sujets similaires à "macro retenir prix tranche"