"Dézipper" directement un csv depuis un lien vers des données externes

Bonjour,
Est-il possible de “Dézipper” directement dans une feuille calc un csv depuis un lien vers des données externes?
Si oui, ne connaissant pas le basic de LO existe-t-il dans LO une macro toute faite :wink: ?
Merci de votre aide
Cordialement
Renyeu

Bonjour @renyeu

Je suis obligé de faire des hypothèses pour répondre car la question est un peu obscure pour moi :

  • le format csv n’est pas zippé, mais un simple fichier texte
  • tu souhaites remplacer une feuille : Dézipper" directement dans une feuille calc (sic)
  • le csv est donc forcément “externe”.

La macro ci-dessous insère le fichier c:\Test\test.csv (adapter chemin & nom) dans la feuille nommée ARemplacer (adapter) dans le classeur contenant la macro.

La ligne sOpt = "44,34,STANDARD,1,1/1/2/1/3/5/4/1/5/10" est à adapter au fichier csv concerné.

Dans cet exemple :

  • les colonnes 1, 2 et 4 sont au format Standard
  • la colonne 3 est au format YY/MM/DD
  • la colonne 5 est au format US-English (par ex. nombre avec un point décimal).

Toutes ces options sont décrites sur cette page.

Nota : ce n’est pas forcément un cas simple pour commencer la programmation, quoiqu’il en soit la page macro de notre wiki regroupe l’essentiel des ressources pour apprendre.

Sub ExoCopierFeuilleParLien
dim oFeuille as object
dim sURL as string, oFilter as string, sOpt as string
dim iMode as integer

'La feuille qu'on veut remplacer'
oFeuille = thisComponent.sheets().getByName("ARemplacer")

'L'adresse du fichier CSV'
sURL = convertToUrl("c:\Test\test.csv")

'Paramètres nécessaires à la copie'
'Adapter en fonction du fichier CSV'
oFilter = "Text - txt - csv (StarCalc)"
sOpt = "44,34,STANDARD,1,1/1/2/1/3/5/4/1/5/10"
iMode = com.sun.star.sheet.SheetLinkMode.NORMAL

'Insertion de la feuille par "lien"'
oFeuille.link(sURL, "", oFilter, sOpt, iMode)

'Déconnection du lien'
oFeuille.setLinkSheetName("") 
oFeuille.LinkDisplayName
oFeuille.LinkUrl=""
oFeuille.setLinkMode(com.sun.star.sheet.SheetLinkMode.NONE) 

End Sub 

Cordialement

Bonjour Pierre-Yves,
Merci pour cette réponse détaillée.
En fait ce fichier csv est zippée sur le site de la FdJ (historique des tirages).
Jeune retraité, il va falloir que je potasse mon Basic dès l’automne prochain ! :wink:
Cordialement
Renyeu