[Résolu] Inserer dans le titre le nom du fichier

Discussions à propos du tableur Calc.
Les questions sur les macros doivent être postées dans la section dédiée en dessous.

Modérateur : Vilains modOOs

Règles du forum
Cette section est uniquement dédiée au tableur Calc. Vous ne devez pas poster ici de questions sur les macros mais utiliser la section éponyme.
hiroito
Fraîchement OOthentifié
Messages : 5
Inscription : 03 avr. 2010 22:56

[Résolu] Inserer dans le titre le nom du fichier

Message par hiroito »

Bonjour, tout est dans le titre

je vous donne plus de détails
je génère mes factures avec le tableur et je répète dans une cellule le numéro de facture qui est aussi le nom du fichier.
pour générer une facture je me contente de prendre la précédente et de faire les modifs vu mon volume de facture mensuel cela ne me pose pas de problème cependant si le cellule contenant le numéro de facture pouvais se remplir avec le nom choisi au renommage cela me plairait bien.

any idea ???
Dernière modification par Oukcha le 05 juil. 2010 12:49, modifié 4 fois.
Raison : Ajout balise (coche présente)
Avatar de l’utilisateur
Thor
MOOdérateur
MOOdérateur
Messages : 340
Inscription : 11 oct. 2009 15:50

Re: INSERER DANS UNE CELLULE LE NOM DU FICHIER

Message par Thor »

Bonjour et bienvenue sur le forum,

Le titre de votre question ne doit pas comporter de majuscules.
Article de Wikipédia sur la Nétiquette a écrit :De plus, il vaut mieux éviter d'écrire un message uniquement en capitales ce qui est considéré comme agressif. Écrire en lettres capitales est en effet considéré comme équivalent à crier de façon orale.
  1. Nous vous remercions de corriger ce titre au plus vite afin que l'on puisse vous aider dans de bonnes conditions.
  2. Vous êtes également prié de clôturer votre précédent sujet s'ils est résolu.
    http://user.services.openoffice.org/fr/ ... 67#p118867
    Comment mettre [Résolu] et la coche Image]
  3. Corrigez aussi votre signature. Open Office 3 n'est pas assez précis car il y a actuellement 6 versions d'OOo 3.
    Lien direct pour modifier votre signature
Si cela n'est pas fait avant votre prochain message, le sujet sera fermé.

Il semble que vous n'ayez pas lu les règles de ce forum, nous vous invitons dès maintenant à y jeter un coup d'oeil.
http://user.services.openoffice.org/fr/ ... opic1.html

Merci de votre collaboration
La fonction Recherche sur le forum, c'est génial. Cela peut vous sauver la vie.
Pierre-Yves Samyn
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 11276
Inscription : 02 mai 2006 08:42

Re: INSERER DANS UNE CELLULE LE NOM DU FICHIER

Message par Pierre-Yves Samyn »

Bonjour

Nouveau sur ce forum il est normal que tu n'en maîtrises pas les habitudes...

Merci toutefois de suivre les indications de notre modérateur pour continuer de recevoir des réponses :)

Je te conseille la lecture de notre section "A lire avant tout" qui, comme son nom l'indique, présente nos règles de fonctionnement.

Sur le fond maintenant... On peut trouver le nom du classeur par un enchaînement de fonctions. Pour faciliter leur compréhension je décompose ici les étapes une par une (mais on pourrait tout regrouper dans une formule complexe).
Capture-1.png
Explications

Code : Tout sélectionner

=CELLULE("filename";A1)   pour récupérer l'url complet du classeur, suivi du nom de la feuille courante
=NBCAR(A1)   pour calculer le nombre de caractères trouvés
=SUBSTITUE(A1;"/";"")   pour supprimer le / 
=NBCAR(A3)   pour calculer le nombre de caractères trouvés
=A2-A4
=SUBSTITUE(A1;"/";"pys2310pys";A5)   pour remplacer dans la chaîne le dernier / par un texte improbable
=TROUVE("pys2310pys";A6)   pour rechercher la position de ce texte improbable
=DROITE(A6;NBCAR(A6)-A7-9)   pour ne garder que la portion de texte commençant à cette position
=TROUVE("'";A8)   pour trouver la position de la quote ' dans ce texte
=GAUCHE(A8;A9-1)
=GAUCHE(A8;A9-5)

Nota :
  • L'enregistrement d'un classeur sous un nouveau nom ne provoque pas le recalcul des formules. Il sera donc nécessaire, si tu souhaites visualiser immédiatement l'impact, de forcer le recalcul par Ctrl+Maj+F9
  • Si cette question est résolue, merci de bien vouloir l'indiquer comme expliqué ici Marquer Résolu
Et merci aussi de penser à "corriger" les autres points (titre, signature, respect des balises...) :)
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Avatar de l’utilisateur
gerard24
ManitOOu
ManitOOu
Messages : 3160
Inscription : 06 juil. 2008 17:08
Localisation : dans le Périgord

Re: INSERER DANS UNE CELLULE LE NOM DU FICHIER

Message par gerard24 »

Bonjour,
Pierre-Yves Samyn a écrit :mais on pourrait tout regrouper dans une formule complexe.
En me basant sur les formules de Pierre-Yves, et en utilisant STXT au lieu de DROITE et GAUCHE, cela pourrait donner ceci :

Code : Tout sélectionner

=STXT(CELLULE("filename");TROUVE("µ";SUBSTITUE(CELLULE("filename");"/";"µ";NBCAR(CELLULE("filename"))-NBCAR(SUBSTITUE(CELLULE("filename");"/";""))))+1;TROUVE("#";CELLULE("filename"))-TROUVE("µ";SUBSTITUE(CELLULE("filename");"/";"µ";NBCAR(CELLULE("filename"))-NBCAR(SUBSTITUE(CELLULE("filename");"/";""))))-6)
J'ai également remplacé le texte "improbable" "pys2310pys" par la lettre grecque µ et la recherche de la dernière ' par la recherche du #.

La formule est à la fois longue et complexe. Pour la racourcir on peut faire appel à des cellules intermédiaires mais on peut également utiliser les formules nommées.

Par le menu Insertion > Nom > Définir nous allons donner les noms suivants:

Code : Tout sélectionner

file   =CELLULE("filename") 'nous donne le chemin complet de la feuille;
debut  =TROUVE("µ";SUBSTITUE(file;"/";"µ";NBCAR(file)-NBCAR(SUBSTITUE(file;"/";""))))+1 'nous donne la position du nom du fichier.
fin    =TROUVE("#";file)-5 'nous donne la position de l'extension.
Dans une cellule quelconque, la formule suivante (utilisant les noms définis plus haut) nous donnera le nom du fichier :

Code : Tout sélectionner

=STXT(file;debut;fin-debut)
A+
OOodidacte
LibreOffice 6.4.5 sous Windows 10.
pour télécharger LibreOffice
Avatar de l’utilisateur
Jean-Louis Cadeillan
GourOOu
GourOOu
Messages : 5752
Inscription : 02 janv. 2009 23:56

Re: INSERER DANS UNE CELLULE LE NOM DU FICHIER

Message par Jean-Louis Cadeillan »

Bonsoir à tous,
En essayant de couvrir les hurlements majuscules (toujours pas modifiés !) de notre correspondant, je viens apporter une petite pierre (=calcul ! :wink: ) à l'édifice. Trois petites améliorations :
  • utiliser le quatrième argument de SUBSTITUE(), qui précise l'occurrence à remplacer
  • ajouter la fonction alea() pour une mise à jour automatique sans avoir à utiliser Ctrl+Maj+F9
  • utiliser un caractère de substitution interdit et non pas improbable(ici le caractère *)
ce qui donne un code plus compact :

Code : Tout sélectionner

=STXT(CELLULE("filename");TROUVE("*";SUBSTITUE(CELLULE("filename");"/";"*";NBCAR(CELLULE("filename"))-NBCAR(SUBSTITUE(CELLULE("filename");"/";""))))+1;NBCAR(CELLULE("filename"))-TROUVE(".";CELLULE("filename"))-2+ALEA()*0)
[CORRECTIF] Attention erreur dans le code ci-dessus, voir commentaires dans mon message suivant...
Cordialement
Jean-Louis
Dernière modification par Jean-Louis Cadeillan le 04 juil. 2010 22:14, modifié 1 fois.
LibO 7.6.6.3 (x64 avec Java 1.8.0_411) et AOO 4.1.15 (avec Java x32 1.8.0_381), Windows 7 Édition Intégrale 64 SP1
Avatar de l’utilisateur
gerard24
ManitOOu
ManitOOu
Messages : 3160
Inscription : 06 juil. 2008 17:08
Localisation : dans le Périgord

Re: INSERER DANS UNE CELLULE LE NOM DU FICHIER

Message par gerard24 »

Bonsoir Jean-Louis,
utiliser le quatrième argument de SUBSTITUE(), qui précise l'occurrence à remplacer
Il est utilisé dans ma formule. Oui je sais, elle est tellement longue que cela n'est pas évidant au premier coup d'œil :?
ajouter la fonction alea() pour une mise à jour automatique sans avoir à utiliser Ctrl+Maj+F9
Excellente idée même si on ne change pas fréquement le nom du classeur sans le fermer et réouvrir, ce qui provoque le recalcul.
utiliser un caractère de substitution interdit et non pas improbable(ici le caractère *)
De même que pour l'utilisation du . j'avais la crainte d'une confusion avec les expréssions régulières. Crainte infondée, cela fonctionne.
J'avais oublié que j'utilise TROUVE et non CHERCHE.

Il reste juste un petit problème avec ton 4ème argument, as-tu testé ta formule avec des longueurs différentes de nom de fichier et de feuille ?

A+
OOodidacte
LibreOffice 6.4.5 sous Windows 10.
pour télécharger LibreOffice
hiroito
Fraîchement OOthentifié
Messages : 5
Inscription : 03 avr. 2010 22:56

Re: Insere dans le titre le nom du fichier

Message par hiroito »

bonjour, merci d'avoir pris le temps de me répondre.

concernant la modération merci de m'avoir rappelé quelle était ma place.
Je vais de pas y retourner et vous laisser entre spécialistes.
Avatar de l’utilisateur
Jean-Louis Cadeillan
GourOOu
GourOOu
Messages : 5752
Inscription : 02 janv. 2009 23:56

Re: Insere dans le titre le nom du fichier

Message par Jean-Louis Cadeillan »

hiroito a écrit :vous laisser entre spécialistes
En ce qui me concerne, j'espère ne pas devenir spécialiste de la bourde, car ma formule soi-disant plus compacte ne l'est pas :oops: , j'avais fait la soustraction [Nombre total de caractères - position de fin du nom], au lieu de faire [position de fin du nom - position de début du nom], il se trouve que le nom de la feuille était aussi long que le nom du fichier ce qui a masqué ma bévue.
gerard24 a écrit :Il reste juste un petit problème avec ton 4ème argument, as-tu testé ta formule avec des longueurs différentes de nom de fichier et de feuille ?
Merci Gérard de l'avoir décelée ! :super: ... donc toujours tester dans des situations variées...
gerard24 a écrit :Il est utilisé dans ma formule
mauvaise lecture de ma part !
gerard24 a écrit :si on ne change pas fréquement le nom du classeur sans le fermer et réouvrir, ce qui provoque le recalcul
c'est vrai que c'est bien plus utile pour le nom de la feuille que le nom du fichier !
gerard24 a écrit :J'avais oublié que j'utilise TROUVE et non CHERCHE
effectivement, pas de confusion possible avec les expressions régulières...

@ Hiroito : le forum est un lieu d'échanges où il est permis de ne pas savoir, de se tromper (je suis concerné !), tout cela est un terrain fertile pour apprendre et tout le monde peut y contribuer ! Moyennant quelques règles communes, le forum est un espace de convivialité où l'on n'est justement pas obligé d'être spécialiste pour participer ! La bonne humeur et la bonne volonté sont des puissants vecteurs d'apprentissage :D !
Cordialement
Jean-Louis
LibO 7.6.6.3 (x64 avec Java 1.8.0_411) et AOO 4.1.15 (avec Java x32 1.8.0_381), Windows 7 Édition Intégrale 64 SP1
Pierre-Yves Samyn
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 11276
Inscription : 02 mai 2006 08:42

Re: Insere dans le titre le nom du fichier

Message par Pierre-Yves Samyn »

Jean-Louis Cadeillan a écrit :ajouter la fonction alea() pour une mise à jour automatique sans avoir à utiliser Ctrl+Maj+F9
Excellente idée :)

 Ajout : Mais qui ne remplit pas tout à fait l'objectif annoncé : le nom de fichier sera actualisé en cas de saisie dans la feuille mais pas lors de l'enregistrement du fichier sous un nouveau nom...
Jean-Louis Cadeillan a écrit :utiliser le quatrième argument de SUBSTITUE(), qui précise l'occurrence à remplacer
gerard24 a écrit :Il est utilisé dans ma formule. Oui je sais, elle est tellement longue que cela n'est pas évidant au premier coup d'œil
Euh... les gars... vous voulez me faire de la peine ?
Jean-Louis Cadeillan a écrit :ce qui donne un code plus compact
Pierre-Yves Samyn a écrit :Pour faciliter leur compréhension je décompose ici les étapes une par une (mais on pourrait tout regrouper dans une formule complexe).