- Blog /
- ONLYOFFICE /
- TeamLab
Deux macros à ONLYOFFICE : surligner les doublons et retrouver la prochaine ligne vide
Notre communauté nous demande souvent comment réécrire les macros VBA qu’ils utilisaient à Excel. Dans ce billet de blog, nous apprendrons à le faire en nous basant sur deux exemples simples.
Pour les macros, ONLYOFFICE utilise la syntaxe JavaScript et les APIs de ONLYOFFICE Document Builder. Cela signifie qu’il est indispensable de réécrire les macros VBA avec JavaScript pour pouvoir les utiliser à ONLYOFFICE.
Nous avons choisi JavaScript pour les raisons suivantes :
- il est multiplateforme,
- il est facile à utiliser,
- vous pouvez utiliser le code que vous avez écrit pour la macro aussi bien que pour le module complémentaire.
Nos macros sont sécurisées parce qu’elles ne donnent pas l’accès au système. Elles représentent le code JavaScript qui est exécuté dans la même fenêtre que les éditeurs.
- Dans le tableur, passez à l’onglet « Modules complémentaires » et cliquez sur l’icône « Macros ».
- Sélectionnez « Créer » dans la fenêtre qui apparaîtra.
- Consultez la documentation sur les APIs pour écrire le script.
Pour commencer, nous vous invitons à créer la macro qui permet de surligner avec les couleurs différentes les valeurs en double dans les zones sélectionnées pour que l’utilisateur puisse facilement retrouver les doublons. Nous allons nous baser sur une simple macro VBA.
Voici le script qui en résulte avec les commentaires expliquant toutes les étapes. Les couleurs sont prédéfinies dans le code de la macro.
(function () {
// La couleur d'arrière-plan des cellules avec les valeurs uniques
var whiteFill = Api.CreateColorFromRGB(255, 255, 255);
// L'indice courant de la gamme de couleurs
var uniqueColorIndex = 0;
// La gamme de couleurs pour surligner les doublons
var uniqueColors = [Api.CreateColorFromRGB(255, 255, 0),
Api.CreateColorFromRGB(204, 204, 255),
Api.CreateColorFromRGB(0, 255, 0),
Api.CreateColorFromRGB(0, 128, 128),
Api.CreateColorFromRGB(192, 192, 192),
Api.CreateColorFromRGB(255, 204, 0)];
// Fonction pour obtenir la couleur pour les doublons
function getColor() {
// Si vous avez choisi toutes les couleurs uniques, recommencer dès le début
if (uniqueColorIndex === uniqueColors.length) {
uniqueColorIndex = 0;
}
return uniqueColors[uniqueColorIndex++];
}
// Choisir une feuille active
var activeSheet = Api.ActiveSheet;
// Choisir plusieurs feuilles actives
var selection = activeSheet.Selection;
// Mappage des valeurs des cellules contenant les doublons
var mapValues = {};
// Toutes les cellules de la ligne
var arrRanges = [];
// Lancer le processus de sélection.
selection.ForEach(function (range) {
// Obtenir la valeur de la cellule
var value = range.GetValue();
if (!mapValues.hasOwnProperty(value)) {
mapValues[value] = 0;
}
mapValues[value] += 1;
arrRanges.push(range);
});
var value;
var mapColors = {};
// Examiner toutes les cellules de la sélection et surligner celles avec les doublons
for (var i = 0; i < arrRanges.length; ++i) {
value = arrRanges[i].GetValue();
if (mapValues[value] > 1) {
if (!mapColors.hasOwnProperty(value)) {
mapColors[value] = getColor();
}
arrRanges[i].SetFillColor(mapColors[value]);
} else {
arrRanges[i].SetFillColor(whiteFill);
}
}
})();
Ci-dessous est le résultat de l’exécution de la macro :
Cette macro sert à retrouver la prochaine ligne vide disponible dans la feuille de calcul. Nous avons pris cette macro VBA à titre d’exemple et ont créé ce script :
(function()
{
// Choisir une feuille active
var activeSheet = Api.ActiveSheet;
// L'index minimal de la colonne
var indexRowMin = 0;
// L'index maximal de la colonne
var indexRowMax = 1048576;
// Colonne 'A'
var indexCol = 0;
// L'index de ligne pour chercher une cellule vide
var indexRow = indexRowMax;
for (; indexRow >= indexRowMin; --indexRow) {
// Chosir la cellule
var range = activeSheet.GetRangeByNumber(indexRow, indexCol);
// Vérifier la valeur
if (range.GetValue() && indexRow !== indexRowMax) {
range = activeSheet.GetRangeByNumber(indexRow + 1, indexCol);
range.Select();
break;
}
}
})();
Ce code vous permettra de sélectionner la prochaine ligne vide (le défilement sera disponible dans l’une des version à venir).
Veuillez noter que cette macro va ignorer les espaces qui sont entre vos données, mais pas celles qui sont à la fin.
Si vous avez besoin d’aide lors de la création d’une macro ou la méthode nécessaire ne figure pas dans nos APIs, n’hésitez pas à créer le ticket sur GitHub.
ONLYOFFICE sur GitHub
Apprendre à créer des modules complémentaires. Lire maintenant >>
Inspirez-vous de l’exemple du module complémentaire : remplir les cellules avec des couleurs pour créer une vraie image à base d’une feuille de calcul. En savoir davantage >>
Créez votre compte ONLYOFFICE gratuit
Affichez, modifiez et coéditez des documents texte, feuilles de calcul, diapositives, formulaires et fichiers PDF en ligne.