Problème compilation de fichiers

bonjour à tous,

Pour cause de connexion atroce au boulot, j'ai pas pu faire énormément de recherches..

Bref, voilà en gros mon problème :

J'ai un répertoire qui contient une 30aine de fichier sur lesquels des gens bossent. Je dois faire une copie des données de chaque fichier pour en créer un gros de "compilation".

Ma compilation marche presque sauf qu'au final elle contient moins de ligne que lorsque que je compte les fichiers un par un, il y a donc un souci !!

Comme les gens bossent dessus, j'imagine que s'il y a des filtres quand je compile ça doit pas prendre les données filtrées.

Voici en substance ma macro :

Chemin = "adresse répertoire"

Fichier = Dir(Chemin & "*.xls")

Do While Fichier <> ""

Workbooks.Open Filename:=Chemin & Fichier

Range("données").Copy

ThisWorkbook.Activate

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False

Windows(Fichier).Activate

Application.CutCopyMode = False

ActiveWorkbook.Close SaveChanges:=False

ThisWorkbook.Activate

Range("A65536").End(xlUp).Offset(1, 0).Select

Fichier = Dir ' Fichier suivant

Loop

J'ai nommé une sélection "données" dans chacun des fichiers. Cette plage a toujours le même nombre de colonne mais pas le même nombre de lignes (je sais pas si ça dérange la macro). Il n'y a pas de lignes vides et personne n'ajoute des lignes.

Pour me simplifier et comme les fichiers sont pas trop lourds, je me suis crée une copie du répertoire où je peux à loisir ouvrir les fichiers, enlever les filtres et enregistrer les fichiers. Mais je ne trouve aucune macro capable de faire sauter les filtres de tous les fichiers d'un répertoire. D'autant que certains fichiers n'ont pas de filtre...

Ce qui je cherche donc, en focntion des possibilités :

  • boucle qui copie "données" sans les filtres, en lecture seule
  • si je me sers du répertoire de copie : boucle qui enlève les filtre (s'il y en a) et qui enregistre les fichiers (je viendrai ensuite coller ma boucle de compilation)
  • Toute autre possibilité de faire ma compil soit à partir de mon répertoire copie, soit à partir du répertoire original (en sachant dans ce cas que les gens peuvent être en train de bosser dur les fichiers, répertoire en réseau)

Désolé d'avoir fait un pavé... Je suis en intérim et si j'arrive à leur pondre cette compilation en plus de mon travail normal, ça serait top

Bonjour,

Avant "Range("données").Copy" :

ActiveSheet.ShowAllData

Est-ce que "données" correspond à la bonne plage ?

A+

A priori ma plage données est ok, elle contient bien toutes les colonnes dont j'ai besoin.

le "ActiveSheet.ShowAllData" plante dès le premier fichier.. il n'y a aucun filtre activé.. Je sais pas mettre une condition qui m'enlève les filtres s'il y en a.

Si je bosse à partir de mon répertoire copié, j'ai testé ça :

Worksheets("suivi M51").Activate

Set Pop = CommandBars("Data").Controls("&Filtrer")

If Pop.Controls("&Afficher tout").Enabled = True Then

Worksheets("suivi M51").ShowAllData

ActiveWorkbook.Close SaveChanges:=True

mais j'arrive pas à l'intégrer à une boucle qui me fasse la même chose avec chaque fichier

Ajoute :

On error resume next

La macro passera à la ligne suivante du code si elle plante en essyant d'enlever les filtres.

A.

Cool, ça empêche de planter, merci

Par contre elle continue de me faire flipper cette boucle, je trouve jamais le même nombre de lignes dans le fichier global...

Bonjour à tous,

Toujours avant

Range("données").Copy

il faudrait s'assurer d'être sur la bonne feuille avec

Sheets("xxx").Activate

Amicalement

Claude

Vos petites lignes ont bien marché !

la macro ne plante plus, tout se passe parfaitement et les résultats sont justes.

Merci beaucoup.

Me reste plus qu'à mettre une petite barre de progression pour faire classe ainsi que 2-3 petits trucs pour faire joli et je vais épater les chefs

Bonjour,

a resolu3
Rechercher des sujets similaires à "probleme compilation fichiers"