Toutes mes réponses sur les forums

15 sujets de 1 à 15 (sur un total de 283)
  • Auteur
    Articles
  • en réponse à : Trouver la prochaine cellule vide avec une formule #134301
    Stéphane Lorin
    Participant

    Bonjour
    une proposition en 2 étapes par formules
    en B2 =SI(A2=””;B1;SI(A1=””;A2;MAX(A2;B1)))
    en C2 =SI(A2=””;B2;A2)
    puis tirer vers le bas

    Stéphane

    en réponse à : Addition de pourcentage dans Power Query #130365
    Stéphane Lorin
    Participant
    en réponse à : Equivalent MAX.SI en colonne calculée #130361
    Stéphane Lorin
    Participant

    Autre possibilité avec CALCULATE

    VAR _ID = [ID]
    RETURN CALCULATE(SUM(Tableau1[Valeur]);Tableau1[ID]=_ID)

    Stéphane

    en réponse à : Equivalent MAX.SI en colonne calculée #130360
    Stéphane Lorin
    Participant

    Bonjour
    Dans Power Pivot pour Excel :
    VAR _ID=[ID]
    RETURN SUMX(FILTER(Tableau1;[ID]=_ID);[Valeur])

    Stéphane

    en réponse à : Connaître la dernière date disponible pour un élément donné #130359
    Stéphane Lorin
    Participant

    Bonjour
    Article intéressant de Rick de Groot sur le sujet également : https://gorilla.bi/power-query/removing-duplicates/
    L’utilisation de Table.Buffer permet de “maitriser” les enregistrements conservés.

    Sinon avec Table.Group, le plus simple est d’utiliser Table.Max au lieu de la combinaison Table.Sort, Table.Last

    = Table.Group(Source, {“ID”}, {{“Data”, each Table.Max(_,”date”), type record }})
    puis de récupérer les champs date et valeur

    Stéphane

    en réponse à : Addition de pourcentage dans Power Query #130358
    Stéphane Lorin
    Participant

    Bonjour
    Problème classique de virgule flottante
    ajoutez un arrondi : Number.Round([Champ A] + [Champ B],2)
    ou avec Value.Add : Value.Add([Champ A],[Champ B], Precision.Decimal)

    Stéphane

    en réponse à : Optimisation d’une étape très longue #130357
    Stéphane Lorin
    Participant

    Bonjour
    Il est difficile de vous aider avec uniquement vos formules lorsqu’on n’a pas la structure du fichier.
    Le mieux serait de fournir un fichier Excel “modèle” avec vos colonnes et quelques lignes anonymisées + votre requête actuelle.
    Merci

    Stéphane

    en réponse à : Recherche MIN et MAX suivant deux criteres #129926
    Stéphane Lorin
    Participant

    Bonjour
    vous transformez votre colonne de dates en choisissant “Date”, “Mois”, “Début de mois”
    puis vous modifiez le code obtenu pour avoir AA-MM avec Date.ToText(une date, “yy-MM”)
    ensuite c’est un regroupement classique avec Max et Min

    Cela donne quelque chose comme

    let
    Source = Excel.CurrentWorkbook(){[Name=”Tableau1″]}[Content],
    #”Type modifié” = Table.TransformColumnTypes(Source,{{“Date”, type date}}),
    #”Début de mois calculé” = Table.TransformColumns(#”Type modifié”,{{“Date”, each Date.ToText(Date.StartOfMonth(_), “yy-MM”), type date}}),
    #”Lignes groupées” = Table.Group(#”Début de mois calculé”, {“Date”, “Point de ventes”}, {{“Min”, each List.Min([Ventes]), type number}, {“Max”, each List.Max([Ventes]), type number}})
    in
    #”Lignes groupées”

    Stéphane

    en réponse à : Table. TransformColumns #129763
    Stéphane Lorin
    Participant

    Une autre approche en transformant les lignes via des listes
    testé sur 10000 lignes et 10 colonnes de A à K et 10 colonnes de A.1 à K.1
    quelques secondes chez moi

    Code à copier dans une nouvelle requête

    let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText(“VVNbEsQgCLtLv/sh4Ktn6ez9r7ESCWNndqkCQhL0fS+r133VZ5n1s+kb/+t2IGDiKwnP3F/4zKOer5PGigfa9btfpA8PNA8MRg1b40p85X20Mk1LuA5sSoyK2pZwn8CMjR+UmQbt4pzniPPS8EhfpjMXjRcjL96PfgDvcfSpydiyNwoPHrGeetRg0PMbqmxcyBksE/pGrqDHKbwFDsglwbeVDQCKgLGw/PxgFvaS9CNLlVWwRTNpSajsnisBHfqXc0RRA7AwVNSwfqDWHA2kkA+TtmOhDC6I5jw2p7iM4Iab+RAgzCGSxGiVTLfkENKeA5IlZQzSosUeR6EZPNZD0LxHMWTeck2qdgBCfbLlk2qBfz8eFvSjHP16PL8/”, BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [A = _t, A.1 = _t, B = _t, B.1 = _t, C = _t, C.1 = _t, D = _t, D.1 = _t, E = _t, E.1 = _t, F = _t, F.1 = _t, G = _t, G.1 = _t, I = _t, I.1 = _t, J = _t, J.1 = _t, K = _t, K.1 = _t]),
    Liste_Colonne = List.Select(Table.ColumnNames(Source), each not Text.Contains(_,”.”)),
    Liste_Colonne.1 = List.Select(Table.ColumnNames(Source), each Text.Contains(_,”.”)),
    Null = Table.ReplaceValue(Source,””,null,Replacer.ReplaceValue,Liste_Colonne&Liste_Colonne.1),
    Repeat1000 = Table.Repeat(Null,1000),
    Table.Colonnes = Table.ToRows(Table.SelectColumns(Repeat1000,Liste_Colonne)),
    Table.Colonnes.1 = Table.ToRows(Table.SelectColumns(Repeat1000,Liste_Colonne.1)),
    Transform = List.Transform(List.Zip({Table.Colonnes,Table.Colonnes.1}), (x) => List.Transform(List.Positions(x{0}), each x{0}{_}??x{1}{_} )),
    Résultat = Table.FromRows(Transform, Liste_Colonne)
    in
    Résultat

    Stéphane

    en réponse à : Table. TransformColumns #129761
    Stéphane Lorin
    Participant

    La formule via le List.Accumulate est intéressante
    le temps de réponse est-il correct avec 10000 lignes ?
    Stéphane

    en réponse à : Table. TransformColumns #129721
    Stéphane Lorin
    Participant

    Bonjour
    J’ai déjà essayé d’utiliser Table.ReplaceValue pour faire ce genre de manipulation mais ça ne fonctionne pas. Il faut autant d’étapes que de couple de colonnes A A1, B B1, …

    Sûrement possible en manipulant des listes
    Par exemple avec une nouvelle colonne

    List.Transform(List.Zip({{[A],[B],[C]}, {[A1],[B1],[C1]}}), each if _{0} < x then _{0} else _{0} * _{1} )

    pour obtenir une liste avec les nouvelles valeurs de A, B et C suivant si elles sont inférieures ou non à x

    Pourquoi ne pas dépivoter toutes les colonnes et travailler sur les nouvelles colonnes “Attribut” et “Valeur” ?

    Stéphane

    en réponse à : Table. TransformColumns #128983
    Stéphane Lorin
    Participant

    Bonjour

    je trouve que c’est plus “simple” avec Table.ReplaceValue qu’avec TransformColumns

    = Table.ReplaceValue(Source, each [M], null, (x,y,z)=>x*y, {“C4”, “C8”, “C32”})

    x = successivement les valeurs [C4], [C8] et [C32]
    y = la valeur [M] de la ligne
    z = null (ne sert pas ici)

    Stéphane

    en réponse à : Heures – bug cellule 02-01-1904 #128008
    Stéphane Lorin
    Participant

    Bonjour
    il n’est pas nécessaire de se mettre en calendrier 1094.
    Il suffit de choisir le format de cellule personnalisé [h]:mm
    les [] autour du h indiquent qu’il faut afficher le nombre d’heure et non le jour.

    Stéphane

    en réponse à : Supprimer X caractères en début et fin de cellule #127200
    Stéphane Lorin
    Participant

    Bonjour

    avec une version récente d’Excel 365 vous avez les fonctions TEXTE.AVANT et TEXTE.APRES

    =TEXTE.AVANT(TEXTE.APRES(A1;”\”;-1);”.”)

    le -1 pour la dernière occurrence du \

    Stéphane

    Stéphane Lorin
    Participant

    Bonjour

    En ISO il faut partir du 4 janvier et non du 1er

    Date.StartOfWeek(#date([Année], 1, 4), Day.Monday) + #duration(([NumSemaine] – 1) * 7,0, 0, 0)

    Sinon, j’ai déjà proposé sur ce forum une fonction plus simple pour le calcul du n° de semaine ISO

    (Date as date) => let
    Jeudi_Semaine = Date.AddDays(Date,3-Date.DayOfWeek(Date,Day.Monday)),
    Année=Date.Year(Jeudi_Semaine),
    Premier_Jeudi_An = Date.AddDays(#date(Année,1,7),-Date.DayOfWeek(#date(Année,1,1),Day.Friday)),
    #”N° Semaine” = Duration.Days(Jeudi_Semaine – Premier_Jeudi_An)/7+1
    in
    #”N° Semaine”

    Stéphane

15 sujets de 1 à 15 (sur un total de 283)