Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 01/04/2024, à 18: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, à 19: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, à 21: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, à 23: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, à 18:01

Rafbor

Re : LibreOffice Calc et macros VBA

vallo a écrit :

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

Hors ligne

#6 Le 07/04/2024, à 18: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, à 11:14

Dude

Re : LibreOffice Calc et macros VBA

vallo a écrit :

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 :

vallo a écrit :

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