We will be migrating from Ask to Discourse on the first week of August, read the details here

Poser votre question
0

Transfert macro de Excel à Calc

posée 2021-04-24 15:41:52 +0200

Image Gravatar de parménide

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.

éditer requalifier signaler fermer fusionner supprimer

3Réponses

0

répondue 2021-04-25 14:22:42 +0200

Image Gravatar de pierre-yves samyn

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

éditer signaler supprimer permalien plus

Commentaires

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.

Image Gravatar de parménideparménide ( 2021-04-26 16:28:32 +0200 )éditer

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

Image Gravatar de pierre-yves samynpierre-yves samyn ( 2021-04-26 17:51:56 +0200 )éditer
0

répondue 2021-04-24 20:05:55 +0200

Image Gravatar de parménide

updated 2021-04-25 14:05:14 +0200

Image Gravatar de pierre-yves samyn

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.

éditer signaler supprimer permalien plus
0

répondue 2021-04-24 17:24:20 +0200

Image Gravatar de njhub
éditer signaler supprimer permalien plus
S'identifier/S'inscrire pour répondre

Outils de question

1 suiveurs

Stats

Posée: 2021-04-24 15:41:52 +0200

Consultée: 36 fois

Mise à jour: Apr 25