[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 !

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

Messagepar romainsta01 » 05 Août 2019 18:46


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 : 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 édition par micmac le 06 Août 2019 19:42, édité 4 fois.
Raison: Ajout balise résolu
LibO 6.0 sous windows 10
romainsta01
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 11
Inscrit le : 05 Août 2019 18:40

Re: Création dossiers et sous-dossiers

Messagepar Bidouille » 05 Août 2019 18:52

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é.
Avatar de l’utilisateur
Bidouille
RespOOnsable forum
RespOOnsable forum
 
Message(s) : 10285
Inscrit le : 08 Nov 2005 17:23
Localisation : Brest, France

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

Messagepar romainsta01 » 05 Août 2019 19:00

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
romainsta01
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 11
Inscrit le : 05 Août 2019 18:40

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

Messagepar OOotremer971 » 05 Août 2019 23:48

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   AgrandirRéduire
For i = 1 to 5

par
Code : Tout sélectionner   AgrandirRéduire
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   AgrandirRéduire
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
Ubuntu 18.04.4 LTS
OpenSuse Leap
Avatar de l’utilisateur
OOotremer971
HédOOniste
HédOOniste
 
Message(s) : 2201
Inscrit le : 16 Avr 2010 14:31

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

Messagepar Noonours » 06 Août 2019 01:31

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   AgrandirRéduire
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 plantigrade râleur

Pour obtenir la réponse la plus précise possible, N’HÉSITEZ SURTOUT PAS À JOINDRE UN FICHIER

LibO 6.2.8.2 sous Windows 10
LibO 5.0.6.3 (obligation de version) sous Win 7
Avatar de l’utilisateur
Noonours
Membre cOOnverti
Membre cOOnverti
 
Message(s) : 330
Inscrit le : 11 Mai 2013 01:11
Localisation : Aix en Provence

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

Messagepar romainsta01 » 06 Août 2019 07:27

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 édition par romainsta01 le 06 Août 2019 08:00, édité 1 fois.
LibO 6.0 sous windows 10
romainsta01
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 11
Inscrit le : 05 Août 2019 18:40

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

Messagepar romainsta01 » 06 Août 2019 07:34

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   AgrandirRéduire
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
romainsta01
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 11
Inscrit le : 05 Août 2019 18:40

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

Messagepar OOotremer971 » 06 Août 2019 12:06

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   AgrandirRéduire
oDocTemporaire.storeToURL(convertToURL(chemin(i)), array())

par
Code : Tout sélectionner   AgrandirRéduire
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
Ubuntu 18.04.4 LTS
OpenSuse Leap
Avatar de l’utilisateur
OOotremer971
HédOOniste
HédOOniste
 
Message(s) : 2201
Inscrit le : 16 Avr 2010 14:31

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

Messagepar romainsta01 » 06 Août 2019 12:37

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
romainsta01
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 11
Inscrit le : 05 Août 2019 18:40

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

Messagepar Dude » 06 Août 2019 13:19

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.
Avatar de l’utilisateur
Dude
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 21304
Inscrit le : 03 Mars 2006 08:45
Localisation : 127.0.0.1

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

Messagepar romainsta01 » 06 Août 2019 13:50

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
romainsta01
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 11
Inscrit le : 05 Août 2019 18:40

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

Messagepar Dude » 06 Août 2019 13:59

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.
Avatar de l’utilisateur
Dude
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 21304
Inscrit le : 03 Mars 2006 08:45
Localisation : 127.0.0.1

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

Messagepar romainsta01 » 06 Août 2019 14:10

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
romainsta01
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 11
Inscrit le : 05 Août 2019 18:40

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

Messagepar Dude » 06 Août 2019 15:32

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.
Avatar de l’utilisateur
Dude
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 21304
Inscrit le : 03 Mars 2006 08:45
Localisation : 127.0.0.1

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

Messagepar romainsta01 » 06 Août 2019 16:07

Alors j'utilise la macro suivante :

Code : Tout sélectionner   AgrandirRéduire
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é 13 fois
LibO 6.0 sous windows 10
romainsta01
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 11
Inscrit le : 05 Août 2019 18:40

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

Messagepar Dude » 06 Août 2019 16:23

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.
Avatar de l’utilisateur
Dude
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 21304
Inscrit le : 03 Mars 2006 08:45
Localisation : 127.0.0.1

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

Messagepar romainsta01 » 06 Août 2019 17:14

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
romainsta01
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 11
Inscrit le : 05 Août 2019 18:40

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

Messagepar tintin » 06 Août 2019 17:23

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.7 et LibO 6.3.4.2 / macOS 10.15.2 Catalina
adoptopenjdk-8.jre_232 / Firefox / Thunderbird / Safari / Time Machine
Pour préserver vos documents, faites régulièrement des sauvegardes.
Avatar de l’utilisateur
tintin
GourOOu
GourOOu
 
Message(s) : 6498
Inscrit le : 18 Juil 2008 16:29
Localisation : F-Oise + F-Savoie

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

Messagepar romainsta01 » 06 Août 2019 17:25

Yes super merci Tintin !!

Voici le lien du coup !

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

Merci !!
LibO 6.0 sous windows 10
romainsta01
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 11
Inscrit le : 05 Août 2019 18:40

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

Messagepar OOotremer971 » 06 Août 2019 17:56

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   AgrandirRéduire
aSep = getPathSeparator

par
Code : Tout sélectionner   AgrandirRéduire
aSep = "/"

et là ça marche

A+

Désolé.
En principe, toujours à jour des dernières versions dites stables
AOO
LibreOffice
Debian 10
Ubuntu 18.04.4 LTS
OpenSuse Leap
Avatar de l’utilisateur
OOotremer971
HédOOniste
HédOOniste
 
Message(s) : 2201
Inscrit le : 16 Avr 2010 14:31

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

Messagepar romainsta01 » 06 Août 2019 18:59

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   AgrandirRéduire
aSep = getPathSeparator

par
Code : Tout sélectionner   AgrandirRéduire
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
romainsta01
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 11
Inscrit le : 05 Août 2019 18:40


Retour vers Macros et API

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : MSN [Bot] et 3 invité(s)