XL 2019 Excel VBA - Supprimer les doublons

OuiOuiNonNon

XLDnaute Nouveau
Voila ce que j'aimerais faire en VBA : J'ai plusieurs fichiers dans un dossier, j'aimerais supprimer les doublons automatiquement, par exemple, dans le fichier "COLLARD_GILBERT_28_12" la colonne S1 est remplie, mais dans le fichier "COLLARD_GILBERT_24_12" la colonne S1 est également remplie, ce qui fait doublon.

PS : Dans le dossier, il y a plusieurs noms différents, si la colonne S1 est remplie pour deux fichiers avec deux noms différents, ce n'est pas comptabilisé comme un doublon.
 

Pièces jointes

  • COLLARD_GILBERT_28_12.xlsx
    11.5 KB · Affichages: 26
  • COLLARD_GILBERT_26_12.xlsx
    11.2 KB · Affichages: 7
  • COLLARD_GILBERT_24_12.xlsx
    11.2 KB · Affichages: 8
Solution
Enfaite quand je disais doublons, je voulais dire : si il y a un chiffre dans une cellule du fichier X, qu'il soit identique ou non, alors on efface le contenu de la cellule du fichier Maitre.
Si j'ai bien compris d'après ton fichier résultat joint précédemment.
VB:
Option Explicit

'cette macro n'ouvre qu'un seul fichier
Sub Boucle_Fichiers()
'ouvrir à partir de ce fichier tous les fichiers excel se trouvant dans le même répertoire
   Dim Fichier As String, Chemin As String, Wb As Workbook, Wa As Workbook, Nomfichier As String, MonClasseur As String
   Dim dlig As Long, dcol As Integer, Lig As Integer, Col As Integer, dligX As Integer, Rng As Range
   Set Wa = ThisWorkbook
   MonClasseur = Wa.Name
   Chemin = Wa.Path
   With Wa...

cp4

XLDnaute Barbatruc
Enfaite quand je disais doublons, je voulais dire : si il y a un chiffre dans une cellule du fichier X, qu'il soit identique ou non, alors on efface le contenu de la cellule du fichier Maitre.
Si j'ai bien compris d'après ton fichier résultat joint précédemment.
VB:
Option Explicit

'cette macro n'ouvre qu'un seul fichier
Sub Boucle_Fichiers()
'ouvrir à partir de ce fichier tous les fichiers excel se trouvant dans le même répertoire
   Dim Fichier As String, Chemin As String, Wb As Workbook, Wa As Workbook, Nomfichier As String, MonClasseur As String
   Dim dlig As Long, dcol As Integer, Lig As Integer, Col As Integer, dligX As Integer, Rng As Range
   Set Wa = ThisWorkbook
   MonClasseur = Wa.Name
   Chemin = Wa.Path
   With Wa
      dlig = Feuil1.Cells(Rows.Count, 4).End(xlUp).Row
      dcol = Feuil1.Cells(2, Cells.Columns.Count).End(xlToLeft).Column
   End With

   Nomfichier = Left(Split(ThisWorkbook.Name, ".")(0), 15) 'on récupère début du fichier soit COLLARD_GILBERT

   Fichier = Dir(Chemin & "\*.xls*") 'ouvrir fichier excel
   Do 'boucle sur les fichiers excel se trouce dans le même dossier
      If Fichier = "" Then Exit Do
      If Fichier <> ThisWorkbook.Name Then
         If Fichier Like Nomfichier & "*.xlsx" Then 'verifier nom fichier
            Set Wb = Workbooks.Open(Chemin & "\" & Fichier)
            'suite de la procedure
            For Col = 5 To dcol 'boucle sur les colonnes
               dligX = Workbooks(Fichier).Sheets(1).Cells(Rows.Count, Col).End(xlUp).Row 'derniere ligne de chaque colonne
               If dligX > 2 Then ' si>2 donc contient des données
                  With Workbooks(MonClasseur).Sheets(1) 'on travaille sur le fichier maitre
                     .Range(.Cells(3, Col), .Cells(dlig, Col)) = "" 'on efface la colonne
                  End With
               End If
            Next Col
            Application.DisplayAlerts = False 'on bloque message d'alerte de windows
            Wb.Close True 'on ferme le fichier x
            Application.DisplayAlerts = True 'on autorise les messages d'alerte de windows
            Set Wb = Nothing
         End If
      End If

      Fichier = Dir() 'on passe au fichier suivant
   Loop
   Wa.Save
   Set Wa = Nothing
   MsgBox "Traitement terminé!", vbOKOnly + vbInformation, "TRAITEMENT"
End Sub
 

OuiOuiNonNon

XLDnaute Nouveau
Oui c'est ce ça merci beaucoup. J'ai une toute dernière requête (si tu n'es pas disponible ou que tu n'as pas le temps ce n'est pas grave tu a déjà plus que répondu à ma demande initiale) :
si j'active la macro depuis le fichier "COLLARD_GILBERT_28_12", alors elle va regarder tout les fichier qui commence par "COLLARD_GILBERT" puis gérer les doublons. Idem, si j'active la macro depuis le fichier "COLLARD_GILBERT_26_12", elle va regarder tout les fichier qui commence par "COLLARD_GILBERT" puis gérer les doublons. Sauf que ce qu'il faudrait, c'est qu'elle ne regarde que les fichier plus ancien. C'est à dire, pour le fichier "COLLARD_GILBERT_26_12", qu'elle ne s'intéresse qu'au fichier COLLARD_GILBERT d'avant le 26 décembre (26_12).
D'ailleurs, les noms de fichier ne sont plus tout à fait les mêmes, ce n'est plus "Nom_Prénom_Jour_Mois" mais "Nom_Prénom_Année_Mois_Jour_Heure_Minute_Seconde_Code" ce qui donnerait, comme fichier fictif, quelque chose comme "COLLARD_GILBERT_2020_12_28_18_08_32_XHAG". Idem pour les autres, donc par exemple : "COLLARD_GILBERT_2020_12_26_12_24_44_ABFE" et "COLLARD_GILBERT_2020_12_24_10_45_02_AZDOPAFA"
Le code n'est ni fictif ni permanent, on ne peut pas s'en servir dans la macro.
 
Dernière édition:

Discussions similaires