Extraction en fonction de deux listes

@JFL : ok, ce pb est réglé et ... un autre apparaît ^^'

requetepb

cette colonne ne me sert à rien. Je peux éventuellement la supprimer si besoin.

dans les colonnes, j'ai modifié la sélection initiales pour récupérer l'ensemble des colonnes.

Bonjour à tous de nouveau !

Je ne comprends pas l'origine de cette erreur sur un champ qui, a priori, est supprimé...

Le fichier CSV posté était bien représentatif ?

Pouvez-vous préciser l'étape de survenance de l'erreur ?

non, non, je n'ai pas supprimé la colonne, mais je peux le faire.

ça survient quand j'actualise tout.

je vais faire le test avec le fichier que je vous ai transmis

Bonjour,

ok, je crois que j'ai trouvé le pb.

requetepb

je crois que PQ ne sait pas gérer les colonnes date dont il ne sait pas le type.

je vais m'atteler à réécrire chaque ligne puis retenterai.

Bonjour à tous !

Je vais être taquin.... : Vous demandez "A" alors que vous souhaitez "B"......

Si vous devez conserver l'intégralité des champs, il vous faut supprimer l'étape "SelCol" et régénérer le typage des champs à la fin (après avoir supprimé l'étape "Types"). Mais attention, cela suppose une stabilité dans les champs traités.

et c'est pas faux !

Bonjour à tous de nouveau !

et c'est pas faux !

Les miracles existent dans Excel.....

Ne pas oublier de passer le sujet en mode résolu !

J'ai une erreur improbable malgré le fait que je suis presque à mon fichier finalisé ...

requetepb1

Ci-dessous, l'en-tête de ma base de données :

requetepb2

j'ai les colonnes de 1 à 6 issues du fichier V2 qui sont ressortent en premier alors qu'elles devraient être intercalées telles que le défini la base de données

Bonjour à tous de nouveau !

Une erreur ? Vraiment ?

Pouvez-vous poster le code de votre requête ?

pas dit que cela venait de la machine XD

et voici :

let
    Source = Csv.Document(File.Contents(CheminCsv),[Delimiter=";", Columns=48, Encoding=1252, QuoteStyle=QuoteStyle.None]),
    #"Valeur remplacée" = Table.ReplaceValue(Source,".",",",Replacer.ReplaceText,{"Column21", "Column30", "Column47", "Column48"}),
    ETP = Table.PromoteHeaders(#"Valeur remplacée", [PromoteAllScalars=true]),
    Jointure = Table.NestedJoin(ETP, {"code_suppleant"}, tCodes, {"code suppleant"}, "tCodes", JoinKind.Inner),
    SuppTbl = Table.RemoveColumns(Jointure,{"tCodes"}),
    #"Type modifié" = Table.TransformColumnTypes(SuppTbl,{{"date fichier", type datetime}, {"gestion", Int64.Type}, {"mois", Int64.Type}, {"code_suppleant", type text}, {"code_soussuppleance", type text}, {"num_dossier", Int64.Type}, {"type_dossier", type text}, {"SI source", type text}, {"ID SI source", type text}, {"Online/Offline", type text}, {"Urgent", type text}, {"code_imputation", type text}, {"autorite", type text}, {"activite", type text}, {"date_creation", type datetime}, {"depart", type text}, {"arrivee", type text}, {"num_commande", Int64.Type}, {"date_emi", type date}, {"date_enga", type date}, {"montant", Currency.Type}, {"etat", Int64.Type}, {"num_facture", type text}, {"type_facture", type text}, {"date", type date}, {"date_h_certif", type datetime}, {"date_liquidation", type date}, {"date_mandat", type date}, {"num_mandat", Int64.Type}, {"montant_f", Currency.Type}, {"observations", type text}, {"pvoya", type text}, {"type_voya", type text}, {"enga_gouv", type text}, {"enga_unite", type text}, {"enga_annee", type text}, {"chorus", type text}, {"centre de cout", type text}, {"PCE", Int64.Type}, {"code_engagement_sslt", type text}, {"code_dom_fonctionnel", Int64.Type}, {"code_prog_financement", type text}, {"dossier duplique", type text}, {"dossier initial", type text}, {"code marche engage", type text}, {"code marche facture", type text}, {"mt engage", Currency.Type}, {"mt mandate", Currency.Type}}),
    #"Lignes filtrées" = Table.SelectRows(#"Type modifié", each ([chorus] = "01780031AA01")),
    #"Lignes triées" = Table.Sort(#"Lignes filtrées",{{"num_dossier", Order.Ascending}})
in
    #"Lignes triées"

- replacevalue : pour remplacer mes . par des , afin que mes montants soient considérés comme des chiffres

- selectrows : car j'ai besoin de virer tout ce qui ne me concerne pas

- sort : pour que cela soit trié sur une colonne cohérente.

Bonjour à tous de nouveau !

pas dit que cela venait de la machine XD

Hélas..... il se peut que vous ayez raison.....

L'étape "replacevalue" est, a priori, inutile. Le typage final des champ devrait s'en charger.

Comment faites-vous pour obtenir un ordre des champs différents ????

J'ai ajouté, après l'étape "Type modifié" de votre requête, une instruction pour comparer les champs (ETP / Type modifié). Et j'obtiens :

image

si je ne mets pas replacevalue avant, comme je veux que mes chiffres soient identifiés comme tels par la requête, j'obtiens une erreur.

si je regarde mes ordres de champs, c'est parfait, tout concorde.

mais dès que l'extraction s'effectue, échec. J'ai 6 colonnes (celles que je vous avais transmis initialement) qui ressortent en premier.

je vais faire un test avec une base vierge, en partant de 0.

Bonjour à tous de nouveau !

C'est une affaire bien étrange que la vôtre.....

  1. Nul besoin de "replacevalue pour obtenir des nombres. Exemple : image
  2. L'ordre des champs est conforme....

Si besoin est, on peut, via une instruction supplémentaire en fin de requêt, faire référence à l'ordre initial des champs :

= Table.SelectColumns("nom de l'étape précédente",Table.ColumnNames(ETP), MissingField.Ignore)

Salut Aragdur,
Salut les as,

une solution VBA par double-clic (on peut choisir un autre déclencheur, bien sûr) sur une feuille ou l'autre.
Depuis la feuille 'CSV", tu pourrais (car ce n'est pas encore programmé) ajouter ou supprimer des colonnes de données et leur ordre d'affichage dans la feuille de résultats 'BDD'.
Dans la ligne 2 de 'BDD' se trouvent des formules qui calculent le n° de colonne de cette donnée dans CSV.

=SI(A$1<>"";EQUIV(A$1;CSV!$A$1:$AZ$1;0);"")
image

Bref, en quelques clics, obtenir tes résultats et modifier les critères de recherche.
Pour l'instant, sauf ajout manuel d'un item dans cette liste, les résultats correspondront.

A+

3aragdur.xlsm (35.10 Ko)

Bonsoir les forumeurs,
Salut Aragdur,
Salut les as,

version améliorée.
- tu peux ajouter ou supprimer des items de ton CSV d'un clic sur l'en-tête de colonne. Ajouté = couleur orange.

image

- tu peux choisir l'ordre d'affichage dans 'BDD'.
Il suffit de choisir en une (ou série de) sélection les items que tu souhaites intervertir.
Ici, 'num_dossier' - 'date_creation'

image image

Comme tu vois, j'ai placé 'code_suppleant' en tête, question, à mon sens, de cohérence par rapport à 'Suivi budget'.

A+

7aragdur.xlsm (42.86 Ko)

@JFL : mes tests, après avoir refait ce que tu avais la bonté de m'avoir fait, sont concluants.

merci

@Curulis57 : merci pour ta solution également. Je vais regarder ça un peu plus précisément la semaine prochaine.

Bonjour à tous !

@JFL : mes tests, après avoir refait ce que tu avais la bonté de m'avoir fait, sont concluants.

merci

Bien.....

Je vous remercie de ce retour.

@Curulis57 : Excellent ! VBA fonctionnel est utilisable rapidement.

je verrai à l'utilisation si je suis plus fana d'une version ou d'une autre.

merci pour votre aide à tous.

Rechercher des sujets similaires à "extraction fonction deux listes"