[Résolu][Calc] Exporter des onglets en fichiers individuels

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
drakkar19
NOOuvel adepte
NOOuvel adepte
Messages : 10
Inscription : 28 sept. 2024 07:39

[Résolu][Calc] Exporter des onglets en fichiers individuels

Message par drakkar19 »

Bonjour à tous,

Savez-vous s'il est possible d'avoir une macro CALC qui me permette d'exporter les onglets d'un classeur en fichiers individuels ods ?

Dans le fichier présent en pièce jointe, j'ai trois onglets nommés onglet_2, onglet_3 et onglet_4 et dans le premier onglet , j'ai la liste des noms des onglets à exporter, le répertoire de sortie étant indiqué dans l'onglet 1.
De fait, il me faudrait un fichier onglet_2.ods, onglet_3.ods puis onglet_4.ods

Merci pour votre aide.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibO 24.2.1.2 sous Windows 11
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 26200
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc]Exporter des onglets en fichiers individuels ?

Message par Dude »

Salut,

Avec zBasic installé, c'est très simple :

Code : Tout sélectionner

GlobalScope.BasicLibraries.loadLibrary ("zBasic")
sChemin = "/chemin/vers/les/classeurs/"	
maListe = array("onglet_2", "onglet_3", "onglet_4")
for each sOnglet in maListe
	zFeuille.Exporte(sChemin & sOnglet & ".ods", sOnglet)	
next
PS : merci d'éviter les noms de document avec "exemple", "test", etc. Le nommage adéquate est ton pseudo + une date ou un incrément.
drakkar19
NOOuvel adepte
NOOuvel adepte
Messages : 10
Inscription : 28 sept. 2024 07:39

Re: [Calc]Exporter des onglets en fichiers individuels ?

Message par drakkar19 »

Merci je m'en vais tester cela.
LibO 24.2.1.2 sous Windows 11
drakkar19
NOOuvel adepte
NOOuvel adepte
Messages : 10
Inscription : 28 sept. 2024 07:39

Re: [Calc]Exporter des onglets en fichiers individuels ?

Message par drakkar19 »

Merci, ça dépote ce zbasic.
Question supplémentaire : dans l'exemple donné, il me faut nommer les onglets à exporter. Le problème c'est que je souhaite faire ça en automatique : j'ai dans mon cas d'école 120 onglets ert je verrais plus la liste des onglets à exporter pouvant être dans un tableau situé dans le premier onglet par exemple.
Ainsi ça permettra d'exporter les onglets selon son choix.
Avez-vous une idée ?

Merci
LibO 24.2.1.2 sous Windows 11
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 26200
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc]Exporter des onglets en fichiers individuels ?

Message par Dude »

drakkar19 a écrit : 10 sept. 2025 10:29 je verrais plus la liste des onglets à exporter pouvant être dans un tableau situé dans le premier onglet
Et bien tu récupères le contenu de ton onglet via zPlage.VersTable
Et tu inclus le nom récupéré dans la boucle.
Rien de bien sorcier.
drakkar19
NOOuvel adepte
NOOuvel adepte
Messages : 10
Inscription : 28 sept. 2024 07:39

Re: [Calc]Exporter des onglets en fichiers individuels ?

Message par drakkar19 »

Je vais tenter, merci !
LibO 24.2.1.2 sous Windows 11
drakkar19
NOOuvel adepte
NOOuvel adepte
Messages : 10
Inscription : 28 sept. 2024 07:39

Re: [Calc]Exporter des onglets en fichiers individuels ?

Message par drakkar19 »

J'ai testé : maListe = zplage.VersTable("B4:B5", "Feuille1")
Dans la Feuille1, le nom de deux onglets sont indiqués en B4 et en B5.
mais cela ne fonctionne point.
Dernière modification par drakkar19 le 14 sept. 2025 13:11, modifié 1 fois.
LibO 24.2.1.2 sous Windows 11
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 26200
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc]Exporter des onglets en fichiers individuels ?

Message par Dude »

drakkar19 a écrit : 14 sept. 2025 13:08 mais cela ne fonctionne point.
Cette phrase ne veut rien dire.
Si tu ne fournis pas la macro complète, comment penses-tu être aidé ?
Donner une ligne de code hors contexte n'a aucun intérêt.
drakkar19
NOOuvel adepte
NOOuvel adepte
Messages : 10
Inscription : 28 sept. 2024 07:39

Re: [Calc]Exporter des onglets en fichiers individuels ?

Message par drakkar19 »

Pardon, fichier joint ça sera mieux, en effet.

A mon avis ma ligne

Code : Tout sélectionner

maListe = zplage.VersTable("B4:B5", "Feuille1")
ne doit pas fonctionner car on ne me retourne rien en vérifiant :

Code : Tout sélectionner

msgbox (maListe(1))
UP : même en forcant la taille de la matrice, pas moyen,

Code : Tout sélectionner

Sub Main
Dim oTable(50) As String
GlobalScope.BasicLibraries.loadLibrary ("zBasic")
maFeuille = "Feuille1"
maPlage = "B4:B5"
oTable = zPlage.VersTable(maPlage, maFeuille)
'sChemin = "C:\Users\aluca\Desktop\The.Drifter.v1.0.7-P2P\"	
'maListe = array("f2", "f3")
'maListe = zplage.VersTable("B4:B5", "Feuille1")
'oTable = zPlage.VersTable(maPlage)
msgbox (oTable(0))
'for each sOnglet in maListe
'	zFeuille.Exporte(sChemin & sOnglet & ".ods", sOnglet)	
'next
End Sub
Autre test :

la partie Test fonctionne pourtant, je ne vois pas d'où ça peut venir.

Code : Tout sélectionner

Sub Main
Dim oTable(50) As String, sChemin as String
GlobalScope.BasicLibraries.loadLibrary ("zBasic")
maFeuille = "Feuille1"
maPlage = "B4:B5"
oTable = zPlage.VersTable(maPlage, maFeuille)
sChemin = "C:\Users\aluca\Desktop\The.Drifter.v1.0.7-P2P\"	
for each elem in oTable
	zFeuille.Exporte(sChemin & elem & ".ods", elem)	
next
End Sub

Sub Test
GlobalScope.BasicLibraries.loadLibrary("zBasic")
	maFeuille = "Feuille1"
	maPlage = "B4:B5"
	oTable = zPlage.VersTable(maPlage, maFeuille)
	oTable = zTable.SansDoublon(oTable, 1)
	zTable.Ecrit("Feuille1", "A12", oTable)
End Sub
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibO 24.2.1.2 sous Windows 11
drakkar19
NOOuvel adepte
NOOuvel adepte
Messages : 10
Inscription : 28 sept. 2024 07:39

Re: [Calc]Exporter des onglets en fichiers individuels ?

Message par drakkar19 »

Je tente ceci mais je n'arrive pas à "pointer" les éléments de oTable :

Code : Tout sélectionner

Sub Main
Dim oTable(50) As String, sChemin, elem as String
GlobalScope.BasicLibraries.loadLibrary ("zBasic")
maFeuille = "Feuille1"
maPlage = "B4:C5"
oTable = zPlage.VersTable(maPlage, maFeuille)
sChemin = "C:\Users\aluca\Desktop\The.Drifter.v1.0.7-P2P\"	
'for each elem in oTable
'	zFeuille.Exporte(sChemin & elem & ".ods", elem)	
'next
For Each elem In oTable
      Msgbox elem
   Next elem
End Sub
LibO 24.2.1.2 sous Windows 11
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 26200
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc]Exporter des onglets en fichiers individuels ?

Message par Dude »

Dude a écrit : 03 sept. 2025 06:14 merci d'éviter les noms de document avec "exemple", "test", etc. Le nommage adéquate est ton pseudo + une date ou un incrément.
:marto:
drakkar19 a écrit : 14 sept. 2025 13:13 A mon avis ma ligne

Code : Tout sélectionner

maListe = zplage.VersTable("B4:B5", "Feuille1")
ne doit pas fonctionner car on ne me retourne rien en vérifiant :

Code : Tout sélectionner

msgbox (maListe(1))
Outil indispensable : XRay
Pour constater qu'il s'agit d'un tableau de tableaux.
capture.png
Je t'invite aussi à lire la documentation de zBasic quant à l'emploi des tables mémoire.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
drakkar19
NOOuvel adepte
NOOuvel adepte
Messages : 10
Inscription : 28 sept. 2024 07:39

Re: [Calc]Exporter des onglets en fichiers individuels ?

Message par drakkar19 »

Cool, je ne connaissais pas xRay, merci !
LibO 24.2.1.2 sous Windows 11
Avatar de l’utilisateur
Bidouille
RespOOnsable forum
RespOOnsable forum
Messages : 12851
Inscription : 08 nov. 2005 16:23
Localisation : Brest, France

Re: [Calc]Exporter des onglets en fichiers individuels ?

Message par Bidouille »

Dernière visite : 15 sept. 2025 20:09
Un mois plus tard, n'ayant plus de nouvelle, nous considérons votre problème comme résolu.
Veillez à baliser le fil par vous-même la prochaine fois.


En cas d'erreur, veuillez lire ce sujet pour une éventuelle réouverture de votre question :
ftopic52748-reouverture-de-question-fermee.html