Requête sql avec critères dans fichier externe pour importer des lignes

Bonsoir à tous,

Je souhaite importe dans une feuille excel les lignes d'une fichier externe en fonction de critères.

Ces critères sont situées sur la feuille "Filtres_champs" du fichier excel initial.

Je pensais déjà devoir répertorier dans une table virtuelle les critères "actifs" (en gros les champs dont une valeur existe en ligne 2), puis créer une requête SQL pour me connecter au fichier externe et par tri, basé sur les champs préselctionné dans le fichier initial, sélectionner toutes les lignes qui répondant aux critères, pour ensuite les enregistrer un nouveau classeur excel.

Et je ne sais comment procéder pour répertorier les champs actifs et ensuite faire la requête SQL multi critères...

Je vous joins mon fichier xlsm en pj. Ainsi qu'un screenShot du fichier dont je souhaite extraire des lignes entière dès que les champs en vigueur dans le fitre correspondent aux valeurs cherchées.

En vous remerciant pour vos conseils :)

Bonjour

Tu utilises des méthodes anciennes

les sources de listes déroulantes devraient être des tableaux structurés (on les utilise ainsi depuis 19 ans)

Tu as 365 : laisse tomber ADOB pour PowerQuery qui existe depuis 12 ans et est totalement intégré à Excel : tu pourras extraire très simplement sans VBA...

Joins un exemple de fichier externe

Bonsoir Chris,

Merci pour ta réponse

Oui je sais qu'avec Qwery c'est possible et même avec les filtres avancés intégrés à Excel.

Mais je souhaitais mettre en place un macro pour atomatiser cette tâche car je vais devoir créer chaque mois environ 10 fichiers xl à partir de cette base.

Et c'est aussi l'occasion d'en apprendre un peu plus sur VBA et SQL notamment.

Ce que je souhaite faire c'est moduler mes filtrers via listes déroulante dans l'onglet Filtres_champs puis tirer les lignes du fichiers sources en fonction de, par exemple : MSKT= "Sebastien Haugmard"; "CLASS" ="A" ... et pareil pour tous les champs présents dans le filtre dès qu'une valeur leur est attribuée

Merci ;)

36fichierexterne.zip (1.33 Mo)

Mais l'apect de la source me parait aussi peu adéquat pour une exploitation via les méthodes que je vise.

Je l'ai cependant joint tel quel pour voir si via SQL il est possible de s'adapter lorsque les entêtes d'une base de donnée ne sont pas sur la ligne 1

Bonjour SHTOURS,

Vous semblez avoir oublié la charte du forum

Je vous invite donc à la relire [A LIRE AVANT DE POSTER] et notamment :

  • Ne postez aucune information personnelle et/ou confidentielle sur le forum (en particulier dans les fichiers joints) et rappelez-vous que vous êtes responsable de tout ce que vous postez sur le forum.

Merci d'y faire attention SVP

Bonsoir excusez ce écart de ma part je vais refaire un post en enlevant les données qui peuvent être sensibles

Bonjour

Oui je sais qu'avec Qwery c'est possible et même avec les filtres avancés intégrés à Excel.

Non les filtres avancés ne fonctionnent pas sur un fichier externe

Mais je souhaitais mettre en place un macro pour atomatiser cette tâche car je vais devoir créer chaque mois environ 10 fichiers xl à partir de cette base.

Les requêtes PowerQuery automatisent tout autant que VBA

Et c'est aussi l'occasion d'en apprendre un peu plus sur VBA et SQL notamment.

Comme déjà dit ADOB est obsolète par rapport aux possibilités offertes par les Power.
SQL reste utile pour les bases de données mais à travers PowerQuery et non VBA

Ce que je souhaite faire c'est moduler mes filtrers via listes déroulante dans l'onglet Filtres_champs puis tirer les lignes du fichiers sources en fonction de, par exemple : MSKT= "Sebastien Haugmard"; "CLASS" ="A" ... et pareil pour tous les champs présents dans le filtre dès qu'une valeur leur est attribuée

J'ai très bien compris ce que tu veux faire...

Bonjour Chris

J'avais pratiqué un peu power query, mais je ne crois pas pouvoir automatiser la création d'un nouveau fichier excel a partir d'une requête.

Et c'est vraiment ce que je souhaite réaliser dans ce cas-ci.

Effectuer 6 tri différents du tableau externe avec pour une des 6 opérations une invit de sauvegarde du tri réalisé dans un nouveau fichier xlsx.

En te remerciant,

RE

Il suffit d'avoir un modèle contenant :

  • le lien vers le fichier externe indiqué dans une cellule (alimenté manuellement ou par VBA)
  • Le tableau pour filtrer avec ses sources de listes déroulantes
  • les requêtes permettant d’obtenir l'extrait correspondant aux choix effectués

Ne reste plus qu'à enregistrer le fichier sous un autre nom ( manuellement ou par VBA)

Ok !

Si je te renvoie un fichier tu saurais me réaliser un exemple succin ?

car je ne vois pas du tout comment on realiser ça sous power query

Merci

RE

Ton fichier initial n'est pas propre : il y a une inversion ZIP et ville en ligne 980 et la colonne date contient tout et n'importe quoi ce qui permet pas de l'utiliser en recherche...

J'ai refait quelques une des listes déroulantes (tableaux structurés et plages nommées conformes aux bonnes pratiques)

Un onglet Tech permet de préciser

  • dans le tableau TypeCrit le typage des colonnes utilisées pour le filtre (tableau Choix) : à compléter
  • le chemin d'accès au fichier externe : il faut le modifier avant d'actualiser (clic droit dans le tableau orange ou Données, Actualiser tout ou VBA)

Je n'ai laissé qu'un des noms (cité dans tes messages) et anonymisé les autres : il faut modifier la source de la liste déroulante pour pouvoir choisir un vrai nom...

EDIT : le bon fichier étant posté là https://forum.excel-pratique.com/s/goto/1094453, je supprime le premier

Bonsoir Chris

Merci pour ton aide !!

Je rencontre un soucis j'ai l'impression que le choix de la ville est obligatoire .. et je souhaite pouvoir créer des tri sur les champs sans que cela implique que certains soient obligatoires.

Je viens de passer un petit moment devant les table (photo cijointe) mais je ne comprends pas trop la signification de chaque requête

capture d ecran 2022 09 25 203338

Nan vraiment je ne comprends pas, car meme l'absence de "CLASS 1" créé un échec.

RE

Il me semblait avoir supprimé l'étape de typage manuel...

Ci-joint correction

Ca fonctionne je te remercie !!

Est ce que tu peux me dire à quoi correspondent les 6 requêtes dans Power Query? (succintement). J'ai prévu de prendre un cours dans la semaine histoire de comprendre un peu plus tout ça, car ayant fait un peu de PQ là je m'avoue un peu perdu ..

Merci pour tout ça déjà !

RE

  1. Base récupère le contenu de la base dans le fichier externe
  2. Choix récupère le tableau Choix (tes critères de filtre), propage les choix sur les lignes si cellules non remplies (principe du OU sans être obligé de le faire manuellement) et type les colonnes (étape devenue inutile)
  3. Choix0 part de Choix, élimine les colonnes ne servant pas de critères car vides : reste la liste des colonnes utiles pour le filtre
  4. TypCrit récupère le tableau qui liste le type des divers critères selon la norme PowerQuery pour leur typage auto
  5. Typages transforme TypCrit pour le typage auto
  6. Extrait extrait les données de Base en partant de Choix
    L
    es 1ères étapes éliminent les colonnes vides de critères du tableau de Choix,
    Puis utilisation de Typages pour typer automatiquement les colonnes restantes (le pivotage, dépivotage fait perdre le typage manuel) et fait une équijointure avec Base.
    Le typage est indispensable pour permettre de faire abstraction de la casse : comme VBA, PowerQuery est case sensitive et dans le cas d'une jointure entre tables il faut impérativement que les textes soient bien différenciés des nombres ou autres et que les typages soient identiques des 2 côtés.

Si tu ajoutes des critères il faudra, outre l'ajout des colonnes au tableau Choix, des listes déroulantes et de leur source :

  • compléter le tableau de l'onglet Tech pour le typage (attention aux colonnes incorrectes comme la date où en cas d'erreur (le typage date est en erreur sur ces données) le résultat ne peut se charger...

Normalement cela devrait fonctionner sans autre modifs...

Bonsoir Chris,

Merci beaucoup pour ton aide et tes explications. Je vais prendre le temps de regarder tout ça tranquillement dès que j'ai un peu de temps .

Merci

Rechercher des sujets similaires à "requete sql criteres fichier externe importer lignes"