LibreOffice et Apache OpenOffice/Calc/Macros

Menu.
Il est possible d'enregistrer des actions manuelles, et de les reproduire plusieurs fois en lançant une macro. Pour ce faire aller dans Outils\Macros\Enregistrer une macro.
Pour l'exécuter ou l'éditer, l'option est juste à côté.
Les macros peuvent être stockées dans le logiciel, ou dans le document, et pourront être copiées dans d'autres, et même converties en Visual Basic pour Microsoft Excel. Globalement la syntaxe est assez similaire (ex : _ permet de revenir à la ligne sans couper la commande).
Syntaxe.
Pour sélectionner des cellules, il y a trois solutions :
Pour créer un document texte :
 oDoc = StarDesktop.loadComponentFromURL( "private:factory/scalc", "_blank", 0, Array() )
Pour ouvrir un document ou un répertoire :
sub Ouvrir
 xShell = createUnoService("com.sun.star.system.SystemShellExecute")
 xShell.execute("c:\Users\Admin\Desktop\", "", 0)
End Sub
Le fichier s'ouvrira ensuite avec le programme par défaut défini par le système d'exploitation. Par exemple :
xShell.execute("c:\Users\Admin\Desktop\Importations.xls", "", 0)
est susceptible de s'ouvrir sous Excel même si Calc est déjà ouvert.
Une solution pour manipuler malgré tout un tableau .xls est de passer par "StarDesktop", qui lancera le fichier désiré via Calc quels que soient les paramètres de l'OS sur lequel on exécute la macro :
Sub RécupérerTableau
 Dim Fichier As String
 Dim Array() As Variant
 Dim classeur, feuilles, feuille1 As Object
 Fichier = "c:\Users\Admin\Desktop\Importations.xls"
 Fichier = ConvertToURL(Fichier)
 classeur = StarDesktop.LoadComponentFromURL(Fichier , "_blank", 0, Array()) 
 feuilles = Classeur.Sheets
 feuille1 = feuilles.getByName("Feuille1")
 msgbox (feuille1.getCellByPosition(1,1).string)
 classeur.close(true)
End Sub
Exemples.
Supprimer les doublons entre deux colonnes.
Sub SuppressionDoublon()
'Supprime les lignes doublons dans l'une ou l'autre de deux colonnes
 dim classeur as object
 dim feuilles as object
 dim feuille as object
 dim cellule as object
 dim champ As string
 dim i,j as integer
 classeur = thisComponent ' le classeur
 feuilles = classeur.Sheets ' la collection des feuilles
 feuille = feuilles.getByName("Feuille1") ' la feuille
 for i = 1 to 10
 for j = 1 to 10
 if i = j then
 else
 If feuille.getcellrangebyname("A" & i).string = feuille.getcellrangebyname("B" & j).string then
 If feuille.getcellrangebyname("B" & i).string = feuille.getcellrangebyname("A" & j).string then
 feuille.getcellrangebyname("A" & j).string = ""
 feuille.getcellrangebyname("B" & j).string = ""
 end if
 end if
 end if
 next j
 next i
End Sub
Transcrire des lignes en colonnes.
Par exemple pour transcrire des lignes en colonnes, on peut reproduire un collage spécial en cochant la case "Transposer" :
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False 
Toutefois, on peut aussi utiliser une macro contenant la fonction "getCellByPosition" : cela permet d'ajouter un traitement automatique pendant la transposition :
Sub transcription()
'Transcrit des lignes en colonnes, et y ajoute 000 en suffixe
 dim classeur as object
 dim feuilles as object
 dim feuille as object
 dim cellule as object
 dim champ As string
 dim i as integer
 classeur = thisComponent ' le classeur
 feuilles = classeur.Sheets ' la collection des feuilles
 feuille1 = feuilles.getByName("Feuille1") 'la feuille initiale
 feuille2 = feuilles.getByName("Feuille2") 'La feuille finale
 for i = 1 to 10
 feuille2.getCellByPosition(i,2).String = feuille1.getCellByPosition(1,i).String + 000
 next i
End Sub

OpenOffice.org Calc/Raccourcis clavier
Photographie/Fabricants/Lomographische AG

Lomographische AG est une société autrichienne propriétaire de la marque « lomographie » qui commercialise par l'intermédiaire de son site web "Lomography Society International" des appareils de bas de gamme et des services.

Photographie/Photométrie/La notion de contraste