Médiaforma

API JS dans Excel – Travailler avec les valeurs dans des plages

Print Friendly, PDF & Email

Vous savez maintenant sélectionner toutes sortes de plages de cellules. Voyons comment lire le contenu des cellules sélectionnées.

Nous allons travailler avec ces données :

Le but du jeu va être de récupérer les valeurs et les formules contenues dans ce tableau, sachant que la colonne D contient des formules du type =B2*C2 (pour la cellule D3).

Pour cela, vous chargerez tour à tour les propriétés values, text, formulas et formulasR1C1 :

  • values : Valeurs brutes des cellules.
  • text : valeurs textuelles des cellules.
  • formulas : formules en notation A1 (lettre pour la colonne, chiffre pour la ligne).
  • formulasR1C1 : formules en notation R1C1 (index relatifs de la ligne et de la colonne).

Voici le code utilisé :

async function run() {

  await Excel.run(async function(context) {

    const ws = context.workbook.worksheets.getActiveWorksheet(); // feuille active

    let plage = ws.getRange('A1:D6');

    plage.load('values');

    await context.sync();

    console.log(plage.values); //Toutes les données de la plage sous la forme array de array

    console.log(plage.values[1]); // La deuxième ligne (basé 0) sous la forme d'un array

    console.log(plage.values[1][0]); // La première cellule de la deuxième ligne (basé 0)

  });

}

Et voici le résultat dans la console :

[

    ["Référence", "HT", "Quantité", "TTC"],

    ["A34", 120.5, 12, 1446],

    ["B18", 45.6, 45, 2052],

    ["A66", 12.25, 120, 1470],

    ["C42", 146.65, 26, 3812.9],

    ["G29", 10, 84, 840]

]




["A34", 120.5, 12, 1446]




A34

Comme vous le voyez :

  • values retourne toutes les données de la plage sous la forme d’un tableau de tableaux.
  • values[1] retourne la deuxième ligne du tableau.
  • values[1][0] retourne la première cellule de la deuxième ligne du tableau.

Remplacez values par text dans la méthode load() et dans les console.log() et vous obtiendrez ce résultat :

[

    ["Référence", "HT", "Quantité", "TTC"],

    ["A34", "120,50", "12", "1446,00"],

    ["B18", "45,60", "45", "2052,00"],

    ["A66", "12,25", "120", "1470,00"],

    ["C42", "146,65", "26", "3812,90"],

    ["G29", "10,00", "84", "840,00"]

]




["A34", "120,50", "12", "1446,00"]




A34

Remplacez text par formulas dans la méthode load() et dans les console.log() et vous obtiendrez ce résultat :

[

    ["Référence", "HT", "Quantité", "TTC"],

    ["A34", 120.5, 12, "=B2*C2"],

    ["B18", 45.6, 45, "=B3*C3"],

    ["A66", 12.25, 120, "=B4*C4"],

    ["C42", 146.65, 26, "=B5*C5"],

    ["G29", 10, 84, "=B6*C6"]

]




["A34", 120.5, 12, "=B2*C2"]




A34

Enfin, remplacez formulas par formulasR1C1 dans la méthode load() et dans les console.log() et vous obtiendrez ce résultat :

[

    ["Référence", "HT", "Quantité", "TTC"],

    ["A34", 120.5, 12, "=RC[-2]*RC[-1]"],

    ["B18", 45.6, 45, "=RC[-2]*RC[-1]"],

    ["A66", 12.25, 120, "=RC[-2]*RC[-1]"],

    ["C42", 146.65, 26, "=RC[-2]*RC[-1]"],

    ["G29", 10, 84, "=RC[-2]*RC[-1]"]

]




["A34", 120.5, 12, "=RC[-2]*RC[-1]"]




A34

Remarque

Petite précision sur la notation RC[-1] : cela signifie la cellule située sur la même ligne (R) et sur la colonne précédente (C[-1]).

Le tableau ci-après vous permettra de comparer plus facilement les données contenues dans les propriétés values, text, formulas et formulasR1C1 :

values text formulas formulasR1C1
“Référence” “Référence” “Référence” “Référence”
“HT” “HT” “HT” “HT”
“Quantité” “Quantité” “Quantité” “Quantité”
“TTC” “TTC” “TTC” “TTC”
34 “34” 34 34
120.5 “120.5” 120.5 120.5
12 “12” 12 12
1446 “1446” =”B2*C2″ “=RC[-2]*RC[-1]”
“B18” “B18” B18 B18
45.6 “45.6” 45.6 45.6
45 “45” 45 45
2052 “2052” =”B3*C3″ “=RC[-2]*RC[-1]”
“A66” “A66” A66 A66
12.25 “12.25” 12.25 12.25
120 “120” 120 120
1470 “1470” =”B4*C4″ “=RC[-2]*RC[-1]”
“C42” “C42” C42 C42
146.65 “146.65” 146.65 146.65
26 “26” 26 26
3812.9 “3812.9” =”B5*C5″ “=RC[-2]*RC[-1]”
“G29” “G29” G29 G29
10 “10” 10 10
84 “84” 84 84
840 “840” =”B6*C6″ “=RC[-2]*RC[-1]”
Vous avez aimé cet article ? Partagez-le avec vos réseaux...
 
Comments

No comments yet.