Recherche une valeur en fonction d'une valeur dans une colonne

Bonjour,

Je travaille sur un plan de maintenance afin de planifier des entrées en atelier. Pour cela, j'ai un fichier excel et je remplis des cases correspondant à des maintenances. J'ai trouvé une petite formule (SI.CONDITIONS) afin que mon fichier affiche un "0" si aucune maintenance, "P" pour petite maintenance, "G" pour grosse maintenance. Ces valeurs sont dans des colonnes (une par semaine).

Afin de rendre le planning lisible, je suis à la recherche de deux formules afin d'afficher pour chaque semaine les numéros correspondant aux "P" et "G", sachant qu'il peut y avoir plusieurs de chaque par semaine. Et je sèche totalement. En gros, pour telle colonne, lorsqu'un P, afficher la valeur de la colonne correspondante (sur la même ligne des P et G il y a un numéro qui correspond au numéro d'élément qui va subir sa maintenance. ).

Pouvez-vous m'aider? Le fichier est en copie ici, et en gros les formules sont dans le tableau de droite. L'idée est par exemple, dans le tableau récap de droite, en S44 je dois voir s'afficher dans la colonne "grosse maintenance" le numéro 186162, et dans "petite maintenance" le numéro 186161.

Je pense que c'est du RECHERCHEV mais je ne trouve pas comment l'exploiter ici.

Bonjour

Une solution PowerQuery, intégré à Excel

Bonjour,

Merci pour ton retour qui a l'air de fonctionner. Néanmoins, peux-tu me dire comment fonctionne PowerQuery? Comment voir ce que tu as fait pour en arriver là et essayer de comprendre par moi-même?

J'ai réussi à ouvrir PowerQuery mais je n'y comprends pas grand chose. Je vais quand même chercher des tutos sur ça sur le net.

Merci par avance.

bonjour

un essai

cordialement

7gniouli.xlsx (13.45 Ko)

RE

Belle formule a privilégier si le nombre de lignes et de colonnes n'augmente pas ou peu.

Sinon

J'ai réussi à ouvrir PowerQuery mais je n'y comprends pas grand chose. Je vais quand même chercher des tutos sur ça sur le net.
  • J'ai commencé par créer une plage nommée Locos, ton tableau n'étant pas normalisé (voir gestionnaire de noms)
  • Puis créé une requête vide et désigné la source avec la formule que tu peux voir dans la barre de formule PowerQuery pour l'étape Source
  • Transformer, Utiliser la 1ère ligne comme en-tête
  • sélectionner la colonne Locomotive, clic droit, Remplir vers le bas afin d'avoir la colo sur toutes les lignes
  • Transformer, Utiliser la 1ère ligne comme en-tête (on pourrait modifier la plage nommée et éviter cette étape)
  • afin de repérer la ligne à utiliser pour chaque loco : Ajouter un colonne, Colonne personnalisée
    Formule =if [Column1]=[Column2] then 1 else 0, puis filtre des 1
  • supprimer cette colonne ajoutée ainsi que Column2
  • sélectionner Column1, clic droit, Dépivoter les autres colonnes
    dans la barre de formule remplacer Attribut par Semaine
  • filtrer la colonne Valeur pour éliminer les 0
  • dans la colonne valeur, clic droit, Remplacer les valeurs : G par Grosse maintenance puis P par Petite maintenance
  • trier par Semaine, Valeur, Column1
  • sélectionner la colonne Valeur, Transformer, Pivoter la colonne : Column1, ne pas agréger
  • sortir par Fermer et charger dans, Table et choisir l'emplacement

RE

Belle formule a privilégier si le nombre de lignes et de colonnes n'augmente pas ou peu.

Sinon

J'ai réussi à ouvrir PowerQuery mais je n'y comprends pas grand chose. Je vais quand même chercher des tutos sur ça sur le net.
  • J'ai commencé par créer une plage nommée Locos, ton tableau n'étant pas normalisé (voir gestionnaire de noms)
  • Puis créé une requête vide et désigné la source avec la formule que tu peux voir dans la barre de formule PowerQuery pour l'étape Source
  • Transformer, Utiliser la 1ère ligne comme en-tête
  • sélectionner la colonne Locomotive, clic droit, Remplir vers le bas afin d'avoir la colo sur toutes les lignes
  • Transformer, Utiliser la 1ère ligne comme en-tête (on pourrait modifier la plage nommée et éviter cette étape)
  • afin de repérer la ligne à utiliser pour chaque loco : Ajouter un colonne, Colonne personnalisée
    Formule =if [Column1]=[Column2] then 1 else 0, puis filtre des 1
  • supprimer cette colonne ajoutée ainsi que Column2
  • sélectionner Column1, clic droit, Dépivoter les autres colonnes
    dans la barre de formule remplacer Attribut par Semaine
  • filtrer la colonne Valeur pour éliminer les 0
  • dans la colonne valeur, clic droit, Remplacer les valeurs : G par Grosse maintenance puis P par Petite maintenance
  • trier par Semaine, Valeur, Column1
  • sélectionner la colonne Valeur, Transformer, Pivoter la colonne : Column1, ne pas agréger
  • sortir par Fermer et charger dans, Table et choisir l'emplacement

merci

ma foi ; on peut toujours nommer en dynamique les champs de la formule

cordialement

Merci pour vos retours. Je commence à comprendre un peu Power Query, et j'essaie de l'adapter à mon tableau global que j'ai modifié en matrice afin de gagner du temps. Là ou je sèche, c'est comment tu fais pour passer la ligne "semaine" en colonne "semaine" pour chaque numéro? Sur le fichier que tu m'as renvoyé ça apparaît en "supprimer le tableau croisé dynamique" mais je ne sais pas comment reproduite ça.

En gros j'ai l'image ci-dessous, et il faudrait que pour chaque numéro de première colonne j'arrive à mettre toutes les S## (ça fera énormément de lignes), pour ensuite retirer les 0 et 1, alors j'aurais les P et G pour chaque numéro selon les semaines.

Vous savez comment faire cela? Je ne trouve pas la fonction "supprimer le tableau croisé dynamique".

Edit : lorsque je fais ta procédure qui semble amener à ce résultat, ça ne fonctionne pas ça me fait une colonne qui contient "Locomotive" sur chaque ligne. Je fais allusion à cela :

  • sélectionner Column1, clic droit, Dépivoter les autres colonnes
    dans la barre de formule remplacer Attribut par Semaine

RE-Edit : au temps pour moi, je faisais juste "Dépivoter la colonne", forcément le résultat est tout autre. Cela semble fonctionner, ça sera sûrement mieux qu'une formule complexe... Merci ! Je vais me servir de cette base pour découvrir un peu plus tout ça.

power query

J'en profite pour ajouter une réponse car j'ai ce qui me semble être un bug mais je ne trouve pas l'origine. Lorsque je fais cette procédure, j'arrive au résultat PARFAIT. Mais... La semaine 7, que je l'appelle 7 ou S7 reste tout en bas (après la semaine 52), et aucun moyen de corriger cela. Une idée d'où ça pourrait venir?

power query bug

RE

Formate tes semaines sur 2 chiffres de façon à avoir de 01 à 52

Soit avant dans Excel soit dans PQ avec Number.ToText([Semaine],"00")
Rechercher des sujets similaires à "recherche valeur fonction colonne"