Récupérer dernière valeur

Bonjour,

Je bloque sur un problème.

J'aimerai récupérer la dernière valeur, par exemple -27 ou -150 dans la colonne I si même valeur dans la colonne B et non les valeurs au dessus ( +3, -30, -60 etc )

capture

Pour l'instant, je récupère l'ensemble sous 2 conditions mais j'aimerai peaufiner en n'ayant que celle du bas de la valeur 160674 (-27) et 107487 (-150) par exemple :

capture1
Sub test_restant_prod()

Dim i As Integer, dlg As Integer
Dim ws1 As Worksheet, ws2 As Worksheet
Application.ScreenUpdating = False

Set ws1 = Sheets("Cockpit")
Set ws2 = Sheets("Test")

Worksheets("test").Range("A5:B5000, D5:H5000").ClearContents

With ws1

'Quantité produite 1
    For i = 6 To .Range("A" & Rows.Count).End(xlUp).Row
        If .Cells(i, 10) = "" And .Cells(i, 9) < 0 Then
            dlg = ws2.Range("A" & Rows.Count).End(xlUp).Row + 1
            'Ligne
            ws2.Range("A" & dlg) = .Range("A" & i)
            'Code
            ws2.Range("B" & dlg) = .Range("B" & i)
            'Date Prod
            ws2.Range("G" & dlg) = .Range("D" & i)
            'Quantité produite
            ws2.Range("E" & dlg) = .Range("I" & i)
            'Entrée Prod
            ws2.Range("H" & dlg) = "Entrée Prod"
        End If
    Next i

End With

End Sub

Est ce q'une âme charitable serait m'aider ?

Merci d'avance pour votre aide :)

Bonjour

Un test en changeant cette ligne

For i = 6 To .Range("A" & Rows.Count).End(xlUp).Row

par celle-ci

For i =  .Range("A" & Rows.Count).End(xlUp).Row to 6 step -1

Bonsoir et merci pour votre réponse :)

J'ai testé mais cela à juste pour effet de prendre les infos à l'envers !

Avant :

capture1

Après :

capture 2

Avec un fichier, ça aidera surement !!!

5classeur1.xlsm (271.09 Ko)

Re,

Teste ceci

7classeur1.xlsm (266.77 Ko)

Magnifique !!!!

Un grand merci pour cette solution qui me bloque depuis 2 jours :)

Je vous souhaite une bonne fin de journée :D

Re,

Avec un fichier, c'est plus facile à résoudre

Oui, j'aurai dû commencer par là !!! Désolé :(

Encore un grand merci pour votre aide :)

Bonjour,

Je reviens vers vous car je voudrais ajouter une condition !

On ne récupère aucunes données si il y a comme valeur dans la colonne A, "Bloc 1" ou "Bloc 2".

Pouvez vous m'aider svp ?

8classeur1-6.xlsm (212.17 Ko)

J'ai trouvé !!!

J'avais pourtant fait la même chose avant de poster mais cela ne fonctionnait pas...

Sub Test()

Dim i As Integer, dlg As Integer
Dim ws1 As Worksheet, ws2 As Worksheet
Application.ScreenUpdating = False

Set ws1 = Sheets("Cockpit")
Set ws2 = Sheets("Test")

Worksheets("Test").Range("A5:B5000, D5:H5000").ClearContents

With ws1

For i = 6 To .Range("A" & Rows.Count).End(xlUp).Row
        If .Cells(i, 9) < 0 And .Cells(i, 1) <> "Bloc 1" And .Cells(i, 1) <> "Bloc 2" Then
            dlg = ws2.Range("A" & Rows.Count).End(xlUp).Row + 1
            If .Range("I" & i + 1) < 0 And .Range("B" & i) = .Range("B" & i + 1) Then GoTo suite
            'Ligne
            ws2.Range("A" & dlg) = .Range("A" & i)
            'Code
            ws2.Range("B" & dlg) = .Range("B" & i)
            'Date Prod
            ws2.Range("G" & dlg) = .Range("D" & i)
            'Quantité produite
            ws2.Range("E" & dlg) = .Range("I" & i) * -1
            'Entrée Prod Restante
            ws2.Range("H" & dlg) = "Entrée Prod Restante"
        End If
suite:
    Next i
End With

End Sub
Rechercher des sujets similaires à "recuperer derniere valeur"