Médiaforma

API JS dans Excel – Lecture des cellules une par une

Partagez cet article sur vos réseaux

Nous allons raisonner sur le même tableau que dans l’exemple précédent :

Pour lire les cellules une par une et les afficher dans la console, on commence par récupérer la plage avec la fonction getRange() qui retourne un array de array.

Pour parcourir ces éléments, vous pouvez utiliser une boucle for of ou une boucle forEach.

Avec une boucle for of

Voici le code à utiliser avec une boucle for of :

async function run() {

  await Excel.run(async function (context) {

    const ws = context.workbook.worksheets.getActiveWorksheet();

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

    plage.load('values');

    await context.sync();

    for (let i of plage.values) // Récupère les lignes

      for (let j of i) // Récupère les cellules

        console.log(j);

  });

}

La boucle for (a of b) parcourt un a un tous les éléments de b. A chaque étape de la boucle, a contient un des éléments de b. Ici, les données parcourues se trouvent dans un tableau de tableau :

[

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

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

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

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

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

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

]

La première boucle for of récupère un à un chacun des tableaux internes, c’est-à-dire chacune des lignes de la plage. La seconde boucle parcourt chacun des éléments extraits par la première boucle et extrait une à une les valeurs, c’est-à-dire le contenu des cellules de la ligne examinée.

Voici ce qui s’affiche dans la console :

Référence

HT

Quantité

TTC

34

120.5

12

1446

B18

45.6

45

2052

A66

12.25

120

1470

C42

146.65

26

3812.9

G29

10

84

840

Avec une boucle forEach()

Ce code est disponible en cliquant ici

Une deuxième possibilité s’offre à vous : l’utilisation de la boucle forEach(). Voici la syntaxe de la fonction forEach() pour un tableau à une dimension :

tableau.forEach((item,index)=>{

  // Traitement

})

Voici la syntaxe de la fonction forEach() pour un tableau à deux dimensions :

tableau.forEach((ligne,index1)=>{

  ligne.forEach((cellule,index2)=>{

    // Traitement

  });

})

plage.values contient un tableau de tableaux qui représente les cellules A1 à D6. Pour le parcourir, il faut donc utiliser deux boucles forEach() imbriquées :

async function run() {

  await Excel.run(async function (context) {

    const ws = context.workbook.worksheets.getActiveWorksheet();

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

    plage.load('values');

    await context.sync();

    plage.values.forEach((ligne, index1)=>{

      ligne.forEach(function (cellule, index2) {

        console.log(cellule);

      });

    });

  });

}

Les données affichées dans la console sont les mêmes qu’avec les boucles for of.

 
Commentaires

Aucun commentaire pour l'instant.

Laissez un commentaire