#1 Le 01/04/2024, à 17:09
- vallo
LibreOffice Calc et macros VBA
Bonjour,
Je cherche à automatiser des tâches répétitives et fastidieuses comme la mise en forme de fichiers CSV que j’importe régulièrement sous Calc : formater des colonnes ou lignes entières ou des plages (ex : dates, chiffres, polices, dimensions, couleurs….). L’objectif est d’enchaîner plusieurs actions.
J’ai tenté d’utiliser l’enregistreur de macros – qui me paraissait l’outil approprié car simple – mais il ne semble pas accepter les sélections à la souris : seule la cellule active est formatée et encore par la seule première action enregistrée.
J’aurais pu – peut-être - créer un modèle et importer mes CSV dedans. Mais je voulais tenter les macros en VBA que j’ai bien longtemps utilisées avec EXCEL
Malgré vidéos et articles divers consultés, je n’avance pas d’un poil et aucune macro ne fonctionne, même la plus simple comme celle-ci :
- La macro simple à tester
Option VBASupport 1
Sub bonjour()
Range ("A1")="Bonjour"
End sub
Mon environnement
- Libreoffice Calc ! Version 7.3.7.2 sous LTS 22.04
- Sécurité des macros : même réglée sur "Faible". Pas d’effet
- Options > Chargement/Enregistrement > Propriétés VBA : tout est coché
- Options > LibreOffice > Avancé > Fonctionnalités optionnelles : les 2 sont cochées
Plusieurs vidéos sur le net font apparaître sur Outils > Macros > Gérer les macros, la disponibilité d'une fenêtre avec Basic…., BeanShell…, JavaScript…, Python.
Chez moi, je n’ai que Basic…. Une incidence ?
Merci pour votre aide
Hors ligne
#2 Le 01/04/2024, à 18:59
- Vobul
Re : LibreOffice Calc et macros VBA
chatgpt indique plutôt ça pour tester :
Option VBASupport 1
Sub bonjour()
Dim oSheet As Object
oSheet = ThisComponent.Sheets.getByName("Feuille1") ' Assurez-vous que le nom de la feuille correspond.
oSheet.getCellRangeByName("A1").String = "Bonjour"
End Sub
Vobul
Utilisez le retour utilisable de commandes !!!
J'aime la langue française, mais je parle franglais, deal with it.
RTFM
Hors ligne
#3 Le 02/04/2024, à 20:46
- Ekel
Re : LibreOffice Calc et macros VBA
Bonsoir,
Calc n'est pas Excel et le basic de Calc n'est pas du VBA.
https://forum.openoffice.org/fr/forum/v … 05#p127205
https://forum.openoffice.org/fr/forum/v … 593#p45593
Cordialement.
Ekel
---
Jammy Jellyfish - KUbuntu Utilisateur n°16275
AMD Ryzen 5 5600G | B550 GAMING X V2 | 16 Go | 22" + 22"
Hors ligne
#4 Le 02/04/2024, à 22:30
- vallo
Re : LibreOffice Calc et macros VBA
Bonsoir,
La question ne vise pas le Basic de Libroffice (qui est totalement illisible) ni les macros existantes sous Excel qui pourraient ne pas marcher sous Calc.
La question vise à CRÉER des macros avec le langage VBA sous LibreOffice, ce qui tout à fait possible, même si tout la palette du langage VBA n'est pas transposable sous LibreOffice.
L'exemple que j'ai posté est simple dans son concept.
Merci quand même
Hors ligne
#5 Le 03/04/2024, à 17:01
- Rafbor
Re : LibreOffice Calc et macros VBA
La question ne vise pas le Basic de Libroffice (qui est totalement illisible)
Bonjour,
c'est ton point de vue mais c'est juste une question de volonté, comme chaque fois qu'un programmeur doit apprendre un nouveau langage, cela passe par une phase d'apprentissage qui est rebutante au début, et puis avec de bons tutos, des exemples et du temps on s'y fait et tout devient plus clair.
J'ai abandonné VBA car je n'utilise plus la suite Office pour passer au LO Basic et il m'a fallu quelques jours pour m'adapter.
Xubuntu 22.04 - Mes projets sur Github
En ligne
#6 Le 07/04/2024, à 17:19
- LeoMajor
Re : LibreOffice Calc et macros VBA
salut,
tiens en gambas, le langage le plus proche du vba
cat gridview.gbs
#!/usr/bin/env gbs3
'Auto Generated Script 04/07/2024 16:06:45.04 Version (3.18.4)
#Script Title="gridview"
#Script Startup="FMain"
#Script Version="0.0.1"
Use "gb.image"
Use "gb.gui"
Use "gb.form"
class FMain
' Gambas class file
Private gr As GridView
Private tb As TextBox
Public Sub Form_Open()
Init()
gr[0, 0].Text = "Bonjour"
End
Private Sub Init()
With gr = New GridView(FMain) As "egr"
.W = FMain.ClientW
.H = FMain.ClientH
.Columns.Count = 5
.Rows.Count = 3
.AutoResize = True
End With
With tb = New TextBox(FMain) As "etb"
.Background = Color.Blue
.Visible = False
End With
End
Public Sub egr_Click()
'gr.Current
With tb
.X = gr.Current.X
.Y = gr.Current.Y
.W = gr.Current.W
.H = gr.Current.H
.Placeholder = "Edit?"
.Visible = True
End With
End
Public Sub etb_Activate()
If String.IsValid(tb.text) Then
gr.Current.Text = tb.Text
Endif
tb.Visible = False
End
End class
form FMain
# Gambas Form File 3.0
{ FMain Form
MoveScaled(0,0,64,64)
}
End form
gbs3 gridview.gbs
Hors ligne
#7 Le 15/04/2024, à 10:14
- Dude
Re : LibreOffice Calc et macros VBA
Bonsoir,
La question vise à CRÉER des macros avec le langage VBA sous LibreOffice, ce qui tout à fait possible
L'exemple que j'ai posté est simple dans son concept.
Et comme tu l'indiques :
aucune macro ne fonctionne, même la plus simple
Parce que le VBA stocke ses macros dans des modules au niveau de chaque feuille dans un XLSx alors que dans un ODS, il n'y a pas ce concept.
Donc écrire dans une cellule implique qu'il faut définir la feuille où agir.
Sub bonjour()
ThisComponent.Sheets.getByName("Feuille1").getCellRangeByName("A1").String = "Bonjour"
End Sub
Vouloir croire que tu peux avoir une compatibilité entre les deux tableurs est une impasse.
Hors ligne