[Résolu] [Calc] Création dossiers et sous-dossiers

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 !
romainsta01
NOOuvel adepte
NOOuvel adepte
Messages : 11
Inscription : 05 août 2019 19:40

[Résolu] [Calc] Création dossiers et sous-dossiers

Message par romainsta01 »


La modération vous a écrit: Suppression de l'icône Image
Les icônes mises à votre disposition ont une signification précise sur ce forum.
Veuillez consulter ce fil pour en savoir plus : https://forum.openoffice.org/fr/forum/ftopic3299.html

Bonjour a tous,

Malgré de nombreuses recherches je n'arrive pas a créer une macro assez compliquée j'en appel aux plus fins connaisseurs !!

Alors le fichier avec infos non confidentielles vous le trouverez ici:

https://www.data.gouv.fr/s/resources/se ... airies.ods

Il faudrait a partir de ce fichier, créer sur windows un dossier par cellule de la colonne B , et dans chacun des dossiers crées y mettre un sous dossier correspondant à la cellule de la meme ligne de la colonne D et mettre dans ce sous dossier créé les infos des colonnes E,F,G,H,I,J dans un fichier .ods

Pour la première ligne du fichier par exemple créer un dossier "01400" à l'intérieur duquel mettre un sous-dossier "L'Abergement-Clémenciat" et mettre dans celui-ci un fichier calc avec les infos de E2,F2,G2,H2,I2 et J2 .

Soit - B1
- ----------D1
-----------------infos de E2,F2,G2,H2,I2,J2.ods

Après je me débrouillerais pour classer par département mais ça serait magnifique déjà de faire ça !!

Est-ce assez clair ?

Merci !
Dernière modification par micmac le 06 août 2019 20:42, modifié 4 fois.
Raison : Ajout balise résolu
LibO 6.0 sous windows 10
Avatar de l’utilisateur
Bidouille
RespOOnsable forum
RespOOnsable forum
Messages : 12196
Inscription : 08 nov. 2005 17:23
Localisation : Caen, France
Contact :

Re: Création dossiers et sous-dossiers

Message par Bidouille »

Cette section a des règles très précises que vous devez obligatoirement suivre pour obtenir de l'aide. C'est indiqué dans le cadre rouge en haut de la page.

Il est demandé aux auteurs de faire précéder le titre de leur question d'une balise adéquate. Ce balisage est extrêmement important car il permet d'avoir une base de connaissance optimum en cas de recherche. Avez-vous remarqué comment étaient les autres questions postées ?

Lisez ce fil pour savoir quelle balise utiliser : http://forum.openoffice.org/fr/forum/su ... html#27295

Un titre accrocheur vous permettra d'une part d'être aidé plus rapidement et d'autre part, d'enrichir notre base de connaissances.

Nous l'avons fait pour vous cette fois-ci mais lors de votre prochaine question, nous vous remercions de le faire vous-même sous peine de voir votre sujet verrouillé.
romainsta01
NOOuvel adepte
NOOuvel adepte
Messages : 11
Inscription : 05 août 2019 19:40

Re: [Calc] Création dossiers et sous-dossiers

Message par romainsta01 »

Bien compris merci !
La modération vous a écrit: Open office 4.1.10 figurant dans votre signature n'existe pas. La dernière version est la 4.1.6. Veuillez corriger votre signature

LibO 6.0 sous windows 10
Avatar de l’utilisateur
OOotremer971
ManitOOu
ManitOOu
Messages : 2744
Inscription : 16 avr. 2010 15:31

Re: [Calc] Création dossiers et sous-dossiers

Message par OOotremer971 »

Bonjour,
romainsta01 a écrit :Est-ce assez clair ?
Pour moi oui, mais tu ne dis pas quel nom donner au fichier qui va contenir les infos des colonnes E,F,G,H,I et J de chaque ligne. Infos.ods ?
Peut être préciser aussi dans quel sous répertoire de ton arborescence Windows tu souhaites créer tous ces dossiers.

A tester en attendant + de précisions :
En l'état, un répertoire Mairies est créé dans Mes Documents et seulement les 5 premières lignes du fichier sont traitées pour confirmer le test.
Si c'est Ok, remplacer (ligne 21)

Code : Tout sélectionner

For i = 1 to 5
par

Code : Tout sélectionner

For i = 1 to 36117
et dé-commenter les lignes 'fenetre.Enable = False et 'fenetre.Enable = True en retirant l'apostrophe en début de ligne (ligne 16 et 26).

Code : Tout sélectionner

REM  *****  BASIC  *****

Option Explicit

Private oDocTemporaire As Object
Private oDoc As Object
Private oSheet As Object

Sub Main
Dim propFich(0) As New com.sun.star.beans.PropertyValue
Dim oSheetTempo As Object
Dim i As Long
Dim fenetre as Object
oDoc = Thiscomponent
fenetre = oDoc.CurrentController.Frame.ContainerWindow
'fenetre.Enable = False
propFich(0).Name = "Hidden"
propFich(0).Value = True
oSheet = Thiscomponent.Sheets(0)
oDocTemporaire = StarDesktop.loadComponentFromURL("private:factory/scalc", "_blank", 0, propFich())
For i = 1 to 5
	oDocTemporaire.Sheets(0).GetCellRangeByPosition(0,0,5,0).SetDataArray(recupData(i))
	oDocTemporaire.storeToURL(convertToURL(chemin(i)), array())
next
oDocTemporaire.close(True)
'fenetre.Enable = True
End Sub

Function raccourci As String
Dim ps As Object, rep As String
raccourci = CreateUnoService("com.sun.star.util.PathSubstitution").getSubstituteVariableValue("$(work)")
end Function

Function chemin(oRow As Long) As String
Dim aSep As String, cel1 As String, cel2 As String
aSep = getPathSeparator
cel1 = oSheet.GetCellByPosition(1,oRow).String
cel2 = oSheet.GetCellByPosition(3,oRow).String
chemin = raccourci & aSep & "Mairies" & aSep & cel1 & aSep & cel2 & aSep & "infos.ods"
End Function

Function recupData(oRow As Long) As Variant
recupData = oSheet.GetCellRangeByPosition(4,oRow,9,oRow).DataArray
End Function
A+
En principe, toujours à jour des dernières versions dites stables
AOO
LibreOffice
Debian 10 et 11
Avatar de l’utilisateur
Noonours
PassiOOnné
PassiOOnné
Messages : 501
Inscription : 11 mai 2013 02:11
Localisation : Aix en Provence

Re: [Calc] Création dossiers et sous-dossiers

Message par Noonours »

Bonjour

Une tentative de script qui génère les fichiers au format texte (.odt)
Il y a possibilité de les regrouper aussi par département pour ne pas avoir à le faire "à la main" :wink:

Code : Tout sélectionner

Sub GenererFichiers()

oDoc = thisComponent
oFeuil = oDoc.sheets.getByName("Mairies")

LesDonnees 	=	oFeuil.getCellRangeByName("B2:J36118").DataArray

	For i = 0 to 36117
	 Dossier = Environ("USERPROFILE") & "\" & LesDonnees(i)(0) & "\" & LesDonnees(i)(2) & ".odt\" 'USERPROFILE sous Windows trouve la racine utilisateur, à modifier éventuellement ;)
	 LeTexte = ""
	 Open Dossier For Output As #1
		for t = 3 to 8
		 LeTexte = LeTexte & LesDonnees(i)(t) & chr(10)
		next t
	 Print #1, Letexte
	 Close #1
	next i
End Sub
Je suis preneur de remarques (positives, hein? :wink: ) pour améliorer ces lignes de code, il existe surement plus élégant ou fonctionnel que ça...
Noonours procrastinateur perfectionniste: "Je fais rien, mais demain je l'ferai mieux"

Pour obtenir la réponse la plus précise possible, VEUILLEZ JOINDRE UN FICHIER

LibO 7.6.5.2 Stable et OpenOffice 4.1.15 sous Windows 10
romainsta01
NOOuvel adepte
NOOuvel adepte
Messages : 11
Inscription : 05 août 2019 19:40

Re: [Calc] Création dossiers et sous-dossiers

Message par romainsta01 »

Merci OOotremer971 !!

J'ai éssayé ta macro mais ca me donne le message d'erreur suivant au niveau de la ligne 23 " oDocTemporaire.storeToURL(convertToURL(chemin(i)), array())":

Erreur d'exécution BASIC.
Une exception s'est produite :
Type: com.sun.star.io.IOException
Message: SfxBaseModel::impl_store <file:///C:/Users/nina6/OneDrive/Documents%5CMairies%5C01400%5CL'Abergement-Cl%C3%A9menciat%5Cinfos.ods> failed: 0x507.

Je ne comprends pas ce qui peut clocher !!

Le fichier peut s'appeler info.ods pas de soucis et le sous-répertoire est C:\B

Merci !!
Dernière modification par romainsta01 le 06 août 2019 09:00, modifié 1 fois.
LibO 6.0 sous windows 10
romainsta01
NOOuvel adepte
NOOuvel adepte
Messages : 11
Inscription : 05 août 2019 19:40

Re: [Calc] Création dossiers et sous-dossiers

Message par romainsta01 »

Noonours a écrit :Bonjour

Une tentative de script qui génère les fichiers au format texte (.odt)
Il y a possibilité de les regrouper aussi par département pour ne pas avoir à le faire "à la main" :wink:

Code : Tout sélectionner

Sub GenererFichiers()

oDoc = thisComponent
oFeuil = oDoc.sheets.getByName("Mairies")

LesDonnees 	=	oFeuil.getCellRangeByName("B2:J36118").DataArray

	For i = 0 to 36117
	 Dossier = Environ("USERPROFILE") & "\" & LesDonnees(i)(0) & "\" & LesDonnees(i)(2) & ".odt\" 'USERPROFILE sous Windows trouve la racine utilisateur, à modifier éventuellement ;)
	 LeTexte = ""
	 Open Dossier For Output As #1
		for t = 3 to 8
		 LeTexte = LeTexte & LesDonnees(i)(t) & chr(10)
		next t
	 Print #1, Letexte
	 Close #1
	next i
End Sub
Je suis preneur de remarques (positives, hein? :wink: ) pour améliorer ces lignes de code, il existe surement plus élégant ou fonctionnel que ça...


Merci Noonours !!

je vais la tester dès que la macro pour la création des dossiers fonctionnera je te dirais ca , merci encore pour ton aide !!
LibO 6.0 sous windows 10
Avatar de l’utilisateur
OOotremer971
ManitOOu
ManitOOu
Messages : 2744
Inscription : 16 avr. 2010 15:31

Re: [Calc] Création dossiers et sous-dossiers

Message par OOotremer971 »

Bonjour,

Je n'ai pas Windows sous la main pour tester et je ne reproduis pas le dysfonctionnement dans mon environnement :(
essaye de remplacer :

Code : Tout sélectionner

oDocTemporaire.storeToURL(convertToURL(chemin(i)), array())
par

Code : Tout sélectionner

oDocTemporaire.storeToURL(chemin(i), array())
Je vais essayer de comprendre sur poste équipé de Windows.

A+
En principe, toujours à jour des dernières versions dites stables
AOO
LibreOffice
Debian 10 et 11
romainsta01
NOOuvel adepte
NOOuvel adepte
Messages : 11
Inscription : 05 août 2019 19:40

Re: [Calc] Création dossiers et sous-dossiers

Message par romainsta01 »

Merci beaucoup !

Effectivement j'ai modifié la ligne comme tu me l'as indiqué mais ça me fait exactement la même erreur ....
LibO 6.0 sous windows 10
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25142
Inscription : 03 mars 2006 08:45
Localisation : 127.0.0.1
Contact :

Re: [Calc] Création dossiers et sous-dossiers

Message par Dude »

Salut,
romainsta01 a écrit :mais ça me fait exactement la même erreur ....
Faisons un minimum d'analyse...
Rien ne te choque dans le chemin du document que tu tentes de créer ?
romainsta01 a écrit :Message: SfxBaseModel::impl_store <file:///C:/Users/nina6/OneDrive/Documents%5CMairies%5C01400%5CL'Abergement-Cl%C3%A9menciat%5Cinfos.ods> failed: 0x507.
romainsta01
NOOuvel adepte
NOOuvel adepte
Messages : 11
Inscription : 05 août 2019 19:40

Re: [Calc] Création dossiers et sous-dossiers

Message par romainsta01 »

Bonjour!

Si le One drive me choque, après le reste étant débutant je ne sait pas encore bien l'analyser....

Eclaire moi !
LibO 6.0 sous windows 10
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25142
Inscription : 03 mars 2006 08:45
Localisation : 127.0.0.1
Contact :

Re: [Calc] Création dossiers et sous-dossiers

Message par Dude »

Hors programmation, tu peux faire un 1er test.
Créer un classeur
Aller à l'emplacement C:/Users/nina6/OneDrive/
L'enregistrer sous le nom Documents%5CMairies%5C01400%5CL'Abergement-Cl%C3%A9menciat%5Cinfos.ods

Rappel : une macro ne peut rien de plus que ce que fait l'utilisateur, ce n'est qu'une automatisation de commandes.
romainsta01
NOOuvel adepte
NOOuvel adepte
Messages : 11
Inscription : 05 août 2019 19:40

Re: [Calc] Création dossiers et sous-dossiers

Message par romainsta01 »

Merci !

Effectivement j'arrive à créer un fichier Documents%5CMairies%5C01400%5CL'Abergement-Cl%C3%A9menciat%5Cinfos.ods dans le dossier C:\Users\nina6\OneDrive sans aucun probleme .
LibO 6.0 sous windows 10
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25142
Inscription : 03 mars 2006 08:45
Localisation : 127.0.0.1
Contact :

Re: [Calc] Création dossiers et sous-dossiers

Message par Dude »

romainsta01 a écrit :Effectivement j'arrive à créer un fichier [...] sans aucun probleme .
Fais nous une copie écran du dialogue Fichier > Propriétés que l'on se rende compte de la situation.

On t'a donné deux solutions.
Comme on ne sait pas quel script tu utilises, commence par fournir un document embarquant la macro.
Merci de fournir quelque chose d'exhaustif et qui provoque l'erreur chez toi.
romainsta01
NOOuvel adepte
NOOuvel adepte
Messages : 11
Inscription : 05 août 2019 19:40

Re: [Calc] Création dossiers et sous-dossiers

Message par romainsta01 »

Alors j'utilise la macro suivante :

Code : Tout sélectionner

Option Explicit

Private oDocTemporaire As Object
Private oDoc As Object
Private oSheet As Object

Sub Main
Dim propFich(0) As New com.sun.star.beans.PropertyValue
Dim oSheetTempo As Object
Dim i As Long
Dim fenetre as Object
oDoc = Thiscomponent
fenetre = oDoc.CurrentController.Frame.ContainerWindow
fenetre.Enable = False
propFich(0).Name = "Hidden"
propFich(0).Value = True
oSheet = Thiscomponent.Sheets(0)
oDocTemporaire = StarDesktop.loadComponentFromURL("private:factory/scalc", "_blank", 0, propFich())
For i = 1 to 5
   oDocTemporaire.Sheets(0).GetCellRangeByPosition(0,0,5,0).SetDataArray(recupData(i))
   oDocTemporaire.storeToURL(convertToURL(chemin(i)), array())
next
oDocTemporaire.close(True)
fenetre.Enable = True
End Sub

Function raccourci As String
Dim ps As Object, rep As String
raccourci = CreateUnoService("com.sun.star.util.PathSubstitution").getSubstituteVariableValue("$(work)")
end Function

Function chemin(oRow As Long) As String
Dim aSep As String, cel1 As String, cel2 As String
aSep = getPathSeparator
cel1 = oSheet.GetCellByPosition(1,oRow).String
cel2 = oSheet.GetCellByPosition(3,oRow).String
chemin = raccourci & aSep & "Mairies" & aSep & cel1 & aSep & cel2 & aSep & "infos.ods"
End Function

Function recupData(oRow As Long) As Variant
recupData = oSheet.GetCellRangeByPosition(4,oRow,9,oRow).DataArray
End Function


Je te mets en pièces jointe la capture d'écran de ce qui se passe quand j'éssaie de l'éxecuter en espérant que cela t'aide.

Merci
Pièces jointes
Macro.odg
(205.57 Kio) Téléchargé 96 fois
LibO 6.0 sous windows 10
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25142
Inscription : 03 mars 2006 08:45
Localisation : 127.0.0.1
Contact :

Re: [Calc] Création dossiers et sous-dossiers

Message par Dude »

Sur ce forum, tu as affaire à des bénévoles.
Donc, on évite de leur faire perdre du temps à jouer aux devinettes. :evil:

D'abord, on ouvre ses petits yeux et on répond à la demande :
Dude a écrit :commence par fournir un document embarquant la macro
En clair, tu joins le classeur mairies(1).ods

Ensuite, tu indiques utiliser :
Dans ta signature, il y a écrit :Open office 4.1.6 sous windows 10
Et lorsque j'ouvre ton ODG qui contient une copie écran, je vois :
no_problemo.PNG
Là encore, une mauvaise information.
romainsta01
NOOuvel adepte
NOOuvel adepte
Messages : 11
Inscription : 05 août 2019 19:40

Re: [Calc] Création dossiers et sous-dossiers

Message par romainsta01 »

Merci Dude pour tes précieux conseils !

Tu vois je ne plaisante pas quand je dis que je suis un vrai débutant :D

J'ai modifié ma signature de façon adéquate.

Je te transmettrais bien le fichier mais il fait plus de 2 Mo ça ne me l'accepte pas en PJ .... :evil:
LibO 6.0 sous windows 10
Avatar de l’utilisateur
tintin
GourOOu
GourOOu
Messages : 9339
Inscription : 18 juil. 2008 17:29
Localisation : F-Oise + F-Savoie

Re: [Calc] Création dossiers et sous-dossiers

Message par tintin »

Bonjour,

Lorsque le fichier dépasse les 500 ko acceptés vous pouvez le joindre en passant uniquement par le site http://www.cjoint.com/
Vous placez dans votre message le lien que vous donne cjoint après votre téléversement.
AOO 4.1.15 et LibO stable 7.6.5 / macOS Intel 13.6.5 Ventura
Adoptium-temurinJDK-jre_1.8.0_402 / Firefox/Safari/Thunderbird /Time Machine+cloneCCC
Tutoriels du forum pour macOS
Pour sauvegarder vos documents c'est ceinture ET bretelles
romainsta01
NOOuvel adepte
NOOuvel adepte
Messages : 11
Inscription : 05 août 2019 19:40

Re: [Calc] Création dossiers et sous-dossiers

Message par romainsta01 »

Yes super merci Tintin !!

Voici le lien du coup !

https://www.cjoint.com/c/IHgqzdnNNTj

Merci !!
LibO 6.0 sous windows 10
Avatar de l’utilisateur
OOotremer971
ManitOOu
ManitOOu
Messages : 2744
Inscription : 16 avr. 2010 15:31

Re: [Calc] Création dossiers et sous-dossiers

Message par OOotremer971 »

Re,

Ne cherchez plus ! Je viens de trouver un poste sous Windows et après quelques tests, je constate que c'est le getPathSeparator qui fait des siennes
remplace :

Code : Tout sélectionner

aSep = getPathSeparator
par

Code : Tout sélectionner

aSep = "/"
et là ça marche

A+

Désolé.
En principe, toujours à jour des dernières versions dites stables
AOO
LibreOffice
Debian 10 et 11
romainsta01
NOOuvel adepte
NOOuvel adepte
Messages : 11
Inscription : 05 août 2019 19:40

Re: [Calc] Création dossiers et sous-dossiers

Message par romainsta01 »

OOotremer971 a écrit :Re,

Ne cherchez plus ! Je viens de trouver un poste sous Windows et après quelques tests, je constate que c'est le getPathSeparator qui fait des siennes
remplace :

Code : Tout sélectionner

aSep = getPathSeparator
par

Code : Tout sélectionner

aSep = "/"
et là ça marche

A+

Désolé.
Merci beaucoup OOtremer971 et les autres ca marche parfaitement !! Merci à tous !!!
LibO 6.0 sous windows 10
Verrouillé