Importation de certaines colonnes et lignes d'un fichier csv

Bonjour,

Je débute dans la création de macro et j'ai un problème.

J'ai des centaines de fichiers CSV que je souhaite traiter de manière automatique, mais je suis bloqué.

Les fichiers CSV contiennent une première ligne avec les intitulés des colonnes séparés par une virgule puis des 10 de milliers de lignes de données. (Exemple fichier CSV en pièce-jointe).

Ce que je souhaite faire dans un premier temps c'est importer la 1ère et 2ème colonne ainsi que la 5ème, sans importer la première ligne pour ces 3 colonnes.

Et ce qui serait vraiment top, serait que ça se fasse automatiquement pour les centaines de fichier à traiter.

Du coup, il faudrait que les données importées soient importées dans un classeur les unes à la suite des autres. Mes fichiers sources sont numérotés dans le titre si cela peut aider.

J'ai déjà réalisé une macro pour importer les 3 colonnes, mais elle importe aussi la 1ère ligne que je ne veux pas.

Je ne suis pas sûr qu'elle soit optimisée. (Fichier en pièce jointe V1Macro, avec exemple du résultat d'importation du fichier CSV)

Pourriez-vous m'aider à faire cela s'il vous plaît ?

Avez-vous besoin de plus d'information ?

3v1macro.xlsm (19.09 Ko)

Bonjour à tous !

Et....

Avez-vous étudié la piste Power Query ?

C'est l'outil idoine pour opérer ce traitement.

Merci pour votre réponse.

Je ne connais pas du tout, de ce que je viens de voir sur internet c'est un plugin qui peut être installé pour être utilisé avec Excel ?

Bonjour à tous de nouveau !

Depuis Excel 2016, cet outil est nativement intégré dans Excel.

Dans votre cas, il pourrait lire l'intégralité des fichiers CSV d'un répertoire dédié, sélectionner les champs souhaités et vous restituer les données sous la forme d'une table, d'un TCD. Ces informations peuvent aussi, si besoin est, être intégrées dans le modèle de données

OK, je viens de voir ça effectivement, bon est bien je teste cela de suite.

Avez-vous des conseils à me donner par rapport à ce que je souhaite faire en utilisant Power Query ?

Bonjour à tous de nouveau !

Les différentes opérations pour arriver au résultat souhaité sont très basiques et devraient pourvoir être effectuées via l'interface utilisateur, c'est-à-dire sans devoir coder.

Si vous rencontrez une difficulté, n'hésitez pas à revenir vers la communauté.

Voici que j'obtiens à partir de votre fichier CSV :

image

J'ai commencé et je rencontre 2 problèmes.

1-Mes fichiers sont numérotés de 14.CSV à 300.CSV, du coup je suppose que vue qu'ils ne sont pas numérotés 014 015 016 par exemple, il ne me place pas les fichiers en dessous de 100 en premier. Comment puis-je y remédier ?

2-La colonne date dans les fichiers CSV est au format M/J/A, du coup arrivé au fichier contenant la date 08/13/2024, il me dit : "[DataFormat.Error] Désolé... Nous n'avons pas pu analyser l'entrée fournie à une valeur Date".

Que puis-je faire ?

Bonjour à tous de nouveau !

Pouvez-vous joindre quelques fichiers CSV ?

C'est fait, merci.

Je les ai allégés, car ils font 2500ko chacun d'origine.

Bonjour à tous de nouveau !

En retour une proposition :

Mettre à jour le chemin du dossier contenant les fichiers CSV puis "Actualiser tout".

Mode opératoire :

  1. Création d'une requête pour retraiter UN fichier CSV.
  2. Transformation de cette requête en fonction
  3. Application de cette fonction sur les différents fichiers CSV du dossier.

Quelque chose coince à priori, quand je modifie le chemin d'accès dans "paramètres" et que je fais "actualiser tout", j'obtiens le message suivant :

image

Bonjour à tous de nouveau !

Dans Power Query, et dans le menu Fichier/Option/Option de requête : modifiez la "confidentialité" en choisissant "Toujours ignorer les paramètres de niveau de confidentialité."

image

Ca fonctionne mieux comme ça, mais ça m'a bloqué, car trop de ligne.

La limite semble être à environ 1000000.

D'après mes estimations, je devrait avoir plus de 15 000 000 de lignes, ça va faire juste.

Est-ce qu'il y a un moyen de filtrer les données avant leur importation dans le fichier excel ?

Bonjour à tous de nouveau !

Il vous sera nécessaire d'agréger ces données dans Power Query car la limite Feuille / Excel est de 1.048.576 lignes.

J'ai modifié mon message pendant que vous étiez en train de me répondre.

Effectivement je dois faire quelque chose, comment je peux soit filtrer les données avant importation soit agréger ces données ?

Bonjour à tous de nouveau !

Le champ des possibles dans Power Query est immense (Excel --> +/- 500 fonctions. Power Query --> +/- 700 fonctions).

Mais ne sachant pas ce que vous comptez faire de ces données, c'est difficile de vous accompagner.

OK, donc je vais tenter de préciser mon besoin.

Les fichiers csv à traiter sont des fichiers de suivi dont je souhaite connaître seulement les dates, heures et valeurs lorsque la valeur de la colonne 3 change.

Pour faciliter cela, j'arrondie au multiple de 0,5 les valeurs de la colonne 3 dans la colonne 4.

Puis dans la colonne 5 je crée une formule qui compare la valeur arrondie à la précédente et à la suivante, lorsque les 3 sont identiques ça met un 0 et si la précédente ou la suivante sont différente, ça mets un 1. (Voir fichier résultats étape 1)

Une fois que cela est fait, je supprime toutes les lignes dont le résultat en colonne 4 est un 0, comme cela je garde seulement les bornes des plateaux de données lorsqu'il y a un changement de valeur.

(Voir fichier Résultats étape 2)

En espérant que ce soit clair.

Bonsoir à tous !

Sur la base des deux fichiers CSV fournis, la requête me retourne le tableau suivant :

image

Est-ce le résultat attendu ?

Il manque juste la borne de début ou de fin du plateau.

Lorsque qu'il y a un plateau avec une valeur qui est stable, ce dernier commence par exemple le 01/08 à 14h00 à 35 puis ce termine le 10/08 à 8h30 à 35 puis à 8h31 la valeur change à 35,5 est reste stable jusqu'au 02/09 à 7h35 à 35,5, puis nouvelle valeur....

Donc dans le tableau je dois retrouver !

01/08 14h00 35

10/08 8h30 35

10/08 8h31 35,5

02/09 7h35 35,5

Est-ce un peu plus clair ?

Avec les fichiers csv que j'avais donné, ça donnerait cela :

image

Dans ce cas lors du changement de valeur, la date et l'heure ne se suivent pas car les fichiers que j'ai fournis ne se suivent pas.

Merci beaucoup pour votre investissement et votre aide.

Rechercher des sujets similaires à "importation certaines colonnes lignes fichier csv"