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); }
-