Aller au contenu principal


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...
Billet créé le :
18 jan 2022

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.

 

En savoir plus sur les classes définissant classeurs, feuilles, cellules, etc dans les environnements :

Un exemple expliqué de macro-commandes : calcul d'une moyenne pondérée.

Cliquez sur le bouton pour copier le code
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
         
Cliquez sur le bouton pour copier le code
dans le presse papier
 Sub etude()

    Dim laCellule

    Set laCellule = ActiveSheet.Range("A1")
    laCellule.Interior.Color = RGB(255, 245, 157)
    
 End Sub
     
Cliquez sur le bouton pour copier le code
dans le presse papier
 function etude(){

    var leClasseur = SpreadsheetApp.getActiveSpreadsheet();
    var laFeuille = leClasseur.getActiveSheet();
    var laCellule = laFeuille.getRange("A1");
    laCellule.setBackgroundRGB(255, 245, 157);
}
     

Quel environnement choisir ?

Cliquer pour agrandir l'image

-