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

  • Initiateur de la discussion Initiateur de la discussion akira21
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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 🙂
 
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

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 🙂
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
177
  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
649
Réponses
6
Affichages
604
Retour