Recherche par position d'onglet
Bonjour,
J'ai déjà posté un premier sujet admirablement résolu sur des caractères sournoisement invisibles. Merci encore @cousinhub.
Mon nouveau problème, je suis parvenu à créer une macro pour l'import de fichier *.csv puis traitement sur un feuillet spécifique.
J'effectue des "rechercheV" sur le feuillet importé, cependant cette recherche doit comporter le nom exact du feuillet.
Actuellement dans ma macro j'intègre le renommage de l'onglet importé, puis le remplacement des erreurs survenues dans mon onglet de traitement (Ctrl+H puis remplacement des occurences #REF! par le nom du feuillet)
Ma question est la suivante:
Est il possible d'effectuer une recherchev sur un autre feuillet en lui indiquant sa position plutôt que son nom?
Merci ;-)
Re-,
Pourquoi faire une formule avec comme référence un nom d'onglet, alors que tu as un Tableau Nommé (dans ta macro, "_2023_02_07")
Il suffirait de lui donner un nom générique (genre "T_Final"), et ensuite y faire référence dans les formules..
Ce qui donnerait dans ton fichier mis dans l'autre fil :
=RECHERCHEV($A5;T_Final;7;FAUX)Et ainsi, plus de pb...
Justement, lors de l'ouverture du fichier par un utilisateur tiers, le premier onglet n'est pas présent. En exécutant la macro le feuillet apparaît avec le bon nom.
Et la raison pour laquelle c'est paramétré ainsi, c'est que s'il existait déjà ce premier onglet, lors du lancement de la macro, il y aurait une erreur car création d'un nouveau feuillet avec le même nom et donc bug.
Tu me diras donc pourquoi renommer pendant la macro? Si je mets le nom de l'onglet "_2023_02_07"dans les formules, lors de l'importation du *.csv les requêtes et connexions gardent en mémoire le fait que ce fichier a potentiellement été déjà importé, et me renommera le feuillet "_2023_02_07_(nmbre d'itération d'import)" lors de la macro, et les formules, de fait, ne fonctionneront plus.
Cette idée de position de feuillet me permettrait de me passer d'une bonne partie des manip de la macro, purge des requêtes et connexions, renommage de l'onglet importé depuis *.csv, remplacement via Ctrl+H des erreurs.
Et le top par dessus tout serait que dans ma macro il m'importe le dernier fichier en date et non pas qu'il me l'importe par nom.
Re-,
Je reprends suite à mauvaise piste...
Pour moi, le plus simple est juste de mettre à jour la requête initiale, sans la recréer (mais cela, Chris te l'a déjà dit..)
Il suffit de mettre le nom du fichier du jour dans une cellule, et d'actualiser
Plus rien d'autre à changer..
Eh si, plus de VBA du tout
Bonjour,
En effet, suite à la relecture de ton post, je me suis un peu plus attardé sur les requêtes, navré encore une fois je n'ai vraiment pas l'habitude d'excel.
J'ai plutôt l'habitude de bosser sur des logiciels de DAO où les termes sont un peu différents (Xref) d'où ma na "nage en eaux troubles".
J'ai donc créé une macro plus simple avec mise à jour des requêtes, car pour l'utilisateur cible il semble compliqué d'aller chercher les requêtes dans les onglets et d'actualiser le tout.
Donc il s'agit d'une requête Power query? Est ce que le fait de faire une Macro avec ça n'est pas risqué? Comme le disait Chris?
Bonjour,
Ce que tu crées dans ta macro, c'est effectivement une requête Power Query.
Il est inutile de supprimer/recréer, une fois qu'elle est faite.
Dans le fichier joint, j'ai supposé que le fichier de travail est dans le même répertoire que les fichiers *.csv.
Dans l'onglet "Import", tu as :
- En cellule P1, une formule qui te donne l'adresse du répertoire, et qui sert à la requête. Si les csv sont dans un autre répertoire, tu l'écris en dur dans cette cellule (ne pas oublier le back slash en fin "\")
- La requête (qui en plus d'importer tes données, les met également en forme, en supprimant notamment les "cm", et en convertissant en nombre décimal)
- Cette requête filtre les fichiers csv du dossier, et sélectionne le dernier "modifié" (on peut modifier, prendre le dernier créé, accédé...)
Dans l'onglet "Traitement2", un bouton activant une macro de mise à jour de la requête.
J'ai également modifié les formules pour bien faire référence au Tableau "T_Final"
Si tu n'y arrives pas, reviens.