Introduction aux Macro-commandes
Accès direct à la table des matières de ce chapitre.
Le langage de programmation à utiliser pour écrire une macro-commande dépend de l'environnement d'exécution de la macro-commande.
En effet
avec MS Excel, on programme en VBA (Visual Basic pour Application) : une version adaptée programmation objet du BASIC ;
- avec Google Sheet, on utilise JavaScript ;
- avec Libre Office Calc on peut utiliser VBA, Javascript ou python...
Cela aura pour conséquence, qu'une macro-commande écrite pour une feuille de calcul MS Excel ne sera pas copiable (couper-coller) dans G Sheet ou dans LO Calc ou réciproquement. Il existe cependant un convertisseur de macros MS Excel vers G Sheet.
Mais, même lorsque la macro-commande est écrite en VBA pour Libre Office Calc ou pour Excel, le copier-coller ne fonctionne pas car :
les classes définissant les objets utilisés dans les macro-commandes sont différentes ;
et les objets instanciés utiliseront des méthodes ( fonctions) et des propriétés (attributs) différentes.
Exemple 1 : l'accès au classeur actif se fait en utilisant :
l' objet thisComponent en LO Basic, instancié au lancement du tableur ;
l'objet workSheet ou thisWorksheet en VBA Excel, instancié au lancement du tableur ;
- la méthode getActiveSpreadsheet() de la classe SpreadsheetApp( SpreadsheetApp.getActiveSpreadsheet()) pour Google Sheet.
Exemple 2 : l'accès à la feuille active se fait en utilisant :
une combinaison des méthodes currentController et activeSheet sur thisComponent( thisComponent.currentController.activeSheet) en LO Basic ;
l'objet activeSheet pour VBA Excel, instancié au lancement du tableur ;
- la méthode getActiveSheet() de la classe SpreadsheetApp( SpreadsheetApp.getActiveSheet()) pour Google Sheet.
Dans les onglets ci-dessous, figure le code d'une macro-commande qui colorie le fond de la cellule A1 de la feuille de calcul active d'un tableur. Elle est écrite en 3 versions : MS Excel, LO Calc et Google Sheet.

- LibreOffice Calc 1/2 (Basic) ;
- LibreOffice Calc 2/2 (Basic) ;
- MS Excel (Basic) ;
- Google Sheet (Javascript).
Un exemple expliqué de macro-commandes : calcul d'une moyenne pondérée.
dans le presse papier
sub etude()
Dim laFeuille as Object
Dim laCellule as Object
laFeuille = thisComponent.currentController.activeSheet
laCellule = laFeuille.getCellRangeByName("A1")
laCellule.CellBackColor = RGB(255, 245, 157)
end sub
dans le presse papier
Sub etude()
Dim laCellule
Set laCellule = ActiveSheet.Range("A1")
laCellule.Interior.Color = RGB(255, 245, 157)
End Sub
dans le presse papier
function etude(){
var leClasseur = SpreadsheetApp.getActiveSpreadsheet();
var laFeuille = leClasseur.getActiveSheet();
var laCellule = laFeuille.getRange("A1");
laCellule.setBackgroundRGB(255, 245, 157);
}
-


