Skip to main content

Documentation du Flux DPAN - OR/RAL - V3

Cette section détaille le fonctionnement du flux Power Automate DPAN - OR/RAL - V3. Ce flux est composé d'un flux principal et de deux sous-flux dédiés à la récupération de valeurs et à la suite du traitement des OR.

Prérequis et Formule Excel

Avant de lancer le flux, il est nécessaire d'ajouter une formule Excel spécifique dans votre fichier de traitement.

Formule Excel

À placer sur la feuille de calcul "traitement" dans la cellule B13, puis à étirer vers le bas jusqu'à la fin de votre feuille suivant la nécessité :

=INDEX(INDIRECT("'"&$B$1&"'!F:F");LIGNE()-6)&INDEX(INDIRECT("'"&$B$1&"'!G:G");LIGNE()-6)

Flux Principal ("Main")

Le flux principal est le point d'entrée. Il initialise Excel avec un fichier spécifique, calcule dynamiquement un délai d'attente (via un script PowerShell analysant la charge CPU/RAM de l'ordinateur) et demande à l'utilisateur de confirmer le nom de la feuille de calcul. Ensuite, il entame une double boucle de traitement pour lire et agir sur les données du fichier.

Excel.LaunchExcel.LaunchAndOpenUnderExistingProcess Path: $'''C:\Users\e-taillepied\Downloads\Etude du 29122025.xlsx''' Visible: False ReadOnly: False UseMachineLocale: False Instance=> ExcelInstance
Excel.SetActiveWorksheet.ActivateWorksheetByName Instance: ExcelInstance Name: $'''traitement'''
DateTime.GetCurrentDateTime.Local DateTimeFormat: DateTime.DateTimeFormat.DateAndTime CurrentDateTime=> CurrentDateTime
Text.ConvertDateTimeToText.FromCustomDateTime DateTime: CurrentDateTime CustomFormat: $'''ddMMyy''' Result=> FormattedDateTime
SET Date TO 'Etudedu' + FormattedDateTime
Scripting.RunDOSCommand.RunDOSCommand DOSCommandOrApplication: $'''cmd /c echo off | clip''' StandardOutput=> CommandOutput StandardError=> CommandErrorOutput ExitCode=> CommandExitCode

Scripting.RunPowershellScript.RunScript Script: $'''$cpu = (Get-CimInstance Win32_Processor | Measure-Object -Property LoadPercentage -Average).Average
$os = Get-CimInstance Win32_OperatingSystem
$ramUsed = [math]::Round((($os.TotalVisibleMemorySize - $os.FreePhysicalMemory) / $os.TotalVisibleMemorySize) * 100, 1)
$load = ($cpu * 0.7) + ($ramUsed * 0.3)
$multiplier = [math]::Round([math]::Max(1.0, [math]::Min(6.0, 1 + ($load / 100) * 5)), 2) + 1
Write-Output $multiplier.ToString([System.Globalization.CultureInfo]::InvariantCulture)''' ScriptOutput=> PowershellOutput

Display.InputDialog Title: $'''Comment se nomme la feuille de calcul où sont stockées vos données ?''' Message: $'''Comment se nomme la feuille de calcul où sont stockées vos données ?''' DefaultValue: Date InputType: Display.InputType.SingleLine IsTopMost: False UserInput=> UserInput2 ButtonPressed=> ButtonPressed2
Excel.WriteToExcel.WriteCell Instance: ExcelInstance Value: UserInput2 Column: $'''B''' Row: 1
SET ColonneExcel TO 1
SET colonnedesecondtraitement TO 13
SET NumérodeLigne TO 9
Excel.GetFirstFreeColumnRow Instance: ExcelInstance FirstFreeColumn=> FirstFreeColumn FirstFreeRow=> FirstFreeRow
Text.ToNumber Text: PowershellOutput Number=> AttendreSuivantPC

LOOP LoopIndex FROM 1 TO FirstFreeColumn STEP 1
Excel.ReadFromExcel.ReadCell Instance: ExcelInstance StartColumn: ColonneExcel StartRow: NumérodeLigne GetCellContentsMode: Excel.GetCellContentsMode.TypedValues CellValue=> repetitionor
LOOP LoopIndex2 FROM 1 TO repetitionor STEP 1
MouseAndKeyboard.SendMouseClick.ClickAt ClickType: MouseAndKeyboard.MouseClickType.LeftClick MillisecondsDelay: 0 X: 741 Y: 369 RelativeTo: MouseAndKeyboard.PositionRelativeTo.Screen MovementStyle: MouseAndKeyboard.MovementStyle.Instant
MouseAndKeyboard.SendKeys.FocusAndSendKeys TextToSend: $'''{NumPad7}{NumPad2}''' DelayBetweenKeystrokes: 10 SendTextAsHardwareKeys: False
Excel.CopyCellsFromExcel.CopyCells Instance: ExcelInstance StartColumn: ColonneExcel StartRow: 3 EndColumn: ColonneExcel EndRow: 8
WAIT 1
MouseAndKeyboard.SendKeys.FocusAndSendKeys TextToSend: $'''{Control}({V})''' DelayBetweenKeystrokes: 50 SendTextAsHardwareKeys: False
WAIT 1
MouseAndKeyboard.SendKeys.FocusAndSendKeys TextToSend: $'''{Enter}{Enter}{Enter}''' DelayBetweenKeystrokes: 50 SendTextAsHardwareKeys: False
WAIT 1
MouseAndKeyboard.SendKeys.FocusAndSendKeys TextToSend: $'''{Up}{Up}{Up}{Up}{Up}{Up}{Up}{Up}{Up}{Up}{Up}{Right}{Right}{Right}{Right}{Right}{Right}{Right}{Right}{Right}{Right}{Right}{Right}{Right}{Right}{Right}{Right}{Right}{Right}{A}{Up}{Up}{Up}{Up}{Up}{Up}{Left}{Left}{Left}{Left}{Left}{Left}{Left}{Left}{Left}{Left}{Left}{Left}{Left}{Left}{Left}{Left}{Left}{Left}{Left}{Left}{Left}{Left}{Left}{Left}{Left}{Left}{Left}{Left}{Left}{Left}{Left}{Left}{Left}{Left}{Left}{Left}{Left}{Left}{Left}{Left}{Left}{Left}{Left}{Enter}''' DelayBetweenKeystrokes: 10 SendTextAsHardwareKeys: False
WAIT AttendreSuivantPC
CALL recuperationdesvaleurs
DISABLE MouseAndKeyboard.SendMouseClick.ClickAt ClickType: MouseAndKeyboard.MouseClickType.LeftClick MillisecondsDelay: 0 X: 16 Y: 58 RelativeTo: MouseAndKeyboard.PositionRelativeTo.Screen MovementStyle: MouseAndKeyboard.MovementStyle.Instant
WAIT AttendreSuivantPC
MouseAndKeyboard.SendKeys.FocusAndSendKeys TextToSend: $'''{F12}{F12}{NumPad1}{NumPad1}{NumPad8}{NumPad9}''' DelayBetweenKeystrokes: 10 SendTextAsHardwareKeys: False
WAIT AttendreSuivantPC
MouseAndKeyboard.SendMouseClick.ClickAt ClickType: MouseAndKeyboard.MouseClickType.LeftClick MillisecondsDelay: 0 X: 612 Y: 285 RelativeTo: MouseAndKeyboard.PositionRelativeTo.Screen MovementStyle: MouseAndKeyboard.MovementStyle.Instant
MouseAndKeyboard.SendKeys.FocusAndSendKeys TextToSend: $'''{NumPad3}{NumPad8}{NumPad0}{NumPad0}{NumPad8}{NumPad4}{Enter}{Enter}{F6}{Down}{Down}''' DelayBetweenKeystrokes: 10 SendTextAsHardwareKeys: False
END
SET ColonneExcel TO ColonneExcel + 1
Excel.ReadFromExcel.ReadCell Instance: ExcelInstance StartColumn: ColonneExcel StartRow: 3 GetCellContentsMode: Excel.GetCellContentsMode.TypedValues CellValue=> ExcelData
IF IsEmpty(ExcelData) THEN
EXIT LOOP
END
END
CALL suitedesors

Sous Flux : "recuperationdesvaleurs"

Ce sous-flux simule des clics et des frappes au clavier pour copier des informations spécifiques depuis l'interface à l'écran, puis il les colle dans la feuille de calcul Excel dans la colonne A (à la ligne correspondant à la variable colonnedesecondtraitement).

MouseAndKeyboard.SendMouseClick.ClickAt ClickType: MouseAndKeyboard.MouseClickType.LeftClick MillisecondsDelay: 0 X: 1424 Y: 206 RelativeTo: MouseAndKeyboard.PositionRelativeTo.Screen MovementStyle: MouseAndKeyboard.MovementStyle.Instant
MouseAndKeyboard.SendKeys.FocusAndSendKeys TextToSend: $'''{Control}({Right}{Right}{Right}{Right}{{Right}{{Right}{Right})''' DelayBetweenKeystrokes: 10 SendTextAsHardwareKeys: False
MouseAndKeyboard.SendKeys.FocusAndSendKeys TextToSend: $'''{Control}({C})''' DelayBetweenKeystrokes: 10 SendTextAsHardwareKeys: False
Excel.PasteCellsToExcel.PasteAt Instance: ExcelInstance Column: $'''A''' Row: colonnedesecondtraitement
Variables.IncreaseVariable Value: colonnedesecondtraitement IncrementValue: 1

Sous Flux : "suitedesors"

Ce dernier sous-flux continue le traitement en bouclant 40 fois pour ré-insérer et valider des informations dans le système cible à l'aide de copies successives depuis Excel. Une boîte de dialogue s'affiche à la toute fin pour avertir l'utilisateur du succès de l'opération.

SET nombrecolonnebranche3 TO 13
MouseAndKeyboard.SendKeys.FocusAndSendKeys TextToSend: $'''{F3}{Enter}''' DelayBetweenKeystrokes: 10 SendTextAsHardwareKeys: False
MouseAndKeyboard.SendMouseClick.ClickAt ClickType: MouseAndKeyboard.MouseClickType.LeftClick MillisecondsDelay: 0 X: 692 Y: 258 RelativeTo: MouseAndKeyboard.PositionRelativeTo.Screen MovementStyle: MouseAndKeyboard.MovementStyle.Instant
WAIT 5
MouseAndKeyboard.SendKeys.FocusAndSendKeys TextToSend: $'''{A}{NumPad1}''' DelayBetweenKeystrokes: 10 SendTextAsHardwareKeys: False
WAIT 5
MouseAndKeyboard.MoveMouse X: 939 Y: 258 RelativeTo: MouseAndKeyboard.PositionRelativeTo.Screen MovementStyle: MouseAndKeyboard.MovementStyle.Instant
MouseAndKeyboard.SendKeys.FocusAndSendKeys TextToSend: $'''{NumPad1}{NumPad1}{NumPad8}{NumPad9}{Enter}''' DelayBetweenKeystrokes: 100 SendTextAsHardwareKeys: False
WAIT 5
Excel.CopyCellsFromExcel.CopyCell Instance: ExcelInstance StartColumn: $'''A''' StartRow: 13
WAIT AttendreSuivantPC
MouseAndKeyboard.SendKeys.FocusAndSendKeys TextToSend: $'''{Control}({V}){Right}{Right}{Right}{Right}{Right}{Add}{Enter}''' DelayBetweenKeystrokes: 100 SendTextAsHardwareKeys: False
WAIT 2
MouseAndKeyboard.SendMouseClick.ClickAt ClickType: MouseAndKeyboard.MouseClickType.LeftClick MillisecondsDelay: 0 X: 524 Y: 717 RelativeTo: MouseAndKeyboard.PositionRelativeTo.Screen MovementStyle: MouseAndKeyboard.MovementStyle.Instant
Excel.CopyCellsFromExcel.CopyCell Instance: ExcelInstance StartColumn: $'''B''' StartRow: nombrecolonnebranche3
MouseAndKeyboard.SendKeys.FocusAndSendKeys TextToSend: $'''{Control}({V}){Right}{Right}{Right}{Right}{Right}{Right}{Right}{Right}{Right}{Right}{Right}{Right}{Right}{Right}{Right}{Right}{Right}{Right}{Right}{Right}{Add}{Add}{Add}{Add}{Add}{Add}{Add}{NumPad1}{Add}{NumPad1}{Add}{NumPad9}{Enter}}{Enter}}{Enter}{F7}''' DelayBetweenKeystrokes: 500 SendTextAsHardwareKeys: False
MouseAndKeyboard.SendMouseClick.ClickAt ClickType: MouseAndKeyboard.MouseClickType.LeftClick MillisecondsDelay: 0 X: 1355 Y: 377 RelativeTo: MouseAndKeyboard.PositionRelativeTo.Screen MovementStyle: MouseAndKeyboard.MovementStyle.Instant
MouseAndKeyboard.SendKeys.FocusAndSendKeys TextToSend: $'''O{Enter}''' DelayBetweenKeystrokes: 100 SendTextAsHardwareKeys: True
Variables.IncreaseVariable Value: nombrecolonnebranche3 IncrementValue: 1

LOOP LoopIndex3 FROM 1 TO 40 STEP 1
MouseAndKeyboard.MoveMouse X: 939 Y: 258 RelativeTo: MouseAndKeyboard.PositionRelativeTo.Screen MovementStyle: MouseAndKeyboard.MovementStyle.Instant
MouseAndKeyboard.SendKeys.FocusAndSendKeys TextToSend: $'''{NumPad1}{NumPad1}{NumPad8}{NumPad9}''' DelayBetweenKeystrokes: 100 SendTextAsHardwareKeys: False
WAIT AttendreSuivantPC
Excel.CopyCellsFromExcel.CopyCell Instance: ExcelInstance StartColumn: $'''A''' StartRow: nombrecolonnebranche3
WAIT 2
MouseAndKeyboard.SendMouseClick.ClickAt ClickType: MouseAndKeyboard.MouseClickType.LeftClick MillisecondsDelay: 0 X: 573 Y: 291 RelativeTo: MouseAndKeyboard.PositionRelativeTo.Screen MovementStyle: MouseAndKeyboard.MovementStyle.Instant
MouseAndKeyboard.SendKeys.FocusAndSendKeys TextToSend: $'''{Control}({V}){Right}{Right}{Right}{Right}{Right}{Add}{Enter}''' DelayBetweenKeystrokes: 100 SendTextAsHardwareKeys: False
WAIT 2
MouseAndKeyboard.SendMouseClick.ClickAt ClickType: MouseAndKeyboard.MouseClickType.LeftClick MillisecondsDelay: 0 X: 524 Y: 717 RelativeTo: MouseAndKeyboard.PositionRelativeTo.Screen MovementStyle: MouseAndKeyboard.MovementStyle.Instant
Excel.CopyCellsFromExcel.CopyCell Instance: ExcelInstance StartColumn: $'''B''' StartRow: nombrecolonnebranche3
MouseAndKeyboard.SendKeys.FocusAndSendKeys TextToSend: $'''{Control}({V}){Right}{Right}{Right}{Right}{Right}{Right}{Right}{Right}{Right}{Right}{Right}{Right}{Right}{Right}{Right}{Right}{Right}{Right}{Right}{Right}{Add}{Add}{Add}{Add}{Add}{Add}{Add}{NumPad1}{Add}{NumPad1}{Add}{NumPad9}{Enter}{Enter}{Enter}{Enter}{F7}''' DelayBetweenKeystrokes: 200 SendTextAsHardwareKeys: False
MouseAndKeyboard.SendMouseClick.ClickAt ClickType: MouseAndKeyboard.MouseClickType.LeftClick MillisecondsDelay: 0 X: 1355 Y: 377 RelativeTo: MouseAndKeyboard.PositionRelativeTo.Screen MovementStyle: MouseAndKeyboard.MovementStyle.Instant
MouseAndKeyboard.SendKeys.FocusAndSendKeys TextToSend: $'''O{Enter}''' DelayBetweenKeystrokes: 10 SendTextAsHardwareKeys: True
Variables.IncreaseVariable Value: nombrecolonnebranche3 IncrementValue: 1
END

Display.ShowMessageDialog.ShowMessage Title: $'''Flux Power Automate''' Message: $'''L\'éxécution de votre flux s\'est terminé avec succès.''' Icon: Display.Icon.Information Buttons: Display.Buttons.OK DefaultButton: Display.DefaultButton.Button1 IsTopMost: False ButtonPressed=> ButtonPressed
EXIT Code: 0