fichiers ods

Bonjour

Voici une nouvelle question envoyée à l'aide du formulaire de demande d'aide (http://fr.libreoffice.org/get-help/poser-une-question/).
Si vous répondez, merci de penser à utiliser la fonction "répondre à tous" de votre logiciel de courrier électronique de façon que le demandeur reçoive une copie de votre réponse.

Email:: majorl@free.fr
Sujet:: fichiers ods
OS:: Linux
Version:: 6.0.x
Question:: quel est le code <Fonctions> = nom du fichier sans extension

----- Mail original -----

De: "demande aide fr" <demande_aide_fr@libreoffice.org>
À: users@fr.libreoffice.org
Envoyé: Dimanche 30 Septembre 2018 05:36:40
Objet: [fr-users] fichiers ods

Bonjour

Voici une nouvelle question envoyée à l'aide du formulaire de demande
d'aide (http://fr.libreoffice.org/get-help/poser-une-question/).
Si vous répondez, merci de penser à utiliser la fonction "répondre à
tous" de votre logiciel de courrier électronique de façon que le
demandeur reçoive une copie de votre réponse.

Email:: majorl@free.fr
Sujet:: fichiers ods
OS:: Linux
Version:: 6.0.x
Question:: quel est le code <Fonctions> = nom du fichier sans
extension

bonjour,

pour connaitre le type de fichier, je conseille d'utiliser dans un terminal
la commande file

https://linux.die.net/man/1/file

merci
slt
bernard

Bonjour,

Vous pouvez vous baser là-dessus sans doute : https://listarchives.libreoffice.org/global/users/msg24795.html

Thierry

Bonjour,

La formule dans Cals permettant de récupérer le nom du fichier est =CELLULE("FILENAME"). La chaîne renvoyée contient le chemin absolu + le nom du fichier + l'extension du fichier + la feuille. Il faut donc découper cette chaîne pour ne récupérer que l'info qui t'intéresse.

Il n'y a pas de formule permettant de parcourir la chaîne de caractère à l'envers, et donc je ne vois pas trop comment trouver le dernier "/". La solution par macro donnée par Thierry est donc la seule solution que je vois.

A+

Laurent BP

Bonjour,

Je ne suis pas l'auteur de ce document mais je l'avais récupéré sur le net.
https://www.cjoint.com/c/HIEjclwKVeM

Claude

C'est toujours préférable d'utiliser des fonctions du tableur plutôt que des macros.

Par macro, une astuce est de découper la chaîne sur les "/" par Split(). On obtient alors une tableau duquel on ne garde que ce qu'on veut.

Noter que l'exemple donné dans le lien fourni par Thierry, la fonction InStrRev() est utilisée. Celle-ci n'est disponible que lorsqu'on active la compatibilité VBA par :
Option VBAsupport 1

Du coup, je préfère Split() :wink:

Note : pour que ça marche à tous les coups, il faut prendre soin d'appeler la fonction ConvertToURL() d'abord.

Voici un (trois !) exemple(s), tirés de là :
https://wiki.documentfoundation.org/Macros/Basic_Primitives

8< -----------------------------------------------------------------

Global Const IOPRIM_PATHSEPCHAR = "/"
Global Const IOPRIM_EXTSEPCHAR = "."

Function ExtractFileExt(ByRef pFileName As String) As String
'Retrieves the extension part of a file name.
'Input:
'-- pFileName: the file name to be processed (in URL or OS form).
'Output: The file extension, without leading dot.
'Note: This does NOT check for the file/path existence.

  Dim l_URLName As String
  Dim l_Array() As String
  Dim l_Ext As String
  
  l_Ext = ""
  l_URLName = ConvertToURL(pFileName)
  l_Array = Split(l_URLName, IOPRIM_EXTSEPCHAR)
  If (UBound(l_Array) > 0) Then
    l_Ext = l_Array(UBound(l_Array))
  End If
  
  ExtractFileExt = l_Ext
End Function 'ExtractFileExt

Function ExtractFileName(ByRef pFileName As String) As String
'Retrieves a filename without access path from a FQDN file name.
'Input:
'-- pFileName: the file name to be processed (in URL or OS form).
'Output: The file name without the path part.
'Note: this does not check for the file/path existence.
'See also JustFileName().

  Dim l_URLName As String
  Dim l_Array() As String
  
  l_URLName = ConvertToURL(pFileName)
  l_Array = Split(l_URLName, IOPRIM_PATHSEPCHAR)
  
  ExtractFileName = l_Array(UBound(l_Array))
End Function 'ExtractFileName

Function ExtractFilePath(ByRef pFileName As String) As String
'Extracts the path from a given FQDN file name.
'Input:
'-- pFileName: the file name to be processed (in URL or OS form).
'Output: The path part of pFileName, in URL form and terminated with a / (slash).
'Note: this does not check for the file/path existence.

  Dim l_URLName As String
  Dim l_Array() As String
  Dim l_Path As String
  
  l_Path = ""
  l_URLName = ConvertToURL(pFileName)
  l_Array = Split(l_URLName, IOPRIM_PATHSEPCHAR)
  If (UBound(l_Array) > 0) Then
    l_Array(UBound(l_Array)) = ""
    l_Path = Join(l_Array, IOPRIM_PATHSEPCHAR)
  End If
    
  ExtractFilePath = l_Path
End Function 'ExtractFilePath

--------------------------------------------------- >8

Si vous répondez, merci de penser à utiliser la fonction "répondre à tous" de votre logiciel de courrier électronique de façon que la liste reçoive une copie de votre réponse.

Bien cordialement,

Bonjour

ça demande plusieurs fonctions imbriquées mais c'est faisable sans macro. Car il ne peut y avoir un autre slash après le nom de fichier, c'est ce dont on a besoin.

https://framadrop.org/r/mQqkLnPQtq#ex70jttA1pIIHpd42IDfaFTL4+IxH4o9Ei9A/MdTFfk=

*Pour compter le nombre de "/" => remplacer "/" par rien et faire la différence de caractère

*Pour éviter trop d'imbrication :=> substitue sur la dernière occurrence de "/" par un caractère interdit dans le nom de fichier (pour  windows, c'est tranquille, pour Linux : //// pour éviter la confusion avec file:///)

*Pour obtenir le nom => stxt entre "le" caractère interdit et ".ods"

=> soit différence entre la position de .ods et "du" caractère interdit.

Si a1 donne le nom complet du fichier
Si a2 donne le nom du fichier avec "le" caractère interdit

=STXT(A1;CHERCHE("////";A2)+1;CHERCHE(".ods";A1)-CHERCHE("////";A2)-1)

*Pour tout mettre dans une seule cellule :

STXT(CELLULE("filename");

CHERCHE("////";SUBSTITUE(CELLULE("filename");"/";"////";NBCAR(CELLULE("filename"))-NBCAR(SUBSTITUE(CELLULE("filename");"/"; ))))+1;

CHERCHE(".ods";CELLULE("filename"))-CHERCHE("////";SUBSTITUE(CELLULE("filename");"/";"////";NBCAR(CELLULE("filename"))-NBCAR(SUBSTITUE(CELLULE("filename");"/"; ))))-1)

J'ai tout de même une nette préférence, vu l'imbrication, pour l'utilisation d'une "feuille de référence" qui affiche en clair le nom complet du fichier, et mieux, qui serait nommée. Avec en bonus, une autre cellule (éventuellement masquée, également nommée) pour le nombre d’occurrence.

Ensuite, c'est automatiquement disponible en en-tête et pied de page, ce n'est donc pas très "loin"

Claire

Bravo Claire, c'est limpide :slight_smile:

Bonjour

ça demande plusieurs fonctions imbriquées mais c'est faisable sans macro. Car il ne peut y avoir un autre slash après le nom de fichier, c'est ce dont on a besoin.

J'ai cherché un certain temps, mais il me manquait la fonction SUBSTITUE.

https://framadrop.org/r/mQqkLnPQtq#ex70jttA1pIIHpd42IDfaFTL4+IxH4o9Ei9A/MdTFfk=

*Pour compter le nombre de "/" => remplacer "/" par rien et faire la différence de caractère

*Pour éviter trop d'imbrication :=> substitue sur la dernière occurrence de "/" par un caractère interdit dans le nom de fichier (pour  windows, c'est tranquille, pour Linux : //// pour éviter la confusion avec file:///)

*Pour obtenir le nom => stxt entre "le" caractère interdit et ".ods"

On se méfiera des vicieux qui font rien mettre ".ods" dans le nom du fichier :wink:

Bonsoir Claude,

Bonjour,

Je ne suis pas l'auteur de ce document mais je l'avais récupéré sur le net.
https://www.cjoint.com/c/HIEjclwKVeM

La chaîne "improbable" avec les initiales PYS dénonce son auteur : Pierre-Yves Samyn :wink:

Bonne soirée,

Laurent BP