Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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 )



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 :



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
485
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…