[Résolu][Calc] Créer un dossier nommé par une cellule

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 !
cmoa83
NOOuvel adepte
NOOuvel adepte
Messages : 15
Inscription : 01 oct. 2018 15:47

[Résolu][Calc] Créer un dossier nommé par une cellule

Message par cmoa83 »

Bonjour,
Suite à mon premier sujet
La modération vous a écrit: lien ajouté par le modérateur

je veux faire évoluer ma macro,
Je voudrai que lors que je clique sur le bouton "enregistrer", je crée une dossier au nom du clients il n'existe pas , et y introduire le fichier créé du même nom.
merci de votre aide

Code : Tout sélectionner

sub enregistre
rem ----------------------------------------------------------------------
rem definitions des variables
rem ----------------------------------------------------------------------
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
rem ----------------------------------------------------------------------
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
rem Récupération du contenu de la cellule B2
rem ----------------------------------------------------------------------
MonDoc = ThisComponent
MaFeuil = MonDoc.CurrentController.ActiveSheet
MonTxt = MaFeuil.GetCellRangeByName("B2").String
rem ----------------------------------------------------------------------
rem Enregistrement du nouveau fichier
rem ----------------------------------------------------------------------
dim args1(2) as new com.sun.star.beans.PropertyValue

args1(0).Name = "URL"
args1(0).Value = "file:/Macintosh HD/Utilisateurs/Patrick/clients/????" & MonTxt & ".ods" 
args1(1).Name = "FilterName"
args1(1).Value = "calc8"
args1(2).Name = "SelectionOnly"
args1(2).Value = true

dispatcher.executeDispatch(document, ".uno:SaveAs", "", 0, args1())
libreoffice 6.1 avec os 10.14
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
Messages : 9256
Inscription : 28 août 2010 08:45

Re: [Calc] Créer un dossier nommé par une cellule

Message par micmac »

Bonjour,
Dans votre signature il y a écrit : libreoffice 4.3.7 avec os 10.14
Votre signature indique une version de LibreOffice qui n'est plus maintenue.
Est-ce une erreur, un oubli, un choix, une obligation ?
Dans ce dernier cas, mentionnez-le dans votre signature par "Obligation de version".

Afin de profiter des dernières améliorations, il est fortement recommandé d'être à jour de la dernière version

Dans votre signature il est nécessaire d'indiquer :
1- La version exacte de LibO (LibO 6.0.6 par exemple) ;
2- La version exacte du système d'exploitation (MacOS 10.14 par exemple).
Accès direct à votre signature pour la corriger.

Cordialement.
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: [Calc] Créer un dossier nommé par une cellule

Message par Piaf »

Bonjour
cmoa83 a écrit :je crée une dossier au nom du clients il n'existe pas
Tu devrais faire des recherches sur MkDir, storeAsURL et storeToURL Attention aux caractères interdits ou déconseillés dans le nom des répertoires.
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Avatar de l’utilisateur
OOotremer971
ManitOOu
ManitOOu
Messages : 2744
Inscription : 16 avr. 2010 13:31

Re: [Calc] Créer un dossier nommé par une cellule

Message par OOotremer971 »

Bonjour,
cmoa83 a écrit :Je voudrai que lors que je clique sur le bouton "enregistrer", je crée une dossier au nom du clients il n'existe pas
Il suffit juste de le préciser dans le chemin en ajoutant un séparateur et le nom à donner au dossier. S'il n'existe pas il sera créé.

remplace :

Code : Tout sélectionner

args1(0).Value = "file:/Macintosh HD/Utilisateurs/Patrick/clients/????" & MonTxt & ".ods" 
par

Code : Tout sélectionner

args1(0).Value = "file:/Macintosh HD/Utilisateurs/Patrick/clients/" & MonTxt &"/" & MonTxt & ".ods" 
J'imagine que les point d'interrogation sont supposés représenter le nom du dossier.

A+
En principe, toujours à jour des dernières versions dites stables
AOO
LibreOffice
Debian 10 et 11
cmoa83
NOOuvel adepte
NOOuvel adepte
Messages : 15
Inscription : 01 oct. 2018 15:47

Re: [Calc] Créer un dossier nommé par une cellule

Message par cmoa83 »

merci pour vos réponse rapide,
La ligne de code qui est affichée correspond à la macro de la creation de mon fichier, mais pas à la creation de mon dossier.
Pour ce qui est de MkDir ,je n'ai pas compris le fonctionnement , car j'ai essayer de l'introduire dans la macro mais je ne vois pas comment.

Ps/ j'ai changé la version de libreOffice depuis trois jour donc je viens de remettre ma signature à jour
libreoffice 6.1 avec os 10.14
Avatar de l’utilisateur
OOotremer971
ManitOOu
ManitOOu
Messages : 2744
Inscription : 16 avr. 2010 13:31

Re: [Calc] Créer un dossier nommé par une cellule

Message par OOotremer971 »

cmoa83 a écrit :La ligne de code qui est affichée
Laquelle ?
cmoa83 a écrit :creation de mon fichier, mais pas à la creation de mon dossier.
j'ai probablement mal interprété ta demande.
J'ai cru comprendre que tu voulais ta macro crée un dossier(répertoire) du même nom que le fichier et y mette à l’intérieur le fichier en question.
Désolé.

A+
En principe, toujours à jour des dernières versions dites stables
AOO
LibreOffice
Debian 10 et 11
cmoa83
NOOuvel adepte
NOOuvel adepte
Messages : 15
Inscription : 01 oct. 2018 15:47

Re: [Calc] Créer un dossier nommé par une cellule

Message par cmoa83 »

ce n'est pas grave ,j'ai du mal m'exprimé :roll:
libreoffice 6.1 avec os 10.14
cmoa83
NOOuvel adepte
NOOuvel adepte
Messages : 15
Inscription : 01 oct. 2018 15:47

Re: [Calc] Créer un dossier nommé par une cellule

Message par cmoa83 »

OOOTREMER971 je viens de relire ta reflexion, et je pense que je me suis vraiment mal exprimée voudrais créer un sous dossier car j'ai plusieurs dossiers entre les commande ,fiche client ,facture et a chaque action le client entre ce dossier.
Mon but final est de faire un "dossier client" ou tous les documents du même nom entre dans un sous dossier de ce Nom
libreoffice 6.1 avec os 10.14
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: [Calc] Créer un dossier nommé par une cellule

Message par Piaf »

Bonjour
Pas sûr d'avoir tout compris :lol: Mais si ton arborescence doit ressembler à cela
Arborescence.png
En renseignant le nom du client(comme répertoire) et le type de fichier (Facture, Fiche etc comme sous-répertoire)
RepSrep.png
Ce code devrait faire le job

Code : Tout sélectionner

Sub Main
Dim oDoc as Object,Rep as String, SRep as String, AdresseDoc as String
	oDoc = thisComponent
	Rep = oDoc.Sheets(0).getCellRangeByName("B2").String
	sRep = oDoc.Sheets(0).getCellRangeByName("A2").String

	adresseDoc = ConvertToURL("Chemin jusqu'au DossiersClients/" & Rep & "/" & sRep & "/" & Rep & Format(Now,"DD-MM-YYYY-HH-MM") & ".ods")
	oDoc.storeToURL(adresseDoc, Array() )
End Sub
J'ai nommé le document avec le nom du client et la date formatée, je présume qu'il peut y avoir plusieurs factures pour un même client.
A+
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
cmoa83
NOOuvel adepte
NOOuvel adepte
Messages : 15
Inscription : 01 oct. 2018 15:47

Re: [Calc] Créer un dossier nommé par une cellule

Message par cmoa83 »

bonsoir Piaf,
tu as cerné ma demande qui correspond à 80% de ce que je cherche. Le dossier au nom du client c'est bon, mais je ne veux pas faire de sous dossier a l'intérieur ,je veux juste que les documents s'enregistrent dedans
Mais je me servir de ta macro pour essaye de comprendre :super:
Merci
libreoffice 6.1 avec os 10.14
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: [Calc] Créer un dossier nommé par une cellule

Message par Piaf »

Bonsoir
cmoa83 a écrit :mais je ne veux pas faire de sous dossier a l'intérieur ,je veux juste que les documents s'enregistrent dedans
Il suffit de remplacer le nom utilisé pour le sous-répertoire pour nommer le type de document.

Code : Tout sélectionner

Sub Main
Dim oDoc as Object,Rep as String, nomDocument as String
	oDoc = thisComponent
	Rep = oDoc.Sheets(0).getCellRangeByName("B2").String
	nomDocument = oDoc.Sheets(0).getCellRangeByName("A2").String
	adresseDoc = ConvertToURL("Chemin jusqu'au DossiersClients/" & Rep & "/" & nomDocument & Format(Now,"DD-MM-YYYY-HH-MM") & ".ods")
	oDoc.storeToURL(adresseDoc, Array() )
End Sub
Arborescence.png
A+
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
cmoa83
NOOuvel adepte
NOOuvel adepte
Messages : 15
Inscription : 01 oct. 2018 15:47

Re: [Calc] Créer un dossier nommé par une cellule

Message par cmoa83 »

Merci pour ton code
Tu vas dire que je suis "chiant",mais avec ton code il me crée 2 sous dossier
Capture d’écran 2018-11-04 à 13.52.32.png
Mais il n' y en à un de trop, supprimer le 04 et nommer par ( cellule B2) le dossier et le document sans date
J'ai joint une copie du document teste avec macro , si tu peux m'aider à la finaliser
Sinon c'est cela que je recherchai
:bravo:
Merci
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
libreoffice 6.1 avec os 10.14
Avatar de l’utilisateur
OOotremer971
ManitOOu
ManitOOu
Messages : 2744
Inscription : 16 avr. 2010 13:31

Re: [Calc] Créer un dossier nommé par une cellule

Message par OOotremer971 »

cmoa83 a écrit :nommer par ( cellule B2) le dossier et le document sans date
C'est ce que fait le premier code que je t'ai donné.
Je précise au cas où tu ne l'aurais pas compris qu'il faut remplacer dans ton code, la ligne :

Code : Tout sélectionner

args1(0).Value = "file:/Macintosh HD/Utilisateurs/Patrick/clients/????" & MonTxt & ".ods" 
Par celle-ci :

Code : Tout sélectionner

args1(0).Value = "file:/Macintosh HD/Utilisateurs/Patrick/clients/" & MonTxt &"/" & MonTxt & ".ods"
Il sera alors créé un dossier du nom contenu en B2 puis dans ce dossier il sera enregistré un fichier nommé du nom contenu en B2

Par contre il y a des caractères interdits dans les noms de fichier par exemple le "/". est-ce que tu peux nous montrer quel nom tu mets en B2 merci.

Merci de répondre aux question qui te sont posée si tu veux obtenir de l'aide !

A+
En principe, toujours à jour des dernières versions dites stables
AOO
LibreOffice
Debian 10 et 11
cmoa83
NOOuvel adepte
NOOuvel adepte
Messages : 15
Inscription : 01 oct. 2018 15:47

Re: [Calc] Créer un dossier nommé par une cellule

Message par cmoa83 »

je te mets une copie allégées du fichier à traiter
Merci
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
libreoffice 6.1 avec os 10.14
Avatar de l’utilisateur
OOotremer971
ManitOOu
ManitOOu
Messages : 2744
Inscription : 16 avr. 2010 13:31

Re: [Calc] Créer un dossier nommé par une cellule

Message par OOotremer971 »

Dans ton fichier la cellule B2 est vide. Du coup on ne sait pas si tu commets une erreur dans la définition du nom
cmoa83.png
Ton fichier ne contient pas la macro avec laquelle tu as initié ce fil

J'abandonne si d'autres veulent bien prendre le relais.

Désolé encore une fois

A+
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
En principe, toujours à jour des dernières versions dites stables
AOO
LibreOffice
Debian 10 et 11
cmoa83
NOOuvel adepte
NOOuvel adepte
Messages : 15
Inscription : 01 oct. 2018 15:47

Re: [Calc] Créer un dossier nommé par une cellule

Message par cmoa83 »

tu as raison je voulais dire B7
libreoffice 6.1 avec os 10.14
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: [Calc] Créer un dossier nommé par une cellule

Message par Piaf »

Bonjour
cmoa83 a écrit :Tu vas dire que je suis "chiant",mais avec ton code il me crée 2 sous dossier
Merci de lire les réponses que l'on te donne
Piaf a écrit :J'ai nommé le document avec le nom du client et la date formatée,
.

Code : Tout sélectionner

Sub Main
Dim oDoc as Object,Rep as String, SRep as String, AdresseDoc as String
   oDoc = thisComponent
   Rep = oDoc.Sheets(0).getCellRangeByName("B7").String
   adresseDoc = ConvertToURL("file:///Users/Patrick/Desktop/teste/" & Rep & "/" & Rep & Format(Now,"DD-MM-YYYY-HH-MM") & ".ods")
   oDoc.storeToURL(adresseDoc, Array() )
End Sub
Chemin.png
Si tu utilises le caractère / dans une adresse la création des deux dossiers est logique.
A+
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
cmoa83
NOOuvel adepte
NOOuvel adepte
Messages : 15
Inscription : 01 oct. 2018 15:47

Re: [Calc] Créer un dossier nommé par une cellule

Message par cmoa83 »

:bravo: Ça marche
Un GRAND MERCI pour ta contribution, et le temps passé pour m'aider :super:
désolé je n'avais pas relu la nouvelle macro :roll:
libreoffice 6.1 avec os 10.14