Transfert macro de Excel à Calc

Bonjour,
J’ai une assez grosse macro qui tourne depuis des années sous Excel. Je voudrais passer sous Calc mais la syntaxe ne lui plaît pas. Où trouver les spécificités de Basic sous Calc (méthodes des objets, raccourcis de programmation, etc.) ?
Merci d’avance.

Bonjour parménide, suivez les liens ci-dessous

Aide LibreOffice Basic

La bibliothèque Tools

La bibliothèque DEPOT

La bibliothèque EURO

La bibliothèque FormWizard

La bibliothèque Gimmicks

La bibliothèque Schedule

La bibliothèque ScriptBindingLibrary

La bibliothèque Template

ETC…

:slight_smile:

Merci pour ces indications : j’ai bien progressé dans ma connaissance du langage. Mais je ne suis pas encore capable de traduire mes macros. Par exemple, voici la première macro qu’il refuse d’exécuter :

Sub auto_open()
    With Application
        .ShowToolTips = True
        .LargeButtons = False
        .ColorButtons = True
    End With
    With Toolbars(1)
        .ToolbarButtons.Add Button:=211, Before:=.ToolbarButtons.Count + 1
        .ToolbarButtons(.ToolbarButtons.Count).OnAction = "solde"
    End With
End Sub

Pouvez-vous m’aider ? Merci d’avance.

Bonjour @parménide

Pour répondre à la première question, notre wiki regroupe l’essentiel des ressources permettant d’apprendre comment se programme LibreOffice.

Concernant la macro autoOpen le fonctionnement de LibreOffice est très différent sur ce point.

Le déclenchement à l’ouverture se fait en associant la macro à l’événement via OutilsPersonnaliser▸onglet Événements (ce n’est donc pas le nom de la macro qui fait qu’elle se déclenche à l’ouverture).

La modification de la configuration d’affichage est plus complexe avec LibreOffice. Il n’y a pas d’option pour la couleur des boutons : c’est le style d’icônes lui-même qui la détermine. Le style se change via OutilsOptionsLibreOfficeAffichage. Par exemple le style Sifr affiche des boutons gris.

L’affichage des info-ballons et la taille des boutons peuvent se gérer par programme (lancer AffichageOn pour modifier et AffichageOff pour restaurer :

sub AffichageOn
	PysModifier("/org.openoffice.Office.Common/Help", "ExtendedTip", true)
    PysModifier("/org.openoffice.Office.Common/Misc", "SymbolSet", 3)
end sub

sub AffichageOff
	PysModifier("/org.openoffice.Office.Common/Help", "ExtendedTip", false)
    PysModifier("/org.openoffice.Office.Common/Misc", "SymbolSet", 2)
end sub


sub PysModifier(sCle, sProp, valUpdate)

Dim oConfigProvider as Object
Dim aNodePath(0) as new com.sun.star.beans.PropertyValue
dim cp as object, kc as object

oConfigProvider = createUnoService("com.sun.star.configuration.ConfigurationProvider")
aNodePath(0).Name = "nodepath"
aNodePath(0).Value = sCle

cp = oConfigProvider.createInstanceWithArguments("com.sun.star.configuration.ConfigurationUpdateAccess", aNodePath())
cp.setPropertyValue(sProp, valUpdate)
cp.commitChanges()

end sub

Attention toutefois, nous modifions la configuration de LibreOffice ! Ceci n’est pas anodin. C’est à faire sous sa propre responsabilité en ayant conscience des modifications apportées.

Concernant la modification des barres d’outils, je ne sais pas à quoi correspond celle modifiée dans excel. On peut modifier via un programme dans LibreOffice mais mon conseil serait plutôt de créer une barre d’outils personnalisée pour le classeur concernée et lui affecter ta macro “solde”.

Cordialement

Merci d’avoir pris le temps de rédiger cette longue réponse. J’ai bien progressé : j’ai attaché ma macro auto_open l’évènement correspondant et j’ai placé dans ma barre d’outils une icône (qui semble stable, ce qui n’était pas le cas avec Excel, d’où ma macro auto_open) qui lance ma macro solde.
J’ai passé un certain nombre d’obstacles dans cette macro mais je bute sur la gestion des diagrammes(?, graphs ? Charts ?). Je ne vois pas d’objets permettant de manipuler de genre de choses…
Merci pour votre aide et bonne fin de journée.

Dans les ressources déjà indiquées il y a par exemple ce chapitre du guide basic qui donne des bases