Calcul sous condition

bonjour le forum,

bonjour à tous, j'ai une demande assez compliquée que j'espère arriver à bien expliquer.

je cherche un code pour avoir une alerte en colonne P si le lot (colonne C) d'un article (colonne I) n'est pas achevé et que le lot suivant du même article est entamé ou totalement consommé.

en gros, en colonne N = on a la somme des productions d'un lot sur la première ligne ou ce numéro de lot apparaît et en colonne O à coté = on a la somme des sorties, ce qui est attendu c'est la différence entre ces deux colonnes (O - P) --> résultat à afficher uniquement si N>P et si la ligne suivante du même article en colonne O>zéro.

cela voudrait dire que le lot en cours n'est pas fini et que le lot suivant est entamé.

merci d'avance.

Pedro.

10classeur1.xlsm (29.38 Ko)

Bonjour,

je te retourne un essai qui correspondra peut-être à ton alerte:

merci de me faire un retour

bonjour @Ausecour et merci à vous,

le fichier joint n'a pas de code.

Bonjour,

oui ça me paraît normal étant donné que je suis passé par de la mise en forme conditionnelle, pourquoi passer par VBA quand une simple fonction d'Excel permet déjà de te faire une alerte?

la cellule est passée en rouge automatiquement, c'est visuel et pas invasif

ah ok, je comprends.

le souci c'est que sur des milliers de lignes, formule + mise en forme conditionnelle risque d'être lourd.

préférable d'avoir un code VBA qui affiche juste un résultat en colonne P lorsque le lot (en colonne C) de l'article (en colonne I) à une sortie inférieure (en colonne O) à la quantité entrée (en colonne N) et que le lot suivant du même article à une quantité en sortie (colonne O) supérieure à zéro.

ainsi il n’y a de chiffres que là ou il y a un souci et c'est aisé à repérer au coup d’œil.

Re,

je vois, j'avais mal compris aussi, encore une fois, pas besoin de code VBA, une petite formule peut faire l'affaire si la problématique est bien comprise:

tu ne verras la différence entre sortie et entrée, que si un même lot du même article est attaqué sur la ligne suivante, et que le lot actuel n'est pas terminé

Est-ce que j'ai bon cette fois?

Re, c'est bien cela l'idée.

bonjour le forum,

j'ai goupillé ceci mais ça semble foireux, je mets qd mm si qlq sait y regarder

Private Sub CommandButton1_Click()

Dim Cel As Range

For u = 2 To Range("I" & Rows.Count).End(xlUp).Row

For Each Cel In Range("I2:I" & u)

If Application.CountIf(Range("I2", Cel), Cel.Value) > 1 Then

v = Cel.Row

lot1 = Range("C" & u)

lot2 = Range("C" & v)

entrée = Range("N" & u)

sortie = Range("O" & u)

sortie2 = Range("O" & v)

If sortie < entree And sortie2 > 0 And lot1 <> lot2 Then

Range("P" & u).Value = sortie - entree

End If

End If

Next Cel

Next

End Sub

merci.

Pedro

0classeur1-1.xlsm (30.55 Ko)

enfin réussi avec des bouts de codes récupérés ça et là...

Private Sub CommandButton1_Click()

Dim Cel As Range

For Each Cel In Range("I2:I" & Range("I" & Rows.Count).End(xlUp).Row)

If Application.CountIf(Range("I2", Cel), Cel.Value) > 1 Then

v = Cel.Row

entrée = Range("N" & v)

sortie = Range("O" & v)

If entrée > sortie And sortie > 0 Then

t = Range("I" & v).Value

For u = v - 1 To 2 Step -1

If Range("I" & u) = t Then Exit For

Next u

w = Range("I" & u).Row

If Range("N" & w) = Range("O" & w) Then

Range("P" & v) = ""

Else

Range("P" & v) = sortie - entrée

End If

End If

End If

Next Cel

End Sub

Rechercher des sujets similaires à "calcul condition"