Re,
suite aux réponses de Pierre-Yves et Michel qui m'ont bien aidé, voici
le résultat qui fonctionne, si ça peut aider :
8< -----------------------------------------------
'CSV_To_ODS
'macro d'importation de fichiers NRB au format CSV vers le format ODS
'à installer dans Mes Macros, bibliothèque CSVlib, module NRBimport
Option Explicit
Sub CSV_To_ODS(ByVal pCSVFileName, pODSFileName As String)
Dim l_PropsIn(1) As New com.sun.star.beans.PropertyValue
Dim l_PropsOut()
Dim l_CSVAdr As String 'le nom du fichier converti en URL
Dim l_ODSAdr As String 'le nom du fichier ODS cible, en URL
Dim oODSdoc As Object 'le classeur à créer
Dim l_SepOpt As String
Dim l_CharSep As String
Dim l_CharType As String
Dim l_ColProps As String
Dim l_Line As String
'conversion des noms des fichiers
l_CSVAdr = ConvertToURL(Trim(pCSVFileName))
l_ODSAdr = ConvertToURL(Trim(pODSFileName))
'paramètres d'importation
l_PropsIn(0).Name = "FilterName"
l_PropsIn(0).Value = "Text - txt - csv (StarCalc)"
l_PropsIn(1).Name = "FilterOptions"
'colonnes :
L,Fichier,Page,Struct,Matricule,Nom,Prenom,ZL,CodeErreur,Libelle,ZoneLibre,Pole,Equipe
'numéro : 1 2 3 4 5 6 7 8 9
10 11 12 13
'type : 1 2 1 2 2 2 2 2 2
2 2 2 2
l_ColProps = "1/1/2/2/3/1/4/2/5/2/6/2/7/2/8/2/9/2/10/2/11/2/12/2/13/2"
l_SepOpt = "44" 'code ascii du séparateur de colonnes (virgule)
l_CharSep = "" 'code ascii du délimiteur de texte (aucun)
l_CharType = "22" 'jeu de caractères (ISO-8859-15/EURO)
l_Line = "1" 'ligne de départ de l'import
l_PropsIn(1).Value = l_SepOpt & "," & l_CharSep & "," & l_CharType & ","
& l_Line & "," & l_ColProps
'importation
oODSdoc = StarDesktop.loadComponentFromURL(l_CSVAdr, "_blank", 0,
l_PropsIn())
'enregistrement
oODSdoc.storeAsURL(l_ODSAdr, l_PropsOut())
oODSdoc.close(True)
End Sub 'CSV_To_ODS
----------------------------------------------- >8
La ligne de commande Windows shell pour appeler cette macro est :
"%programfiles%\libreoffice 4\program\soffice.exe" --headless
"macro:///CSVlib.NRBimport.CSV_To_ODS(F:\CSRH_DTE\CSV2ODS\NRBresult.csv,F:\CSRH_DTE\CSV2ODS\NRB_test.ods)"
Amicalement,