Utilisez la macro ONLYOFFICE pour copier des feuilles de calcul

9 novembre 2023By Dasha

L’édition de feuilles de calcul peut s’avérer délicate, en particulier lorsqu’il s’agit de manipuler plusieurs feuilles de calcul contenant des données similaires. Pour vous faciliter la tâche, nous allons créer une macro qui copiera les données d’une feuille de calcul à l’autre et vous aidera à manipuler facilement de grandes feuilles de calcul.

Use ONLYOFFICE macro to copy spreadsheets

Construction de la macro

Tout d’abord, nous accédons à la feuille courante dans l’éditeur. Ensuite, nous accédons à la feuille que nous voulons copier dans la variable pastesheet, après la variable oRange qui spécifie la plage sur laquelle nous voulons travailler.

  const oWorksheet = Api.GetActiveSheet();
  const pastesheet = Api.GetSheet("Sheet2");
  const oRange = oWorksheet.GetRange("A1:C10");
  // If you want to copy a specific Selection to the new sheet
  // var oRange = oWorksheet.GetSelection();

Note : Si vous souhaitez travailler sur une sélection, utilisez plutôt la méthode GetSelection() en décommentant la ligne ci-dessus.

Ensuite, nous utilisons la méthode pour chaque sur la plage spécifiée, pour parcourir chaque cellule de la plage.

oRange.ForEach(function (range) {

En utilisant le paramètre range dans la fonction callback, nous accédons aux données de chaque cellule, en commençant par la première.

  const oValue = range.GetValue();
  const oCharacters = range.GetCharacters(0, 2);
  const oFont = oCharacters.GetFont();
  const fontName = oFont.GetName();
  const oSize = oFont.GetSize();
  const isBold = oFont.GetBold();
  const isItalic = oFont.GetItalic();

Dans la méthode ForEach, nous commençons par extraire la valeur de la cellule. Ensuite, nous extrayons les caractères initiaux de la valeur pour connaître ses paramètres tels que le gras, l’italique, etc. Ensuite, nous obtenons le fontName, suivi de la taille de la police, afin de les implémenter dans la nouvelle feuille.

if (oValue === null || oValue === "") {
      pastesheet.GetRange(range).SetValue(" ");
    }

Avant de placer les valeurs dans la nouvelle feuille, nous effectuons quelques vérifications à l’aide de boucles “if else” pour nous assurer que les cellules vides sont représentées correctement dans la nouvelle feuille, comme indiqué ci-dessus.

else {
      oFont.SetName(fontName);
      pastesheet.GetRange(range).SetValue(oValue);
      pastesheet.GetRange(range).SetFontName(fontName);
      pastesheet.GetRange(range).SetFontSize(oSize);
      oWorksheet.GetRange(range).AutoFit(false, true);
      if (isBold) {
        pastesheet.GetRange(range).SetBold(true);
      }
      if (isItalic) {
        pastesheet.GetRange(range).SetItalic(true);
      }
    }

Enfin, dans la boucle else, nous plaçons les valeurs dans les cellules correspondantes, puis nous attribuons à ces cellules des propriétés telles que le gras, l’italique, le fontname et la taille de la police.

Macro complète

Voici le code complet de la macro :

(function () {
  const oWorksheet = Api.GetActiveSheet();
  const pastesheet = Api.GetSheet("Sheet2");
  const oRange = oWorksheet.GetRange("A1:C10");

  // If you want to copy a specific Selection to the new sheet
  // var oRange = oWorksheet.GetSelection();

  oRange.ForEach(function (range) {
    const oValue = range.GetValue();
    const oCharacters = range.GetCharacters(0, 2);
    const oFont = oCharacters.GetFont();
    const fontName = oFont.GetName();
    const oSize = oFont.GetSize();
    const isBold = oFont.GetBold();
    const isItalic = oFont.GetItalic();
    if (oValue === null || oValue === "") {
      pastesheet.GetRange(range).SetValue(" ");
    } else {
      oFont.SetName(fontName);
      pastesheet.GetRange(range).SetValue(oValue);
      pastesheet.GetRange(range).SetFontName(fontName);
      pastesheet.GetRange(range).SetFontSize(oSize);
      oWorksheet.GetRange(range).AutoFit(false, true);

      if (isBold) {
        pastesheet.GetRange(range).SetBold(true);
      }
      if (isItalic) {
        pastesheet.GetRange(range).SetItalic(true);
      }
    }
  });
})();

Quelques points clés à retenir :

  1. Assurez-vous que le nom de la feuille que vous spécifiez dans la macro existe et qu’il s’agit de préférence d’une feuille vierge.
  2. Veillez à exécuter la macro à partir de la feuille principale (la feuille mère) et non de la feuille nouvellement créée.

Exécutons notre macro et voyons comment elle fonctionne !

Voici un autre exemple de macro fonctionnant avec la méthode GetSelection() :

Nous espérons que cette macro vous sera d’une grande utilité dans vos tâches quotidiennes d’édition de feuilles de calcul !

Ne manquez pas l’occasion d’exploiter la puissance de l’API ONLYOFFICE. Notre vaste bibliothèque de méthodes API est votre clé pour transformer vos idées en réalité. Si vous avez des questions ou des concepts innovants, nous vous encourageons à les partager avec nous. Votre contribution est très appréciée et nous sommes ravis de pouvoir collaborer avec vous. Nous vous souhaitons bonne chance dans vos projets exploratoires !