[Résolu][Calc] Zipper plusieurs fichiers en un seul via une boîte de dialogue

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 !
parlapresente
Membre OOrganisé
Membre OOrganisé
Messages : 51
Inscription : 17 janv. 2020 19:39

[Résolu][Calc] Zipper plusieurs fichiers en un seul via une boîte de dialogue

Message par parlapresente »

Bonjour,

Je débute niveau boîte de dialogue ...
Pour le moment j'ai crée une boîte de dialogue avec 4 sélectionneurs de fichiers, un bouton "valider" qui m'affiche un lien et un bouton fermer.
Est-ce qu'il est possible de zipper en un seul fichier les fichiers sélectionnés par l'utilisateur (et de placer ce fichier zippé dans un répertoire par défaut ?).

Merci pour votre aide.

Il y a peut-être une piste avec com.sun.star.packages.package.zip mais c'est pour accéder à un zip et non pas zipper je crois.

Code : Tout sélectionner

Global oDialog1 As Object 

Sub AfficherBoiteDialogue 
  Dim Fichier1, Fichier2, Fichier3 as Object 
  DialogLibraries.LoadLibrary( "Standard" ) 
  'Dialog1 est le nom de la Form (clic-droit sur l'objet / propriétés / onglet Général / Nom) 
  oDialog1 = CreateUnoDialog( DialogLibraries.Standard.Dialog1 ) 
  
  'Attribue un titre dans la fenêtre 
  odialog1.Title = "Veuillez choisir vos fichiers" 
  
  'Modifie la couleur de fond de la boîte de dialogue 
  oDialog1.Model.BackgroundColor = RGB(235,235,125) 
  
  'Redéfinit les dimensions de la boîte de dialogue  
  oDialog1.Model.Height = 200 'Hauteur 
  oDialog1.Model.Width =400 'Largeur 
  
  'Redéfinit les position de la boîte de dialogue à l'écran 
  oDialog1.Model.PositionX = 0 'Position horizontale 
  oDialog1.Model.PositionY = 100 'Position verticale 
  
'  Fichier1 = oDialog1.getControl("Fichier1")
'  Fichier2 = oDialog1.getControl("Fichier2")
'  Fichier3 = oDialog1.getControl("Fichier3")
  'Affiche la boîte de dialogue 
  oDialog1.Execute() 
End Sub

sub valide
Dim Fichier1_txt,Fichier2_txt,Fichier3_txt,Fichier4_txt as string
Fichier1 = oDialog1.getControl("Fichier1")
Fichier2 = oDialog1.getControl("Fichier2")
Fichier3 = oDialog1.getControl("Fichier3")
Fichier4 = oDialog1.getControl("Fichier4")
Fichier1_txt=Fichier1.Text
Fichier2_txt=Fichier2.Text
Fichier3_txt=Fichier3.Text
Fichier4_txt=Fichier4.Text
msgbox Fichier4_txt
end sub

Sub Dialog_fermeture
'Ferme la boîte de dialogue 
oDialog1.endExecute 
'Libère les ressources   
'oDialog1.Dispose 
End Sub
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par parlapresente le 14 août 2023 08:58, modifié 5 fois.
LIbreoffice 24.2.1
Windows 11
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25602
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc] Zipper plusieurs fichiers en un seul via une boîte de dialogue

Message par Dude »

Salut,

Image
Récupérer une liste de fichiers se fait via le service FilePicker.
Zipper des fichiers est une question passée aujourd'hui même : viewtopic.php?t=67595
parlapresente
Membre OOrganisé
Membre OOrganisé
Messages : 51
Inscription : 17 janv. 2020 19:39

Re: [Calc] Zipper plusieurs fichiers en un seul via une boîte de dialogue

Message par parlapresente »

Merci,

En effet, c'était sous mes yeux.
Par contre j'ai une erreur avec le code proposé (on dirait que ça bloque sur le oZipPack.commitChanges())

Erreur d'exécution BASIC.
Une exception s'est produite :
Type: com.sun.star.lang.WrappedTargetException
Message: This package may be read only!
TargetException:
Type: com.sun.star.uno.RuntimeException
Message: unsatisfied query for interface of type com.sun.star.beans.XPropertySet!.
LIbreoffice 24.2.1
Windows 11
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25602
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc] Zipper plusieurs fichiers en un seul via une boîte de dialogue

Message par Dude »

Le code est fonctionnel sous OpenOffice 4.1.14 et Windows 10.
LIbreoffice 6.0.7.3 (x64)
Comme d'habitude, mets toi à jour car cette version est archi obsolète.
Poser une question, c'est bien. Répondre aux autres, c'est encore mieux.
Améliorez AOO et votez pour les issues
parlapresente
Membre OOrganisé
Membre OOrganisé
Messages : 51
Inscription : 17 janv. 2020 19:39

Re: [Calc] Zipper plusieurs fichiers en un seul via une boîte de dialogue

Message par parlapresente »

Oulka en effet, j'avais une version ancienne ...
ça marche bien mieux.
Par contre j'ai une question, le module proposé fonctionne pour une pièce jointe, je viens de vérifier mais quid de plusieurs justement ?
Je pensais séparer les fichier dans le sFicURL mais peut-être il faut que je fasse un array ?
Les fichiers à zipper ne seront pas tous dans le même répertoire.

Code : Tout sélectionner

Sub ZipMoi
	sZipURL = ConvertToUrl("e:\PJ.zip")
	sFicURL = ConvertToUrl("e:\PJ1.txt","e:\PJ2.txt")
	sFicNom = FileNameoutofPath(sFicURL)

	AjouteZip(sZipURL, sFicNom, sFicURL, False)
End sub
LIbreoffice 24.2.1
Windows 11
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25602
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc] Zipper plusieurs fichiers en un seul via une boîte de dialogue

Message par Dude »

Où est le problème ? Tu lances autant de fois la fonction qu'il y a de fichiers.
parlapresente
Membre OOrganisé
Membre OOrganisé
Messages : 51
Inscription : 17 janv. 2020 19:39

Re: [Calc] Zipper plusieurs fichiers en un seul via une boîte de dialogue

Message par parlapresente »

Ah ok c'est récursif, je ne voyais pas ça comme cela.
Merci !
Je présume qu'il n'est pas possible de modifier le nom des fichiers "à la volée" avant de les zipper ?
Il y a surement plus ingénieux mais j'ai copié-collé le fichier, renommer et ensuite zipper (puis supprimer la copie.
LIbreoffice 24.2.1
Windows 11
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25602
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Résolu][Calc] Zipper plusieurs fichiers en un seul via une boîte de dialogue

Message par Dude »

parlapresente a écrit : 13 août 2023 17:27 Je présume qu'il n'est pas possible de modifier le nom des fichiers "à la volée" avant de les zipper ?
Le 2e paramètre permet de changer le nom du fichier à compresser. :roll:
parlapresente
Membre OOrganisé
Membre OOrganisé
Messages : 51
Inscription : 17 janv. 2020 19:39

Re: [Résolu][Calc] Zipper plusieurs fichiers en un seul via une boîte de dialogue

Message par parlapresente »

Merci !
LIbreoffice 24.2.1
Windows 11