Colonne d'une BDD ACCESS qui ne remonte pas dans Excel via PowerQuery

Bonjour à tous et toutes,

Ce topic risque d'être à la frontière entre EXCEL et ACCESS.

J'ai dans ma BDD ACCESS, j'ai une table que j'importe de façon toute à fait classique dans mon EXCEL via une requête PowerQuery.

Cette table possède 2 colonnes particulières, qui ont pour point commun d'autoriser plusieurs valeurs.

La liste des valeurs (ici du texte) est d'abord sélectionnée par une requête faite dans ACCESS et il est donc possible d'en sélectionner plusieurs qui viendront se positionner dans le champ de la table ACCESS séparées d'un ";".

Exemple :

2024 05 02 16 13 47 ceamar reseau sous vide

Mais lors de l'import de ma table dans Excel, la requête PowerQuery ne voit tout simplement pas ces 2 colonnes. Pour Excel, ces colonnes n'existent même pas comme en témoigne ce bout de code dans PowerQuery :

= Table.ColumnNames(_T_INterventions)
2024 05 02 16 09 00 t interventions editeur power query

Qui me liste bien TOUTES mes colonnes de ma table Intervention, mais sans les 2 colonnes multichoix qui se nomment normalement "IN_OPERATEUR" et "IN_OBJET".

Qui du coup ne s'importent pas.

D'ailleurs les Tables liées (numéros de lignes 14 à 16) devraient aussi comprendre les Tables correspondantes au personnel et aux équipements (IN_OBJET) si je comprend bien comment ça marche, ici pas de colonnes donc pas de tables non plus.

Je ne sais pas si le problème peut être réglé depuis Excel via un bout de code PowerQuery, ou par du paramétrage de mes colonnes dans ACCESS, voir même si c'est possible. Pourtant il suffirait qu'EXCEL importe les données de ces colonnes en tant que texte mais je suppose que ça doit être plus compliqué que ça.

Si vous avez une idée sur le sujet je suis preneur… Car là je sèche.
Merci d'avance,

Bonjour

Dans la modèle des bases des données relationnelles, les champs multivalués ne sont pas prévus.

Ils ont été ajoutés à Access tardivement (2013 il me semble) sans qu'on comprenne pourquoi car ils n'apportent pas beaucoup d'avantages et pas mal d'inconvénients.

Effectivement PQ ne les importe pas
https://ssbi-blog.de/blog/technical-topics-english/loading-multivalued-fields-from-microsoft-access-...

On peut via une requête Access créer une table où ces champs sont découpés mais avec des relations cela risque de ne pas répondre à toute ta problématique...


Ok merci Microsoft d'ajouter une fonctionnalité pas finie dont on se rend compte lorsque la BDD est finie.

Bon. Etant donné que l'export Excel de la table lui gère très bien ces colonnes multivaluées, si un jour j'ai beauuuuuucoup de temps à passer là dessus, il faudra voir pour faire une macro de mise à jour de la requête Powerquery, suivie d'un export de la table Access, le traitement du fichier généré de façon à en faire une nouvelle table (incorporée d'office au modèle de donnée du fichier) avec uniquement les données comprises dans ses champs et reliées à l'ID de l'intervention.

Le nombre de lignes par ID d'intervention dans cette nouvelle table devrait être égal dans mon cas à la multiplication du nombre d'items de chaque champs.

Chaque Opérateur ayant logiquement agit sur chaque Objet. Ou alors plus simple je fais sauter la notion d'Opérateur qui est bien moins importante que le suivi de l'intervention...

Huuum...

Mouai j'ai la vision mais actuellement absolument pas les compétences VBA suffisantes pour faire une telle chose de toute façon

Dire que j'ai déjà passé un certain temps à faire fonctionner ces champs multivalués pour rien, ça me déprime !

Merci 78chris pour cette dure vérité

Cela étant tu dis :

On peut via une requête Access créer une table où ces champs sont découpés mais avec des relations cela risque de ne pas répondre à toute ta problématique...

Dis m'en plus car si tant est que chaque lignée crée soit reliée à l'ID de l'Intervention, ya possibilité que ça le fasse si effectivement on peut paramétrer la relation par défaut.

Bonjour

Ci-joint un exemple de base Access :

  • une table avec un champ multivalué Data_MultiValué
  • une table Size liée à la première qui permet d'alimenter le champ multivalué
  • une requête création de table Extraire_sizes qui génère une table destination (écrasée à chaque génération) et qui est donc exportable

J'avais créé cet exemple en 2021 lors d'une même question que le tienne...

Bonjour,

Désolé du délais, mais j'ai tenté plusieurs choses.

Ce que tu as fait pourrait parfaitement coller à mes besoins, je défini la relation qui va bien dans le management de mon modèle de données et je réalimente la table avant chaque fermeture de la base ACCESS. C'est du bricolage mais ça fait le job.

Par contre, j'ai reproduit ce que tu fais à l'identique (selon moi) mais moi j'ai un message d'erreur peu engageant.

"Les champs à valeurs multiples ne sont pas autorisés dans les instructions SELECT INTO"

Toi tu ne l'as pas quand j'utilise ta requête depuis ton fichier. Mais je ne vois pas de différence.

Bonjour

La requête en SQL

SELECT T_INterventions.IN_ID, T_INterventions.IN_OBJET.Value INTO T2
FROM T_INterventions;

Ok j'ai réussi, c'est fou mais de manière auto, ACCESS écrivait :

SELECT T_INterventions.IN_ID, T_INterventions.IN_OBJET.Value, * INTO T2
FROM T_INterventions;

C'est le ", *" qui rendait l'ajout impossible.

Donc c'est ok pour moi à ce stade mon fichier va fonctionner (Merci infiniment )

J'en ai profité pour creuser le concept de recréer une table à chaque fois ou pas.

Et grâce à toi qui m'a ouvert la voie j'ai poussé un peu et j'ai trouvé cela :

INSERT INTO T2 (IN_ID, [Value])
SELECT T_INterventions.IN_ID, T_INterventions.IN_OBJET.Value
FROM T_INterventions
WHERE T_INterventions.IN_ID Not in (SELECT IN_ID FROM T2);

Plus besoin de supprimer/recréer la table à chaque fois grâce à ça

Ca règle les soucis de relations.

Champs Multivalués : Problème résolut !!!!

Au passage, note au modérateur, ce post est dans la rubrique EXCEL, c'est clairement un topic ACCESS désormais..

Rechercher des sujets similaires à "colonne bdd access qui remonte pas via powerquery"