XL 2016 Transformer des données brutes en entête

YRES

XLDnaute Nouveau
Bonjour,
Je cherche à transformer des données brutes issues d'un programme qui me retourne un tableau CSV plutôt simple mais qui ne permet pas d'exploiter les données par la suite.
Il s'agit de transformer les données dans l'entête du tableau et de remplacer la donnée par VRAI lorsqu'elle était présente et FAUX si non.

Un petit dessin permet de mieux comprendre, donc je vous joins un classeur qui donne un état initial et un résultat attendu...

Est-ce que c'est possible de faire une telle manipulation avec des formules?

Merci!
 

Pièces jointes

  • Classeur_transfodata.xlsx
    9.6 KB · Affichages: 13

vgendron

XLDnaute Barbatruc
Bonjour

Pas sur d'avoir compris, mais un test avec cette formule en B15
tu tires à droite et vers le bas
VB:
=SI(SOMMEPROD(($A$2:$A$9=$A15)*(B$2:B$9=B$14));"VRAI";"FAUX")
cette formule plus simple fonctionne tout aussi bien
VB:
SI(B2=B$14;"VRAI";"FAUX")
 

YRES

XLDnaute Nouveau
salut @Hasco

je ne sais pas pourquoi. mais je pressens que la liste des entetes (itemxx) n'est pas connue à l'avance..
une proposition par macro..
Bonjour vgendron,
Tu as parfaitement compris ce que je voulais faire et le présentiment était juste. Je suis incapable de prédire le nombre d'entêtes.

Cette fonction sommeprod est d'une puissance folle! Je reconnais être un peu une huître dans la compréhension de son utilisation ...

Et ce code VBA, je ne connaissais pas le type New Dictionnary.

Un grand merci!
 

Hasco

XLDnaute Barbatruc
Repose en paix
Re,

Puisque XLD ne supporte pas les .csv voici un fichier .txt qui sera ouvert par les requêtes comme un csv.
N'oubliez pas avant d'actualiser les requêtes de modifier le chemin du fichier en cellule H11 (nommée 'Fichier').

Vous trouverez (Données/Requêtes & connexions) deux requêtes avec deux méthodes différentes. La deuxième demande d'avantage d'interventions manuelles que la première.
 

Pièces jointes

  • items.txt
    305 bytes · Affichages: 2
  • Classeur_transfodata.xlsx
    32.9 KB · Affichages: 3

YRES

XLDnaute Nouveau
Re,

Puisque XLD ne supporte pas les .csv voici un fichier .txt qui sera ouvert par les requêtes comme un csv.
N'oubliez pas avant d'actualiser les requêtes de modifier le chemin du fichier en cellule H11 (nommée 'Fichier').

Vous trouverez (Données/Requêtes & connexions) deux requêtes avec deux méthodes différentes. La deuxième demande d'avantage d'interventions manuelles que la première.
Merci pour les fichiers d'exemple.
Si je comprends bien la requête saisie gère le formatage du tableau?
Je ne connais pas le langage de PowerQuery, mais il me semble très puissant.

Sur la methode 1 j'ai une erreur qui indique que pour une fonction on entre 5 paramètres alors qu'elle en attend entre 2 et 4.

Sur la methode 2 ça fonctionne avec le fichier de test mais pas avec le fichier que je souhaite traiter. Les colonnes remontent mais pas les utilisateurs ni la notion de VRAI/FAUX

Est-ce que tu as des liens ou des choses qui me permettraient d'aller plus loin sur le sujet PowerQuery autour de mon sujet? ça me semble être une belle entrée en matière.

Merci
 

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Si je comprends bien la requête saisie gère le formatage du tableau?

Pas le formatage, l'importation et la transformation des données, et éventuellement leur type (texte, décimal, etc)
Power query renvoie les données dans un Tableau structuré Excel,
Excel qui prend en charge le format (aspect visuel) du tableau et de ces éléments/

Pour le problème sur la première méthode, il s'agit certainement d'une erreur due à la différence de version power query. Il faudrait que vous me disiez sur quelle étape cette erreur est levée*, je pense que c'est l'étape nommée : "Index Ajouté"

* Click dans le tableau de la méthode 1 qui renvoie l'erreur
Dans l'onglet 'Requête' qui s'ouvre sur le ruban, cliquer sur le bouton 'Modifier' (à gauche)
Dans l'éditeur Power query qui s'ouvre, dans le panneau de gauche, vous avez la liste des requêtes,
Vérifiez que la requête 'RQ_Items' (méthode 1) est sélectionnée.
A droite de l'éditeur vous avez la liste des étapes de la requête.
Cliquez sur la première étape, nommée 'Fichier'
Si le panneau du milieu vous présente le fichier texte (juste son nom et son poids) , cette étape est bonne
Sélectionnez les étapes suivantes une à une j'usqu'à ce que le panneau du milieu vous signal un blème.
A ce moment là, relevez le nom de l'étape puis dites le moi.

S'il s'agit de l'étape "Index Ajouté", gardez la sélectionnée,
Au-dessus du panneau central vous avez une barre de formule comme celle que vous avez sur excel (en simplifié). Si elle n'est pas affichée, menu 'Affichage/Barre de formule'
donc dans cette barre de formules vous aurez à l'étape "index Ajouté" :
= Table.AddIndexColumn(#"Dépivoter les colonnes", "Index",0 )
Dans cette formule qui numérote les lignes de 0 à n, enlevez supprimez le troisième et quatrième argument: ,1,Int64.Type

Pour avoir au final :
= Table.AddIndexColumn(#"Dépivoter les colonnes", "Index",0)

Validez. Vous aurez fait votre première modification manuelle dans Power Query. Bravo

Une initiation à power query pour une prise en main et les premiers pas :

Cordialement
 
Dernière édition:

YRES

XLDnaute Nouveau
salut @Hasco

je ne sais pas pourquoi. mais je pressens que la liste des entetes (itemxx) n'est pas connue à l'avance..
une proposition par macro..
Bonjour vgendron,
Après avoir laisser décanter ce sujet, j'ai voulu reprendre ce code et l'appliquer dans un contexte office 2013 et je me suis heurté à un problème.

En effet, lorsque je reprends le code et que je le met dans mon fichier de situation réelle, j'obtiens une erreur indiquant que le "type défini par l'utilisateur n'est pas défini".

A quel moment le DicoItem a-t-il vu son type être défini?
A priori pas dans la partie Module puisque je n'ai que copié-collé le contenu du code pour le moment.

Merci
 

Discussions similaires

Statistiques des forums

Discussions
314 497
Messages
2 110 239
Membres
110 708
dernier inscrit
novy16