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.
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 Outils
▸Personnaliser
▸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 Outils
▸Options
▸LibreOffice
▸Affichage
. 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