Toutes mes réponses sur les forums

15 sujets de 106 à 120 (sur un total de 283)
  • Auteur
    Messages
  • en réponse à : Repérer une séquence #93334
    Stéphane Lorin
    Participant

    Bonjour

    voici une proposition avec Power Query :
    vous utilisez la fonction Table.Split pour regrouper vos données par groupe de 6 lignes
    puis vous comparez les colonnes “Capteur” et “Etat” de chaque table de 6 lignes avec votre cycle de base.

    Voir PJ

    Cordialement

    Stéphane

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Problème de temps #93273
    Stéphane Lorin
    Participant

    Bonjour
    Merci du retour

    Contrairement à ce que j’écrivais hier, il n’y a même pas besoin du #shared :
    Expression.Evaluate(“1*3600+23*60+32”) renverra 5012
    puis #duration(0,0,0,5012) pour obtenir la durée 0.01:23:32 (soit 0 jour, 1 heure, 23 minutes et 32 secondes)
    Stéphane

    en réponse à : Problème de temps #93265
    Stéphane Lorin
    Participant

    Bonjour
    j’ai une autre proposition

    vous remplacez
    – ” heure” par *3600 avec un espace devant le mot mais sans le “s” final s’il y a plusieurs heures
    – ” minute” par *60
    – ” seconde” par rien “”
    – “s” par rien “” (pour gérer les pluriels)
    – les espaces restants ” ” par “+”

    vous avez ainsi “1 heure 23 minutes 32 secondes” qui est transformé en “1*3600+23*60+32”
    vous évaluez cette chaine de caractère avec Expression.Evaluate(…,#shared) pour obtenir le nombre de secondes (voir un de mes précédents message sur cette fonction peu connue)
    Enfin pour avoir la valeur en hh:mm:ss vous utilisez #duration(0,0,0,nb_secondes)

    C’est plus simple que ma solution précédente avec fractionnement, pivot, fractionnement, fusion et regroupement

    Stéphane

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Problème de temps #93262
    Stéphane Lorin
    Participant

    Bonjour

    voir en PJ une proposition de solution.
    l’idée est d’avoir une table de correspondance qui donne le nb de secondes et la durée de chaque “mot” : heures, heure, minutes, minute, secondes, seconde.

    avec vos données à transformer :
    j’ajoute un index et je duplique la colonne
    je fractionne les données suivant la transition espace/chiffre. j’ai donc choisi la transition non chiffre/chiffre et j’ai modifié manuellement la formule pour remplacer la fonction avec “not Text.Contains” par {” “} mais ceci n’est pas obligatoire.
    puis je “dépivote” les colonnes ainsi créées pour avoir en ligne les heures, les minutes, les secondes.
    je fractionne de nouveau cette colonne pour avoir d’un coté le nombre et de l’autre le nom (heure, minute, seconde) et je fusionne avec la table que j’évoquais au début pour récupérer les durées (3600 et 1:00:00 pour les heures)
    il ne me reste plus qu’à multiplier les nombres d’heures, minutes et secondes par ces durées, puis à ajouter l’ensemble suivant l’index avec un regroupement.

    J’espère que ces explications et le fichier joint vous permettront de répondre à votre problème

    Stéphane

    Attachments:
    You must be logged in to view attached files.
    en réponse à : CSV non-identique d’un dossier à convertir en table #93261
    Stéphane Lorin
    Participant

    Bonjour

    commencez par créer un paramètre avec votre chemin “P:\Auditeur analyste\_Projets\20210716 – Export”
    puis affectez ce paramètre à l’étape “Source”

    Source = Folder.Files(NomDuParamètre),

    ensuite lors de la seconde étape, la référence au dossier peut être inutile s’il n’y a pas de sous-dossier contenant les mêmes noms et donc que vos 3 fichiers csv sont uniques.

    dans ce cas, la partie en gras peut être supprimée
    #”P:\Auditeur analyste\_Projets\20210716 – Export\_Users csv1″ = Source{[#”Folder Path”=”P:\Auditeur analyste\_Projets\20210716 – Export\”,Name=”Users.csv”]}[Content],

    de plus le nom de l’étape en italique qui a été créée automatiquement par Power Query peut être modifié en un nom plus clair.
    Ce nom sera ensuite repris à la troisième étape. En effet, le chemin d’accès que vous lisez lors de cette étape #”CSV importé” est le nom de l’étape précédente et non un nouvel appel au chemin d’accès.

    Au final

    let
    Source = Folder.Files(NomDuParamètre),
    Contenu = Source{[Name=”Users.csv”]}[Content],
    #”CSV importé” = Csv.Document(Contenu,[Delimiter=”,”, Columns=33, Encoding=65001, QuoteStyle=QuoteStyle.None]),

    Stéphane

    en réponse à : SOMME en ligne et ensuite en colonnes #93032
    Stéphane Lorin
    Participant

    Merci pour le retour
    En effet pour le nombre d’année qui va augmenter
    Par contre, celui du nombre de trimestres dans une année ne devrait pas évoluer. On doit pouvoir considérer sans risque qu’il y aura toujours 4 trimestres dans une année !
    Bonne continuation sur ce projet
    Stéphane

    en réponse à : SOMME en ligne et ensuite en colonnes #93026
    Stéphane Lorin
    Participant

    Encore moi avec une formule Excel plus courte et plus simple

    =SOMME(B4:E7*
    (INDEX(B3:E3;SEQUENCE(;4))&INDEX(A4:A7;SEQUENCE(4))>=B11&C11)*
    (INDEX(B3:E3;SEQUENCE(;4))&INDEX(A4:A7;SEQUENCE(4))<=B12&D12))

    INDEX(B3:E3;SEQUENCE(;4))&INDEX(A4:A7;SEQUENCE(4)) crée une matrice
    2017Q1 | 2018Q1 | 2019Q1 …
    2017Q2 | 2018Q2 | 2019Q2 …

    que l’on compare avec le min = 2017Q2 et le max 2019Q3 avant de multiplier l’ensemble par la plage de départ

    Stéphane

    en réponse à : SOMME en ligne et ensuite en colonnes #93025
    Stéphane Lorin
    Participant

    Re-bonjour
    je complète ma réponse précédente en précisant que votre problématique justifierai un passage par Power Query pour transformer votre tableau en base de données exploitable ensuite par TCD, formule…
    Vous transformez votre plage de données en tableau “structuré”, que vous importez dans Power Query via le menu “Données/Récupérer et transformer”. Vous sélectionnez votre 1ere colonne et dépivotez les autres.
    A voir suivant votre besoin réel et pas uniquement cet exemple.
    Stéphane

    en réponse à : Transformation date fichier d’origine en chiffre sur power query #93024
    Stéphane Lorin
    Participant

    Bonjour

    Dans Power Query, quel est le type de votre champ ?
    Si c’est “any” (avec ABC123 en haut à gauche), ça renvoie ensuite un nombre et non une date jj/mm/aaaa
    Changez le type en “date” ou “datetime”

    Cordialement

    en réponse à : SOMME en ligne et ensuite en colonnes #93021
    Stéphane Lorin
    Participant

    Bonjour

    Voici une fonction Excel qui répond à votre besoin

    =SOMME(B4:E7*
    (TRANSPOSE(SEQUENCE(4;4))>=INDEX(TRANSPOSE(SEQUENCE(4;4));EQUIV(C11;A4:A7;0);EQUIV(B11;B3:E3;0)))*
    (TRANSPOSE(SEQUENCE(4;4))<=INDEX(TRANSPOSE(SEQUENCE(4;4));EQUIV(D12;A4:A7;0);EQUIV(B12;B3:E3;0))))

    TRANSPOSE(SEQUENCE(4;4)) pour créer une matrice de 1 à 16 avec les périodes dans l’ordre (1, 2, 3, 4 en 1ere colonne; 5, 6, 7, 8 en 2eme…)
    puis un INDEX pour déterminer la position du min
    un autre pour celle du max
    on multiplie la plage de départ par celle des périodes >= mix et par celle <= au max pour obtenir le résultat

    Stéphane

    en réponse à : Lignes en colonnes #92889
    Stéphane Lorin
    Participant

    “null” représente l’absence de données, le produit 36 n’a pas de Soja.
    Stéphane

    en réponse à : Lignes en colonnes #92878
    Stéphane Lorin
    Participant

    Bonjour

    Lors de l’opération de pivot, il faut ouvrir “options avancées” et choisir “ne pas agréger”

    Stéphane

    en réponse à : Regroupement d’etat #92870
    Stéphane Lorin
    Participant

    Lorsque vous faites le regroupement par “OF” dans Power Query, vous choisissez la nouvelle colonne en indiquant l’opération “Somme” de la colonne “Statut”
    Cette somme renvoie une erreur car vous essayez de sommer du texte.
    Dans la barre de formule vous visualisez la formule
    … each List.Sum([statut])…
    que vous remplacez par
    … each Text.Combine(List.Distinct([statut]),”;”) …

    List.Distinct pour supprimer les statuts en double
    Text.Combine pour concaténer les statuts sans doublon les uns avec les autres.

    au final, ceux que vous cherchez sont uniquement “Clos”.

    Stéphane

    en réponse à : Regroupement d’etat #92867
    Stéphane Lorin
    Participant

    Bonjour

    Voir une piste dans mon message du 4 avril 2021 à 16 h 33 min en réponse à : regrouper puis étendre en colonnes.

    Vous regroupez par OF et vous faites un agrégat sur les statuts.
    Evidemment, la somme ne donnera rien vu que c’est du texte, par contre vous pouvez utiliser Text.Combine pour concaténer tous les statuts de chaque OF + List.Distinct pour supprimer les statuts en double.

    Le code suivant vous permet donc d’obtenir la liste de tous les statuts de vos OF

    let
    Source = Excel.CurrentWorkbook(){[Name=”Tableau1″]}[Content],
    #”Lignes groupées” = Table.Group(Source, {“OF”}, {{“Statut”, each Text.Combine(List.Distinct([statut]),”;”), type nullable text}})
    in
    #”Lignes groupées”

    ceux qui sont entièrement clos sont ainsi faciles à identifier

    OF Statut
    OF02692204 rt;clos
    OF02799277 RT;clos
    OF02501537 clos
    OF02978602 En cours

    Stéphane

    en réponse à : Regroupement d’etat #92831
    Stéphane Lorin
    Participant

    Bonjour
    Votre état final est-il le dernier de la table ?
    Si oui, ajoutez un index, regroupez les OF en remontant le “maximum” de cet index, puis fusionnez ce regroupement avec votre table initiale sur les champs “OF” + “index”

    Autre piste en filtrant d’abord les “clos” vu que seuls ces OF vous intéressent, puis inversez les lignes et supprimez les doublons. De cette façon, le dernier OF sera retenu.

    Par ailleurs, il ne me semble pas nécessaire de poser une même question sur plusieurs forums simultanément. Commencez par un, en l’absence de réponse au bout d’un jour ou deux, essayez sur un autre. En tout cas, n’oubliez pas de prévenir tous les forums que vous avez votre réponse.

    Stéphane

15 sujets de 106 à 120 (sur un total de 283)