appliquer filtre sur fichier unique, puis copier coller le résultat

Y compris Power BI, Power Query et toute autre question en lien avec Excel
T
Theze
Passionné d'Excel
Passionné d'Excel
Messages : 4'020
Appréciations reçues : 305
Inscrit le : 26 janvier 2011
Version d'Excel : 2007/2019

Message par Theze » 26 février 2019, 06:54

Bonjour,

C'est très simple, la variable "Feuille" contient un de ces trois noms selon le cas : "BI 2018", "CJIA 2018" et "CJI3 2018" et dans le classeur cible (ta base de données à priori), une des feuilles visées est probablement orthographié légèrement différemment, espace en trop, lettre en minuscule, etc...
Contrôle les noms des feuilles du classeur car la "bI 2018" est différent de "BI 2018" !
J'ai corrigé quelque bug qui étaient liés au fait que certains fichiers étaient en XLSX et d'autres en XLSM.
Il n'y a aucune raison qu'il y est un bug car la fonction de récupération de fichiers permet justement de les récupérer sans discrimination avec la présence des astérisques qui entourent l'extension de bas ".xls" :
Fichier = Dir(Chemin & "*.xls*")
Tu peux d'ailleurs tester avec ces lignes de code sur un dossier contenant des .xlsx, xlsm, xlsb (résultat dans la fenêtre d'exécution Ctrl+G) :
Tbl() = RecupFichiers(Chemin)

For I = 1 To UBound(Tbl): Debug.Print Tbl(I): Next I

Stop
1 membre du forum aime ce message.
Il vaut mieux un qui sait que cent qui cherchent :wink:

Ce forum étant un lieu de partage, je n'accepte pas les messages privés !
g
gperros
Jeune membre
Jeune membre
Messages : 30
Inscrit le : 6 octobre 2014
Version d'Excel : 2007

Message par gperros » 26 février 2019, 13:44

Hello,

Tu as raison c'était bien une erreur d'orthographe d'un onglet qui entrainait le problème.

J'ai fais un test en précisant un chemin qui menait à une dizaine de classeurs Excels, et le code a fonctionné.
J'ai seulement un problème avec le format des données qui sont collées. Je me rend compte que certaines données sont collées en format standard ou texte alors que ce sont des nombre ou des dates. Et ce phénomène semble être très aléatoires, car seul certaines lignes sont concernées.
J'ai donc testé cela:
.Range(.Cells(1, 1), .Cells(UBound(Tbl, 2), Col)).Value = Application.Paste(Tbl)
J'ai remplacé Transpose par Paste, mais cela génère l'erreur d'exécution438:"propriété ou méthode non gérée par cet objet".
T
Theze
Passionné d'Excel
Passionné d'Excel
Messages : 4'020
Appréciations reçues : 305
Inscrit le : 26 janvier 2011
Version d'Excel : 2007/2019

Message par Theze » 27 février 2019, 06:44

Bonjour,
.Range(.Cells(1, 1), .Cells(UBound(Tbl, 2), Col)).Value = Application.Paste(Tbl)
Ce serait trop simple ! Dans ce cas de figure, le compilateur de sait pas coller un tableau mais seulement un Range pour un tableau, il y a affectation des données.
Plusieurs solutions peuvent être envisagées, la première est de forcer le format dans la ou les colonnes incriminées sans avoir forcément le résultat escompté car Excel est parfois têtu !
La seconde, serait d'utiliser plusieurs tableaux pour la récup en les typant explicitement mais le temps d'exécution s'en trouverait allongé et sur 500 fichiers ???
La troisième serait d'effectuer une copie de la base de données, d'appliquer les formules dans les colonnes concernées et de revenir au code initial (copie du filtrage) ce qui à mon avis embarquerait les formules avec le reste.
Quelles sont les colonnes qui posent problème, car dans ta base de données, si par exemple je prend la feuille "BI 2018", les colonnes de A à S sont au format texte malgré des colonnes contenant des nombres, la colonne T est au format nombre et U au format date ce sont ces dernières qui posent problème ?
Déjà, dans ta base de données dans la feuille "BI 2018" par exemple il y a des incohérences, les trois quarts des colonnes (A à C, E, H et K) contenant des nombres sont considérés comme étant du texte je pense que de là vient le problème, le compilateur ne sachant pas vraiment quel type de format appliquer !
Il vaut mieux un qui sait que cent qui cherchent :wink:

Ce forum étant un lieu de partage, je n'accepte pas les messages privés !
g
gperros
Jeune membre
Jeune membre
Messages : 30
Inscrit le : 6 octobre 2014
Version d'Excel : 2007

Message par gperros » 28 février 2019, 13:28

Bonjour,

il est vrai que la base de données BI 2018 contient du format texte (données extraite du logiciel).
Mais ce n'est pas gênant tant que la colonne "T" qui contient la valeur cherchée soit au format nombre.
Pour l'onglet CJIA 2018 c'est plus complexe, car la colonne "A" et "P" doit être au format date, la "F" au format nombre.

Je vais voir si je peux extraire du logiciel un format Excel plus homogène, pour éviter ces problèmes.

Bonne journée!
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message