Amelioration code Power Query

Bonjour à tous,

J'ai mis en place une requête Power Query, mais bizarrement sur mon fichier de travail, (qui contient plusieurs requêtes pourtant sans lien avec celle ci) ,

c' est plus long à s'actualiser que sur le fichier test ci-joint,

Est il possible d'améliorer le code présenté pour un gain de temps ?,

Merci d'avance pour votre aide,

Cordialement,

16test-requete.xlsm (65.13 Ko)

Bonjour Massari,

Commencez déjà par arrêter les évènements quand vous être dans "SelectionChange" et que vous faites des "Select"

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Application.EnableEvents = False
  If Target.Address = Range("t_R[#All]").Address Then
    If Not Tgt Is Nothing Then
      Tgt.Select
    Else
      Range("t_R[N-FS]")(1).Select
    End If
  End If
  Application.EnableEvents = True
  Flag = False
End Sub

Bonjour JExceL2fr,
Merci pour votre retour, c'est noté le code VBA sera modifié avec l'ajout de ces deux instructions,

J'ai peu de retour concernant le code M Power Query, je cherche de non coté en dé-pivotant les colonnes, mais je n'arrive pas à faire les calculs

Cordialement,

Bonjour à tous !

Une tentative concernant la requête t_R :

let
  Source = Table.Buffer(
    Excel.CurrentWorkbook(){[Name = "t_R"]}[Content][
      [Cp], 
      [L], 
      [S], 
      [#"MR-1"], 
      [IE], 
      [MNPS], 
      [F], 
      [#"N-FS"]
    ]
  ), 
  ValRempl = Table.FromColumns(
    List.Transform(Table.ToColumns(Source), each List.ReplaceMatchingItems(_, {{null, 0}, {"", 0}})), 
    Table.ColumnNames(Source)
  ), 
  Rec = Table.AddColumn(
    ValRempl, 
    "Rec", 
    each [
      MDAR    = if [MNPS] = 0 then [#"MR-1"] * (1 + [IE]) else [MNPS], 
      #"N-FC" = if [#"N-FS"] = 0 then (MDAR * (Date.Month(DATE)) / 12) - [F] else [#"N-FS"], 
      D       = if #"N-FC" > 0 then Number.Abs(Number.Round(#"N-FC", 2)) else 0, 
      C       = if #"N-FC" < 0 then Number.Abs(Number.Round(#"N-FC", 2)) else 0
    ]
  ), 
  ExpandRec = Table.ExpandRecordColumn(Rec, "Rec", {"MDAR", "N-FC", "D", "C"}), 
  PermutCol = Table.ReorderColumns(
    ExpandRec, 
    {"Cp", "L", "S", "MR-1", "IE", "MNPS", "MDAR", "F", "N-FS", "N-FC", "D", "C"}
  ), 
  VR0 = Table.ReplaceValue(
    PermutCol, 
    0, 
    null, 
    Replacer.ReplaceValue, 
    {"MR-1", "IE", "MNPS", "F", "N-FS"}
  )
in
  VR0

L'idée générale étant d'éviter les itérations redondantes.

A tester pour appréhender le "gain" éventuel.

Bonjour JFL,

Merci pour votre retour, le code est parfait,

Cordialement,

Bonjour à tous de nouveau !

Bien....

Je vous remercie de ce retour.

Avez-vous constaté une vélocité accrue ? Sur quelle volumétrie ?

Bonsoir Jfl,

Non la volumétrie ne doit pas être le problème sur mon fichier de travail, et j'ai un léger mieux dans le temps de réaction.

Mais pour une raison que j'ignore sur un fichier test la requête tourne très rapidement mais sur mon fichier de travail ou j'ai plusieurs requêtes pourtant indépendantes, le fichier étant plus lourd également ... l'actualisation de la requête (avec ton code ou le mien) est plus long.

Pourriez vous me dire si le fait que le fichier est plus lourd avec plus de requêtes peut être la source de cette différence de traitement?

Je me dis que cette requête étant indépendante des autres (mis à part la variable DATE), cela ne devrait pas avoir d'incidence?, non?

Peut on désactiver l'actualisation en arrière plan pour une seule requête?, car je suis allé dans les options Données, Connexions, Requête_Test, Désactiver

l'actualisation en arrière plan, mais lorsque je lance l'actualisation sur le TS, la requête s'actualise même en arrière plan?

Merci d'avance,

Cordialement,

Bonsoir à tous !

Je ne maitrise absolument pas les éventuelles interactions en cas de pluralité de requêtes.

Bonsoir Jfl,

Merci quand même pour votre retour, c'est déjà top de pouvoir compter sur vous, je viens ainsi de découvrir la fonction List.ReplaceMatchingItems qui est vraiment bien , j'en apprends tous les jours sur Power Query !

Je vais creuser sur mon fichier de travail pour voir ce que je peux faire, je me demande même si je vais pas le refaire entièrement !

Bonne soirée à vous,

Cordialement,

Rechercher des sujets similaires à "amelioration code power query"