Microsoft 365 Vba récupérer dernière valeur / dernière ligne si même valeur

akira21

XLDnaute Occasionnel
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.JPG


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.JPG


VB:
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 :)
 

akira21

XLDnaute Occasionnel
Bonjour et merci de votre réponse.

Cette macro va se combiner à d'autre donc voilà pourquoi j'ai besoin que cela se fasse en vba.

Effectivement, cela sera plus simple avec un fichier en exemple. Désolé, le voici :)

Dans l'onglet cockpit, j'y ai mis des explications.

Merci beaucoup pour votre aide :)
 

Pièces jointes

  • Classeur1.xlsm
    271.1 KB · Affichages: 4

akira21

XLDnaute Occasionnel
Bonjour et merci st007 pour votre aide :)

J'ai eu la solution sur un autre forum :

VB:
Sub Details()

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

Set ws1 = Sheets("Cockpit")
Set ws2 = Sheets("Détails")

With ws1

    For i = 6 To .Range("A" & Rows.Count).End(xlUp).Row
        If .Cells(i, 9) < 0 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
            
            ws2.Range("A" & dlg) = .Range("A" & i)
          
            ws2.Range("B" & dlg) = .Range("B" & i)
            
            ws2.Range("G" & dlg) = .Range("D" & i)
      
            ws2.Range("E" & dlg) = .Range("I" & i)
    
            ws2.Range("H" & dlg) = "Entrée Prod Restante"
        End If
suite:
    Next i
End With
End Sub

Encore merci et bonne journée :)
 

Discussions similaires

Réponses
6
Affichages
202
Réponses
7
Affichages
292

Statistiques des forums

Discussions
311 726
Messages
2 081 955
Membres
101 852
dernier inscrit
dthi16088