Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Open office calc, exporter toutes les feuilles en csv

8 réponses
Avatar
Alain Baeckeroot
Bonjour

j'ai un gros tableau OOcalc, avec une centaine de feuilles que je voudrais
exporter en csv, mais la focntion export ne traite que la feuille courante !

comment faire pour toutes les exporter, idealement chaque fichier ayant
le nom de la feuille :
feuille1.csv, feuille2.csv ....

merci
Alain

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists Vous pouvez aussi ajouter le mot
``spam'' dans vos champs "From" et "Reply-To:"

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-REQUEST@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmaster@lists.debian.org

8 réponses

Avatar
Alain Baeckeroot
Le 21/03/2009 à 20:14, Alain Baeckeroot a écrit :

Bonjour

j'ai un gros tableau OOcalc, avec une centaine de feuilles que je voudrais
exporter en csv, mais la focntion export ne traite que la feuille courant e !

comment faire pour toutes les exporter, idealement chaque fichier ayant
le nom de la feuille :
feuille1.csv, feuille2.csv ....

merci
Alain




j'ai trouvé un programme en visual basic,
http://www.oooforum.org/forum/viewtopic.phtml?p4938#194938

mais comment l'executer ?
Alain

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists Vous pouvez aussi ajouter le mot
``spam'' dans vos champs "From" et "Reply-To:"

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Avatar
Christophe BOISSIN
Pour l'exécuter, il faut l'ajouter dans OOocalc.

Outils/Macros/Gérer les macros/OpenOffice.org Basic...

Il faut penser à modifier le path qui contient tes feuilles excel
(cFolder).
La macro ne fonctionne pas entièrement chez moi.


Le dimanche 22 mars 2009 à 18:06 +0100, Alain Baeckeroot a écrit :
Le 21/03/2009 à 20:14, Alain Baeckeroot a écrit :
>
> Bonjour
>
> j'ai un gros tableau OOcalc, avec une centaine de feuilles que je voudrais
> exporter en csv, mais la focntion export ne traite que la feuille courante !
>
> comment faire pour toutes les exporter, idealement chaque fichier ayant
> le nom de la feuille :
> feuille1.csv, feuille2.csv ....
>
> merci
> Alain
>

j'ai trouvé un programme en visual basic,
http://www.oooforum.org/forum/viewtopic.phtml?p4938#194938

mais comment l'executer ?
Alain




--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists Vous pouvez aussi ajouter le mot
``spam'' dans vos champs "From" et "Reply-To:"

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Avatar
Alain Baeckeroot
Le 22/03/2009 à 19:59, Christophe BOISSIN a écrit :

Pour l'exécuter, il faut l'ajouter dans OOocalc.

Outils/Macros/Gérer les macros/OpenOffice.org Basic...

Il faut penser à modifier le path qui contient tes feuilles excel
(cFolder).
La macro ne fonctionne pas entièrement chez moi.



moi non plus, elle s'arrête au moment de sauver le fichier :
http://markmail.org/message/3knz7dmnxwruyvsc?q=+MakePropertyValue(+"Filte rName"%2C+++csv&page=1&refer=jklg6mekkrbotvv6
explique qu'il manque une fonction (copiée ci dessous), mais
la macro ne marche toujours pas (@#&*! de basic), il ne trouve pas la fonct ion
ou qq chose du genre. (j'ai essayé de la copier avant, dedans, aprà ¨s !)

Autre lien du meme genre pour faire des batch de macro OOO
(avec le même code, a croire qu'il n'y a qu'une seule source)
http://mychael.gotdns.com/blog/2006/11/opendocument-dump-macro/

Ca me saoule, j'aurai du le faire à la main, j'aurai fini depuis longt emps :-)

Alain.


Function MakeProperty( Optional cName As String, Optional uValue ) As com .sun.star.beans.PropertyValue

Dim oPropertyValue As New com.sun.star.beans.PropertyValue
If Not IsMissing( cName ) Then
oPropertyValue.Name = cName
EndIf

If Not IsMissing( uValue ) Then
oPropertyValue.Value = uValue
EndIf

MakePropertyValue() = oPropertyValue
End Function

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists Vous pouvez aussi ajouter le mot
``spam'' dans vos champs "From" et "Reply-To:"

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Avatar
Christophe BOISSIN
Le lundi 23 mars 2009 à 02:39 +0100, Alain Baeckeroot a écrit :
Ca me saoule, j'aurai du le faire à la main, j'aurai fini depuis
longtemps :-)

Alain.


Bonjour,

Non il ne faut pas s'emporter, voici la solution ;-)
L'avantage c'est que tu vas maintenant gagner du temps et cela m'a
permis d'avoir une Macro OOo pour exporter en CSV (et qui sait d'autres
seront contents de l'avoir).

@+
Christophe

P.S : j'ai modifié les délimiteurs de champs et de texte, mais
l'original est commenté au-dessus à chaque fois.

----------------------------------------------------------------------

Function MakePropertyValue( Optional cName As String, Optional uValue )
As com.sun.star.beans.PropertyValue
Dim oPropertyValue As New com.sun.star.beans.PropertyValue
If Not IsMissing( cName ) Then
oPropertyValue.Name = cName
EndIf
If Not IsMissing( uValue ) Then
oPropertyValue.Value = uValue
EndIf
MakePropertyValue() = oPropertyValue
End Function

Sub Export_CSV
' This is the hardcoded pathname to a folder containing Excel files.
cFolder = "/home/cboissin/Bureau"

' Get the pathname of each file within the folder.
cFile = Dir$( cFolder + "/*.*" )
Do While cFile <> ""
' If it is not a directory...
If cFile <> "." And cFile <> ".." Then
' If it has the right suffix...
If LCase( Right( cFile, 4 ) ) = ".xls" Then
' Open the document.
oDoc StarDesktop.loadComponentFromURL( ConvertToUrl( cFolder + "/" + cFile ),
"_blank", 0, Array() )
'======== ' Options for delimiters in CVS
'cFieldDelimiters = Chr(9)
cFieldDelimiters = ";"
'cTextDelimiter = ""
cTextDelimiter = Chr(34)
cFieldTypes = ""
' options....
' cFieldDelimiters = ",;" ' for either commas or
semicolons
' cFieldDelimiters = Chr(9) ' for tab
' cTextDelimiter = Chr(34) ' for double quote
' cTextDelimiter = Chr(39) ' for single quote
' Suppose you want your first field to be numeric, then two
text fields, and then a date field....
' cFieldTypes = "1/2/2/3"
' Use 1=Num, 2=Text, 3=MM/DD/YY, 4Ý/MM/YY, 5=YY/MM/DD,
9=ignore field (do not import)
'----------
' Build up the Filter Options string
' From the Developer's Guide
'
http://api.openoffice.org/docs/DevelopersGuide/DevelopersGuide.htm
' See section 8.2.2 under Filter Options
'
http://api.openoffice.org/docs/DevelopersGuide/Spreadsheet/Spreadsheet.htm#1+2+2+3+Filter+Options
cFieldDelims = ""
For i = 1 To Len( cFieldDelimiters )
c = Mid( cFieldDelimiters, i, 1 )
If Len( cFieldDelims ) > 0 Then
cFieldDelims = cFieldDelims + "/"
EndIf
cFieldDelims = cFieldDelims + CStr(Asc( c ))
Next

If Len( cTextDelimiter ) > 0 Then
cTextDelim = CStr(Asc( cTextDelimiter ))
Else
cTextDelim = "0"
EndIf

cFilterOptions = cFieldDelims + "," + cTextDelim + ",0,1," +
cFieldTypes

'======== ' Prepare new filename
cNewName = Left( cFile, Len( cFile ) - 4 )

' Save it in OOo format.
'oDoc.storeToURL( ConvertToUrl( cFolder + "/" + cNewName +
".sxc" ), Array() )

' Loop and selects sheets to save as csv
oSheets = oDoc.Sheets()
aSheetNames = oSheets.getElementNames()
For index=0 to oSheets.getCount() -1
oSheet = oSheets.getByIndex(index)

' Define prefix or suffix to append to filename
appendName = aSheetNames(index) 'define prefix/suffix
as the name of the sheet
appendNum = index + 1 ' define prefix/suffix as the
number of the sheet
' Choose new filename, with prefix or suffix
'cNewFileName = appendName + "_" + cNewName 'prefix
name
'cNewFileName = appendNum + "_" + cNewName ' prefix
number
'cNewFileName = cNewName + "_" + appendName ' suffix
name
cNewFileName = cNewName + "_" + appendNum ' suffix
number

oController = oDoc.GetCurrentController() 'view
controller
oController.SetActiveSheet(oSheet) 'switches view to
sheet object

' Export it using a filter.
oDoc.StoreToURL( ConvertToUrl( cFolder + "/" +
cNewFileName + ".csv" ),_
Array( MakePropertyValue( "FilterName", "Text - txt -
csv (StarCalc)" ),_
MakePropertyValue( "FilterOptions", cFilterOptions ),_
MakePropertyValue( "SelectionOnly", true ) ) )
Next index
' Close the document.
oDoc.dispose()
EndIf
EndIf
cFile = Dir$
Loop
End Sub

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists Vous pouvez aussi ajouter le mot
``spam'' dans vos champs "From" et "Reply-To:"

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Avatar
Alain Baeckeroot
Le 23/03/2009 à 12:34, Christophe BOISSIN a écrit :
Non il ne faut pas s'emporter, voici la solution ;-)
L'avantage c'est que tu vas maintenant gagner du temps et cela m'a
permis d'avoir une Macro OOo pour exporter en CSV (et qui sait d'autres
seront contents de l'avoir).



Je suppose, j'ai posté sur et je n'ai eu aucune r éponse !
Debian rocks :-)

Ca marche, mais je ne vois pas ce que tu as modifié pour cela.
Il me semblait avoir essayé d'inclure la fonction avant le sub ...

mille merci, je vais pouvoir continuer.
Alain

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists Vous pouvez aussi ajouter le mot
``spam'' dans vos champs "From" et "Reply-To:"

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Avatar
Alain Baeckeroot
Re bonjour
Pour éviter des noms de fichiers contenant des espaces, j'ai ajoutà ©:

' Replace spaces with underscores in filenames.
cNewFileName = Replace(cNewFileName, " ", "_")


Au passage, j'ai noté qu'il n'ignore pas les champs signalés par "9", il importe
tout mais ce n'est pas grave, ca marche :-)

Alain


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists Vous pouvez aussi ajouter le mot
``spam'' dans vos champs "From" et "Reply-To:"

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Avatar
Christophe BOISSIN
Le lundi 23 mars 2009 à 16:38 +0100, Alain Baeckeroot a écrit :
Ca marche, mais je ne vois pas ce que tu as modifié pour cela.
Il me semblait avoir essayé d'inclure la fonction avant le sub ...



Il y avait une erreur dans la fonction que tu avais trouvé sur le site
web que tu as mis en lien.

1ère ligne de la fonction :
Function MakePropertyValue [...] et non pas Function MakeProperty [..]

Effectivement, il faut mettre la nouvelle fonction avant le Sub. Il est
obligatoire de créer cette fonction car elle n'existe pas sous OOo,
c'est la raison pour laquelle la macro telle qu'au départ ne pouvait
s'exécuter intégralement.

mille merci, je vais pouvoir continuer.


De rien, et merci de partager tes améliorations de cette macro :-)

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists Vous pouvez aussi ajouter le mot
``spam'' dans vos champs "From" et "Reply-To:"

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Avatar
Alain Baeckeroot
Le 23/03/2009 à 21:54, Christophe BOISSIN a écrit :

Le lundi 23 mars 2009 à 16:38 +0100, Alain Baeckeroot a écrit :
> Ca marche, mais je ne vois pas ce que tu as modifié pour cela.
> Il me semblait avoir essayé d'inclure la fonction avant le sub ...

Il y avait une erreur dans la fonction que tu avais trouvé sur le si te
web que tu as mis en lien.

1ère ligne de la fonction :
Function MakePropertyValue [...] et non pas Function MakeProperty [..]

Effectivement, il faut mettre la nouvelle fonction avant le Sub. Il est
obligatoire de créer cette fonction car elle n'existe pas sous OOo,
c'est la raison pour laquelle la macro telle qu'au départ ne pouvait
s'exécuter intégralement.

> mille merci, je vais pouvoir continuer.
De rien, et merci de partager tes améliorations de cette macro :-)



Suivant l'avis d'un utilisateur (modérateur?) de , j'ai
posté tout çà :
http://extensions.services.openoffice.org/project/OOcalc_multi_sheets_export

j'essaye de refiler le bébé à la communauté compét ente ;-)
Alain

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists Vous pouvez aussi ajouter le mot
``spam'' dans vos champs "From" et "Reply-To:"

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS