Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.
Modérateur :Vilains modOOs
Règles du forum 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 !
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
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())
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".
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.
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
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
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
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
Merci
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
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
Merci
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
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