let fnGetRangeValue = (
pRangeName as text,
optional pRow as number,
optional pColumn as number
) =>
let
//***********************************************************************************************************
// Gestion des paramètres
//***********************************************************************************************************
RangeName=pRangeName,
Row=if pRow is null or pRow = 0 then 0 else pRow - 1,
Column=if pColumn is null or pColumn = 0 then 1 else pColumn,
WbExcel=Excel.CurrentWorkbook(),
//***********************************************************************************************************
// Construction de la liste des objets connus dans Excel
//***********************************************************************************************************
TbList=WbExcel[Name],
bFound=List.Contains(TbList,RangeName),
//***********************************************************************************************************
// La recherche est uniquement effectuée si le champ est trouvé dans la liste des objets connus dans Excel
//***********************************************************************************************************
Value=if bFound
then
let
//--------------------------------------------------------
// Traitements de recherches si le nom de champ est connu
//--------------------------------------------------------
StrRange="WbExcel{[Name=RangeName]}[Content]{Row}[Column" & Text.From(Column) & "]",
RecEval=[WbExcel=WbExcel, Row=Row, Column=Column, RangeName=RangeName],
Eval=Expression.Evaluate(StrRange,RecEval)
in
Eval
else
"#N/A"
in
Value
in
fnGetRangeValue