Supprimer les colonnes en doublons sur dossier de 50 fichiers

Bonjour,

J'ai besoin d'aide pour avoir un code VBA qui supprimerait toutes les colonnes en doublons mais qui laisserait une colonne de ces colonnes en doublon.

L'analyse des doublons se fera à partir de la cellule B16 jusqu'à la colonne et ligne infini.

Il faut savoir que les doublons sont dans un dossier qui a plusieurs fichiers (beaucoup environ 50) et ses fichiers on à peu près 70 feuilles chaque fichier.

C'est pour cela qu'il faudrait que le code soit rapide.

Je vous remercie énormément pour votre aide

Pourriez-vous fournir un exemple de fichier ?

Bonjour Meryem,

En PJ

19classeur-1.zip (419.77 Ko)
20classeur-2.zip (304.74 Ko)

re,

c'est inutile de parler de 50 fichiers, quand on ne sait pas résoudre le problème avec seulement 2 fichiers.

Ma macro du début de cette semaine, qui copie et transpose et colle les données des 2 fichiers vers un tableau structuré et maintenant supprime les doublons.

Le reste (filtrage etc) n'est pas fait, parce que vous avez des doutes à ce sujet.

12article-1-1.xlsb (189.74 Ko)

Re,

Le problème avec votre fichier c'est que je ne veux pas que se soit transposé,

De plus comme je vais devoir analyser des données une fois toutes les 2 semaines, c'est compliqué pour moi de faire comme vous avez fait, je ne comprends toujours pas ou mettre l'adresse (le chemin) du dossier à analyser etc... Mafraise fesait des fichiers très simple que j'utilise et je le remercie encore.

J'ai créer une nouvelle discussion car pour l'instant je n'ai pas eu la réponse recherché dans la discussion pour la demande de code VBA complexe, j'en déduit que le code que j'ai demandé est impossible à créer donc je vais analyser les fichiers autrement c'est à dire manuellement.

ça va me prendre plus de temps mais si quelqu'un arrive à me trouver un code VBA qui supprime les colonnes en doublons sur tout un dossier, ça m'aiderait tellement.

Je vous remercie BsAlv pour votre aide mais malheureusement ce n'est pas le résultat que je recherche

re,

bon, on peut emmener un cheval à l'eau, mais on ne peut pas le forcer à boire ...

ceci vous donne une reduction de 29%, cela vaut la peine ? Avec l'autre methode c'était 37%

Sub Supprimer()
     Dim WB As Workbook, WB1 As Workbook, WB2, SH, aAddress, LO
     Set dict = CreateObject("scripting.dictionary")
     Application.ScreenUpdating = False

     t = Timer

     On Error Resume Next
     Set WB1 = Workbooks("classeur 1.xlsx")
     If WB1 Is Nothing Then Set WB1 = Workbooks.Open(ThisWorkbook.Path & "\classeur-1.xlsx")
     If WB1 Is Nothing Then MsgBox "erreur 1": Exit Sub

     Set WB2 = Workbooks("classeur 2.xlsx")
     If WB2 Is Nothing Then Set WB2 = Workbooks.Open(ThisWorkbook.Path & "\classeur-2.xlsx")
     If WB2 Is Nothing Then MsgBox "erreur 2": Exit Sub
     On Error GoTo 0

     For iWB = 1 To 2
          If iWB Mod 2 = 1 Then Set WB = WB1 Else Set WB = WB2
          For Each SH In WB.Sheets
               With SH.Range("B21").CurrentRegion

                    Set c = .Offset(32 - .Row).Resize(1)
                    c.FormulaR1C1 = "=TEXTJOIN("","",0,R21C:R30C)"
                    c.EntireColumn.Hidden = False
                    For Each c0 In c.Cells
                         If dict.exists(c0.Value) Then
                              b = True
                         Else
                              c0.EntireColumn.Hidden = True
                              dict(c0.Value) = vbEmpty
                         End If
                    Next
                    i1 = c.Columns.Count

                    If b Then c.SpecialCells(xlVisible).EntireColumn.Delete
                    c.EntireColumn.Hidden = False
                    i2 = c.Columns.Count
                    MsgBox "classeur : " & WB.Name & vbLf & "sheet : " & SH.Name & vbLf & Format(i1, "#,##0") & " colonnes >>> " & Format(i2, "#,##0") & " colonnes" & vbLf & Format(i2 / i1, "##.0%")
                    dict.RemoveAll
               End With
          Next
     Next

     WB1.Close 1
     WB2.Close 1

     Application.ScreenUpdating = True       'plus tard, on supprime ceci pour la vitesse !!!

End Sub

Re,

J'ai ouvert les 2 classeurs, j'ai executé le code et voici en copie le resultat que j'ai eu.

12classeur-1.xlsx (10.14 Ko)
11classeur-2.xlsx (11.01 Ko)

ça ne me laisse qu'une seule colonne par feuille malheureusement

re,

apparament, ce "2" est important pour excel365, autrement il ajoute un @ comme prefix. Mieux maintenant ? Je ne comprends pas pourquoi, moi, je n'avais pas cette erreur ?

c.Formula2R1C1 = "=TEXTJOIN("","",0,R21C:R30C)"

J'ai un message d'erreur d'execution '438':

Propriété ou méthode non gérée par cet objet

Lorsque je clique sur débogage c'est cette phrase qui me donne surligné en jaune:

image

re,

c'était chaque fois avec excel365 ou avec 2 versions différents, à 18h45 avec 365 et à 24h34 avec une version ancienne ? Ce fichier fonctionne chez moi pour excel365.

13article-1-1.xlsb (193.27 Ko)

Re,

Comment fonctionne ce fichier?

Pouvez-vous me détailler étape par étape comment fonctionne ce fichier pour que je puisse supprimer les colonnes en doublons?

re,

la macro "supprimer" de ce fichier

Rechercher des sujets similaires à "supprimer colonnes doublons dossier fichiers"