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

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 !

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
 
- 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
10
Affichages
479
Réponses
4
Affichages
453
Réponses
4
Affichages
725
Retour