TUTO [Libre Office Calc] Créer un bouton pour exporter en TXT ou CSV

ccciolll

Membre expert
Club iGen
Bonjour,

si vous avez été habitué à excel, exporter des fichiers au format txt-mac ou csv-windows était facile.
TROP facile, en réalité, mais pour des utilisateurs basiques comme moi, ça suffisait bien.

Avec LibreOffice, le nombre d'options est faramineux. En outre elles sont peu accessibles (il faut cocher une case au moment de l'export pour voir les options) et Libre Office ne change même pas l'extension en .txt ou .csv, il laisse .ods !
bref, pas très user-friendly (en tout cas pour les nuls dans mon genre).

J'ai été confronté au problème et après pas mal d'étapes, d'erreurs, de blablabla, j'ai fini par trouver une solution qui me convient : un bouton qui retient les réglages de MA façon d'exporter les données (celle dont j'ai besoin pour mes usages).

Voici l'explication en images.

CreerBoutonExportCSVLibreOffice-01.webp




CreerBoutonExportCSVLibreOffice-02.webp




CreerBoutonExportCSVLibreOffice-03.webp



CreerBoutonExportCSVLibreOffice-04.webp



CreerBoutonExportCSVLibreOffice-05.webp



CreerBoutonExportCSVLibreOffice-06.webp


CreerBoutonExportCSVLibreOffice-07.webp


CreerBoutonExportCSVLibreOffice-08.webp


CreerBoutonExportCSVLibreOffice-09.webp


CreerBoutonExportCSVLibreOffice-10.webp


Et la suite ci-dessous car je suis limité à 10 images par post.
 
CreerBoutonExportCSVLibreOffice-11.webp


Voilà, le tour est joué.


Concernant les macro, en voici 2 variantes qui me donnent satisfaction (elles sont principalement l'œuvre de forumistes que je me dois de citer ici, luc1en et zeguedon, je n'ai fait que modifier à la marge ou compiler plusieurs sources. Merci à eux) :


Macro pour exporter en txt avec tabulations format MAC (équivalent au format « texte (séparateur : tabulations) » d'excel 2004)
Bloc de code:
    Option Explicit
    Sub ExpTxtTab()
    Dim zeguedonDoc As Object
    Dim zeguedonFP As Object, zeguedonNomDoc() As String, zeguedonFPtype(0) As Integer
    Dim zeguedonPS As Object
    Dim cheminUtilisateur As String
    Dim destination As String
    Dim props1(1) As New com.sun.star.beans.PropertyValue
       zeguedonDoc = thiscomponent
       zeguedonFP = CreateUnoService("com.sun.star.ui.dialogs.FilePicker")
       zeguedonPS = CreateUnoService("com.sun.star.util.PathSubstitution")
       cheminUtilisateur = zeguedonPS.getSubstituteVariableValue("$(work)")
       zeguedonFPtype(0) = com.sun.star.ui.dialogs.TemplateDescription.FILESAVE_SIMPLE
       zeguedonFP.Title = "Export au format TXT"
       zeguedonFP.initialize(zeguedonFPtype())
       zeguedonFP.CurrentFilter = "Textes"
       zeguedonFP.appendFilter("Textes", "*.txt")
       zeguedonFP.DefaultName = Split(zeguedonDoc.Title,".ods")(0) & ".txt"
       zeguedonFP.DisplayDirectory = ConvertToURL(cheminUtilisateur)
       If zeguedonFP.execute = com.sun.star.ui.dialogs.ExecutableDialogResults.OK Then
          zeguedonNomDoc() = zeguedonFP.Files
          props1(0).Name = "FilterName"
          props1(0).Value = "Text - txt - csv (StarCalc)"
          props1(1).Name = "FilterOptions"
          props1(1).Value = "9,34,MAC,1,,0,false,true,true,false"
          MsgBox(chr(13) & "   Le jeu de caractères est:  Europe Occidentale (Apple Macintosh) " & chr(13) & chr(13) &_
              "   Le séparateur de champs est: [Tabulation] ")
          destination = convertToURL(zeguedonNomDoc(0))
          zeguedonDoc.storeToURL(destination, props1())
       End If
       zeguedonFP.dispose
    End Sub



Macro pour exporter en CSV iso avec point-virgule (résultat proche du format « CSV (windows) » d'excel 2004)
Bloc de code:
    Option Explicit
    Sub ExpCsvPointVirgule()
    Dim zeguedonDoc As Object
    Dim zeguedonFP As Object, zeguedonNomDoc() As String, zeguedonFPtype(0) As Integer
    Dim zeguedonPS As Object
    Dim cheminUtilisateur As String
    Dim destination As String
    Dim props1(1) As New com.sun.star.beans.PropertyValue
       zeguedonDoc = thiscomponent
       zeguedonFP = CreateUnoService("com.sun.star.ui.dialogs.FilePicker")
       zeguedonPS = CreateUnoService("com.sun.star.util.PathSubstitution")
       cheminUtilisateur = zeguedonPS.getSubstituteVariableValue("$(work)")
       zeguedonFPtype(0) = com.sun.star.ui.dialogs.TemplateDescription.FILESAVE_SIMPLE
       zeguedonFP.Title = "Export au format CSV"
       zeguedonFP.initialize(zeguedonFPtype())
       zeguedonFP.CurrentFilter = "Textes"
       zeguedonFP.appendFilter("Textes", "*.csv")
       zeguedonFP.DefaultName = Split(zeguedonDoc.Title,".ods")(0) & ".csv"
       zeguedonFP.DisplayDirectory = ConvertToURL(cheminUtilisateur)
       If zeguedonFP.execute = com.sun.star.ui.dialogs.ExecutableDialogResults.OK Then
          zeguedonNomDoc() = zeguedonFP.Files
          props1(0).Name = "FilterName"
          props1(0).Value = "Text - txt - csv (StarCalc)"
          props1(1).Name = "FilterOptions"
          props1(1).Value = "59,34,22,1,,,false"
          MsgBox(chr(13) & "59    =   Le séparateur de champs est: ; [point-virgule] " & chr(13) & chr(13) &_
              "34    =   délimiteur de texte est '' [guillemet Anglais]  " & chr(13) & chr(13) &_
              "22    =   Le jeu de caractères est:  occidental iso-8859-15 " & chr(13) & chr(13) &_
              "1     =   utiliser la première ligne " & chr(13) & chr(13) &_
              "false =   décocher la checkbox 'mettre entre guillemets toutes les cellules de texte' ")
          destination = convertToURL(zeguedonNomDoc(0))
          zeguedonDoc.storeToURL(destination, props1())
       End If
       zeguedonFP.dispose
    End Sub
 
Et merci aux forums grace auxquels je peux retrouver des années plus tard une solution qui fut longue et fastidieuse à mettre en place, et pouvoir remettre facilement à jour mes outils après un changement de système. Ainsi je peux continuer à exporter mes données IPTC - EXIF pour import dans flickr.
 
Dernière édition par un modérateur:
  • Haha
Réactions: JLB21