[Résolu] [Calc] Charger un fichier Zimbra assimilable à un .txt via son URL

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 !
Avatar de l’utilisateur
Pirlouit
Fraîchement OOthentifié
Messages : 5
Inscription : 10 déc. 2025 07:06

[Résolu] [Calc] Charger un fichier Zimbra assimilable à un .txt via son URL

Message par Pirlouit »

Bonjour,
ceci est mon 1er post, en espérant ne pas enfreindre les règles en vigueur ...
Je bloque depuis plusieurs jours sur une étape de mon projet, un avis d'expert me semble judicieux. :fou:
Mon projet : récupérer les données des agendas Zimbra des 12 membres de l'équipe (agendas autorisés en partage au préalable), puis en faire un planning hebdomadaire sous Calc. Car le partage d'agenda sous Zimbra est illisible dés qu'il y a plus de 2 personnes (superposition des rdv à l'affichage).
Mon problème : je n'arrive pas à accéder par macro aux fichiers Zimbra "Calendar.ics" pourtant autorisé en partage. En "manuel", aucun souci pour y accéder en collant son adresse URL dans le navigateur Firefox puis l'enregistrer.
Les 2 solutions que j'ai essayées,

1) Charger le flux via [CreateUnoService("com.sun.star.ucb.SimpleFileAccess")] et [openFileRead(URL)]
=> oSFA.exists renvoie False depuis mon PC pro loguer au serveur, mais renvoie True depuis mon PC perso extérieur au réseau entreprise, bizarre ...
Le Code :

Code : Tout sélectionner

Sub maMacro
  Dim oSFA 'SimpleFileAccess service
  Dim oTextStream 'TextStream service
  Dim oStream 'Stream returned from SimpleFileAccess
  Dim sInput 'The string that is read
  Dim sFileName = "https://webmail.monentreprise.fr/home/prenom.nom@monentreprise.fr/Calendar.ics" 'adresse anonymisée pour ce forum
  oSFA = CreateUnoService("com.sun.star.ucb.SimpleFileAccess")
  If oSFA.exists(sFilename) Then
    oTextStream = CreateUnoService("com.sun.star.io.TextInputStream")
    oStream = oSFA.openFileRead(sFileName)
    oTextStream.setInputStream(oStream)
    'Juste pour voir le rendu, je changerai cette partie du code ultérieurement pour traiter le contenu
    For i = 1 To 1000
      sInput = otextStream.readLine()
      ThisComponent.Sheets.getByIndex(0).getCellByPosition(0,i).string = sInput
    Next
    oTextStream.closeInput
  Else
    msgbox("Le domaine n'existe pas ...")
    Exit Sub
  End If
End Sub
2) Enregistrer le fichier Calendar.ics sur le PC puis l'exploiter comme n'importe quel fichier .txt (solution peu orthodoxe)
=> ouvre un nouvel onglet de navigateur et affiche une fenêtre d'invite "Ouvrir avec" / "Enregistrer le fichier", mais je ne sais pas aller au-delà via macro
Le Code :

Code : Tout sélectionner

Sub maMacro
  dim sv as object
  dim adresse as string
  sv = createUnoService("com.sun.star.system.SystemShellExecute")
  adresse = "https://webmail.monentreprise.fr/home/prenom.nom@monentreprise.fr/Calendar.ics"
  sv.execute(adresse, "", 0)
End Sub
En espérant avoir été clair. Peut-être n'y a t-il pas de solution tout simplement, mais au moins je serai fixé.
D'avance merci de votre aide.
Dernière modification par Pirlouit le 17 déc. 2025 07:26, modifié 2 fois.
LibreOffice 7.4.5.1 (x64) (Obligation de version)
Windows 10 - Version 22H2 - Build 19045
Avatar de l’utilisateur
luky-luke
InconditiOOnnel
InconditiOOnnel
Messages : 957
Inscription : 27 nov. 2010 00:17
Localisation : gâtine deux-sèvrienne

Re: [Calc] Importer agenda(s) Zimbra

Message par luky-luke »

Bonjour,
Un tableur ne peut pas ouvrir/lire un fichier .ICS.
Pour passer sur un tableur (qui n'est pas fait pour éditer des agendas), il faudrait, au préalable, extraire du fichier .ICS les infos pertinentes : Nom, date, horaires, et réécrire le tout, dans les bonnes cellules, sur la feuille de ton fichier CALC....Bonjour la machine à gaz :fou:
Ne serait-il pas plus pertinent d'importer le fichier .ICS dans un autre agenda. Où tenter une synchronisation avec un autre agenda (je ne connais pas zimbra).
Je ne suis pas spécialiste des agendas partagés, mais pour tous ceux que je connais, la superposition d'événement est problématique en lecture.

Cordialement
Luke
LibO 7.4.7.2 Raspberry pi (Trixie) et Libo 7.6.5.2 LinuxMint 22
Xray ne tient pas lieu de tout, mais une pratique sans Xray ne vaut pas grand chose
Avatar de l’utilisateur
Pirlouit
Fraîchement OOthentifié
Messages : 5
Inscription : 10 déc. 2025 07:06

Re: [Calc] Importer agenda(s) Zimbra

Message par Pirlouit »

Bonjour luky-luke,
erreur de débutant, je m'aperçois de l'importance du titre du post. J'ai indiqué la nature de mon projet et non du problème précis qui me pose souci.
Un fichier .ics, comme bien d'autres, n'est jamais qu'un fichier .txt qui ne dit pas son nom. Il peut être ouvert avec le bloc note, Calc ou Writer (j'ai testé). Bien sûr en l'état, il affichera bêtement le contenu ligne par ligne.
Concernant ta proposition d'import dans un autre agenda : je fais partie d'une collectivité de 2600 agents qui a un service informatique dédié, lequel a bridé toute possibilité d'installation de logiciel par les utilisateurs (non dérogatoire). Mais l'idée était bonne.
Pour la complexité de la routine : cela ne me fait pas peur outre mesure. Les infos pertinentes paraissent faciles à extraire par macro. Je fais un modèle de planning hebdo vierge sous une feuille Calc (une ligne par agent, une colonne par date), je laisse le choix des dates de début/fin de la requête, puis la routine ira chercher les infos pertinentes sur les 12 fichiers Calendar.ics.
Voici un extrait correspondant à un événement du fichier Calendar.ics (que j'ai chargé en mettant son url manuellement dans le navigateur) :
BEGIN:EVENT = début de l'évènement; SUMMARY = titre de l'évènement; DTSTART = date et heure début; etc ....

Code : Tout sélectionner

BEGIN:VEVENT
UID:c5b228f7-2530-4de7-8fe5-223a49712613
SUMMARY:Rdv briefing service
DESCRIPTION:\n
X-ALT-DESC;FMTTYPE=text/html:<html><body id='htmlmode'></body></html>
ORGANIZER;CN=prénom nom:mailto:nom.prénom@monentreprise.fr
DTSTART;TZID="Europe/Brussels":20190129T083000
DTEND;TZID="Europe/Brussels":20190129T093000
STATUS:CONFIRMED
CLASS:PRIVATE
X-MICROSOFT-CDO-INTENDEDSTATUS:BUSY
TRANSP:OPAQUE
LAST-MODIFIED:20190117T072420Z
DTSTAMP:20190117T072420Z
SEQUENCE:1
BEGIN:VALARM
ACTION:DISPLAY
TRIGGER;RELATED=START:-PT30M
DESCRIPTION:Reminder
END:VALARM
END:VEVENT
Bref, je m'égare. Car mon point bloquant est situé en amont de ce traitement : comment charger un fichier assimilable à un .txt via son URL (quelle que soit son extension, .ics ou autre) pour le traiter ensuite en flux ligne par ligne.
Comme précisé dans mon 1er post mon problème est :
=> oSFA.exists renvoie False depuis mon PC pro loguer au serveur, mais renvoie True depuis mon PC perso extérieur au réseau entreprise, bizarre ...

En espérant avoir été plus clair
LibreOffice 7.4.5.1 (x64) (Obligation de version)
Windows 10 - Version 22H2 - Build 19045
Avatar de l’utilisateur
Eric Villeneuve (11)
Fraîchement OOthentifié
Messages : 8
Inscription : 01 juil. 2013 16:14

Re: [Calc] Importer agenda(s) Zimbra

Message par Eric Villeneuve (11) »

Bonsoir, ci dessous un ancien post pour importation dans calc d'un fichier Vcard fichier .vcf traité comme un fichier .txt

viewtopic.php?p=223863#p223863

En espérant que cela puisse t'aider
Windows 10 - LibreOffice Version: 5.2.5.1 (x64)
Avatar de l’utilisateur
Oukcha
RespOOnsable modération
RespOOnsable modération
Messages : 4340
Inscription : 06 oct. 2008 08:03

Re: [Calc] Importer agenda(s) Zimbra

Message par Oukcha »

Bonjour et bienvenue,
Pirlouit a écrit : 11 déc. 2025 10:20 l'importance du titre du post. J'ai indiqué la nature de mon projet et non du problème [...]
mon point bloquant est situé en amont de ce traitement : comment charger un fichier assimilable à un .txt via son URL
Titre modifié en conséquence, fait pour vous cette fois-ci,

Cordialement
                                        
Pour tout savoir sur le fonctionnement de ce forum :arrow: À lire avant tout ! Image
Avatar de l’utilisateur
Pirlouit
Fraîchement OOthentifié
Messages : 5
Inscription : 10 déc. 2025 07:06

Re: [Calc] Importer agenda(s) Zimbra

Message par Pirlouit »

Eric Villeneuve (11) a écrit : 11 déc. 2025 20:54 Bonsoir, ci dessous un ancien post pour importation dans calc d'un fichier Vcard fichier .vcf traité comme un fichier .txt

viewtopic.php?p=223863#p223863

En espérant que cela puisse t'aider
Merci Eric pour le fichier, dans l'esprit c'est cela.
Cependant j'y ai repris le principe de la fonction OPEN, qui semble ne fonctionner que pour des adresses de fichier sur le PC du type C:\...
Cela ne fonctionne pas pour une URL renvoyant à une adresse https://...
=> Message d'erreur : "Erreur d'exécution BASIC, Erreur d'E/S de périphérique"

Code : Tout sélectionner

Sub Test1()
'### avec la fonction OPEN ###
  n = FreeFile()
  '** Adresse URL https => Ne fonctionne pas **
  NomFichier = "https://raw.githubusercontent.com/hashicorp/next-mdx-remote/main/README.md"
  '** Adresse sur le C: => Fonctionne **
  'NomFichier = "\\data\DONNEES_UTILISATEURS\nom\Documents\BOULOT\Macros_OOo\ZIMBRA_CALENDAR\README.md"
  
  OPEN NomFichier FOR INPUT AS #n
  For i = 1 to 10
    Line Input #n, ligne
    msgbox(ligne)
  Next
  CLOSE #n
End SUb
Donc même souci que le traitement de flux que je privilégiait dans mes premiers essais
=> Message d'erreur : "Erreur d'exécution BASIC. Une exception s'est produite : Type: com.sun.star.IllegalArgumentException"

Code : Tout sélectionner

Sub Test2()
'### avec le service "com.sun.star.io.TextInputStream" ###
  Dim oSFA			'service SimpleFileAccess
  Dim sFileName		'nom du fichier à ouvrir
  Dim oTextStream 	'service TextStream
  Dim oStream 		'le flux retourné depuis SimpleFileAccess.
  '** Adresse URL https => Ne fonctionne pas **
  'sFileName = "https://raw.githubusercontent.com/hashicorp/next-mdx-remote/main/README.md"
  '** Adresse sur le C: => Fonctionne **
  sFileName = "\\data\DONNEES_UTILISATEURS\nom\Documents\BOULOT\Macros_OOo\ZIMBRA_CALENDAR\README.md"
  
  oSFA = CreateUnoService("com.sun.star.ucb.SimpleFileAccess")
  oTextStream = CreateUnoService("com.sun.star.io.TextInputStream")
  oStream = oSFA.openFileRead(sFileName)
  otextStream.setInputStream(oStream)
  For i = 1 to 10
    msgbox(oTextStream.readLine())
  Next
  oTextStream.closeInput
End Sub
LibreOffice 7.4.5.1 (x64) (Obligation de version)
Windows 10 - Version 22H2 - Build 19045
Avatar de l’utilisateur
luky-luke
InconditiOOnnel
InconditiOOnnel
Messages : 957
Inscription : 27 nov. 2010 00:17
Localisation : gâtine deux-sèvrienne

Re: [Calc] Charger un fichier Zimbra assimilable à un .txt via son URL

Message par luky-luke »

Bonjour,
Et avec l'instruction ConvertToURL
Le U de URL c'est Unified :wink:

Code : Tout sélectionner

NomFichier = ConvertToURL("https://raw.githubusercontent.com/hashicorp/next-mdx-remote/main/README.md")
Cordialement
Luke
LibO 7.4.7.2 Raspberry pi (Trixie) et Libo 7.6.5.2 LinuxMint 22
Xray ne tient pas lieu de tout, mais une pratique sans Xray ne vaut pas grand chose
Avatar de l’utilisateur
Pirlouit
Fraîchement OOthentifié
Messages : 5
Inscription : 10 déc. 2025 07:06

Re: [Calc] Charger un fichier Zimbra assimilable à un .txt via son URL

Message par Pirlouit »

Bonjour Luky-Luke,
une adresse internet de type https://.. convertie en URL retourne exactement la même chose, ne fonctionne toujours pas, ainsi,
convertToURL("https://raw.githubusercontent.com/hashicorp/next-mdx-remote/main/README.md") retourne "https://raw.githubusercontent.com/hashicorp/next-mdx-remote/main/README.md"
Vu que cette méthode de charger un flux via l'adresse du fichier bloque uniquement depuis ma session pro (fonctionne depuis mon pc perso), j'imagine que cela est lié à la sécurité informatique de notre entreprise. J'abandonne donc cette méthode.
Si quelqu'un a une autre idée ? Une piste : je peux accéder aux fichiers "Calendar.ics" en copiant l'adresse manuellement dans le navigateur, ensuite une fenêtre me propose d'ouvrir ou d'enregistrer le fichier, ce qu'il est possible de faire, mais manuellement toujours. Peut-être possible d'automatiser l'enregistrement de tous les fichiers sur mon disque pour être traités ensuite ? C'est une méthode pas terrible mais qui fonctionnerait.
LibreOffice 7.4.5.1 (x64) (Obligation de version)
Windows 10 - Version 22H2 - Build 19045
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 26200
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc] Charger un fichier Zimbra assimilable à un .txt via son URL

Message par Dude »

Salut,
Pirlouit a écrit : 16 déc. 2025 07:15 charger un flux via l'adresse du fichier bloque uniquement depuis ma session pro (fonctionne depuis mon pc perso), j'imagine que cela est lié à la sécurité informatique de notre entreprise. J'abandonne donc cette méthode.
Dans un environnement pro, il est évident que laisser une application télécharger sur internet est une faille de sécurité.

Pour contourner sous Windows, on peut exécuter du Powershell :

Code : Tout sélectionner

Sub DudeMoi
	sExe = "powershell"
	sCmd = " -Command wget "
	'Elections législatives des 12 et 19 juin 2022 - Résultats du 1er tour 
	'par niveau de département
	sUrl = "https://www.data.gouv.fr/api/1/datasets/r/7249a9eb-7476-4401-8acf-1bb9b56518de"
	sRet = " -OutFile "
	sFic = "c:\temp\test.txt"

	oShell = createUnoService("com.sun.star.system.SystemShellExecute")
	oShell.execute(sExe, sCmd & sUrl & sRet & sFic, 0)
End Sub
Avertis quand même ton service informatique sur ce que tu fais. Cela pourrait être vu comme une tentative de piratage.
Avatar de l’utilisateur
Pirlouit
Fraîchement OOthentifié
Messages : 5
Inscription : 10 déc. 2025 07:06

Re: [Calc] Charger un fichier Zimbra assimilable à un .txt via son URL

Message par Pirlouit »

Bonjour Dude,
Dude a écrit : 16 déc. 2025 08:44 Pour contourner sous Windows, on peut exécuter du Powershell :
L'utilisation du Powershell fonctionne à merveille pour tous les fichiers internet extérieurs, notamment ton exemple des résultats d'élections de 2022. Ne fonctionne pas sur nos fichiers "https://webmail.monentreprise.fr/home/prenom.nom@monentreprise.fr/Calendar.ics". Certainement dû à notre sécurité informatique. Donc uniquement possible de les charger en manuel depuis le navigateur, pas d'automatisation possible.
J'abandonne donc ce projet. Nous continuerons à remplir nos agendas en doublon : sous l'agenda Zimbra + un fichier Calc partagé. :tesfou:

Un grand merci à tous pour le temps passé sur mon problème.
Dernière modification par micmac le 16 déc. 2025 17:04, modifié 1 fois.
Raison : Lien externe neutralisé
LibreOffice 7.4.5.1 (x64) (Obligation de version)
Windows 10 - Version 22H2 - Build 19045
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 26200
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc] Charger un fichier Zimbra assimilable à un .txt via son URL

Message par Dude »

Pirlouit a écrit : 16 déc. 2025 15:53 Ne fonctionne pas sur nos fichiers
Comme dit plus haut : vois avec ta DSI pour l'ouverture des flux.

Pirlouit a écrit : 16 déc. 2025 15:53 Un grand merci à tous pour le temps passé sur mon problème.
Pense à baliser comme il se doit.