Microsoft 365 Supprimer un doublon en fonction d'une date et d'un numéro

Zifox

XLDnaute Nouveau
Bonjour, à tous ,
Je réalise actuellement un programme pour ajouter des noms de fichier dans un tableau excel : le nom est du type "40711102 -PELLE CATERPILLAR 313D- 29 06 22 - AO.pdf". Je veux éviter de rajouter une ligne dans mon tableau si le numéro est le même c'est à dire si dans mes fichiers deux d'entre eux commencent par 40711102 je veux que le fichier avec la date la plus récente (ici la date est 29 06 22 ) soit ajouté dans mon tableau à la place de l'autre. Voir mon code ci-dessous:
Si je met Sheets("ENGIN_SNCTP").Range("P" & Lastline).Value = XPFile cela détecte que les deux noms de fichiers sont les mêmes (colonne P présence du nom du fichier) mais si je mais cela
Sheets("ENGIN_SNCTP").Range("C" & Lastline).Value = Left(XPFile, 8) and Sheets("ENGIN_SNCTP").Range("H" & Lastline) < Format(CDate(Mid(XPFile, Len(XPFile) - 16, 2) & "/" & Mid(XPFile, Len(XPFile) - 13, 2) & "/" & Mid(XPFile, Len(XPFile) - 10, 2)), "dd/mm/yy"), le code ne rentre jamais dans la boucle... Et je ne comprends pas pourquoi...
Si quelqu'un à une idée...
Merci d'avance.
Bonne journée


VB:
 xExtArr2 = Array("*.pdf")
    For Each xExt2 In xExtArr2
        XPFile = Dir(xSPath & xExt2)
    Do While XPFile <> ""
    

    
    Lastline = Range("C" & Rows.Count).End(xlUp).Row  '
  If Sheets("ENGIN_SNCTP").Range("C" & Lastline).Value = Left(XPFile, 8) and  Sheets("ENGIN_SNCTP").Range("H" & Lastline) < Format(CDate(Mid(XPFile, Len(XPFile) - 16, 2) & "/" & Mid(XPFile, Len(XPFile) - 13, 2) & "/" & Mid(XPFile, Len(XPFile) - 10, 2)), "dd/mm/yy")Then
                Sheets("ENGIN_SNCTP").Range("P" & Lastline) = XPFile
                Sheets("ENGIN_SNCTP").Range("B" & Lastline) = "-"
               Sheets("ENGIN_SNCTP").Range("H" & Lastline) = Format(CDate(Mid(XPFile, Len(XPFile) - 16, 2) & "/" & Mid(XPFile, Len(XPFile) - 13, 2) & "/" & Mid(XPFile, Len(XPFile) - 10, 2)), "dd/mm/yy")
    Else
     If Range("C" & Lastline) <> "" Then Lastline = Lastline + 1 
           'si la date est à moins de 21 jours du jour actuel une notification est envoyée
                 Sheets("ENGIN_SNCTP").Range("P" & Lastline) = XPFile
                 Sheets("ENGIN_SNCTP").Range("C" & Lastline) = Left(XPFile, 8)
                 Sheets("ENGIN_SNCTP").Range("B" & Lastline) = "-"
                 Sheets("ENGIN_SNCTP").Range("D" & Lastline) = Mid(XPFile, 11, Len(XPFile) - 29)
                 Sheets("ENGIN_SNCTP").Range("H" & Lastline) = Format(CDate(Mid(XPFile, Len(XPFile) - 16, 2) & "/" & Mid(XPFile, Len(XPFile) - 13, 2) & "/" & Mid(XPFile, Len(XPFile) - 10, 2)), "dd/mm/yy")
                 Lastline = Lastline + 1
        
         XPFile = Dir
        End If
    Loop
    Next
 

Discussions similaires