[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.

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

Messagepar hiroito » 04 Juil 2010 03:11

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 édition par Oukcha le 05 Juil 2010 14:49, édité 4 fois.
Raison: Ajout balise (coche présente)
hiroito
Fraîchement OOthentifié
 
Message(s) : 5
Inscrit le : 04 Avr 2010 00:56

Re: INSERER DANS UNE CELLULE LE NOM DU FICHIER

Messagepar Thor » 04 Juil 2010 06:41

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.
    viewtopic.php?p=118867#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.
ftopic1.html

Merci de votre collaboration
La fonction Recherche sur le forum, c'est génial. Cela peut vous sauver la vie.
Avatar de l’utilisateur
Thor
MOOdérateur
MOOdérateur
 
Message(s) : 340
Inscrit le : 11 Oct 2009 17:50

Re: INSERER DANS UNE CELLULE LE NOM DU FICHIER

Messagepar Pierre-Yves Samyn » 04 Juil 2010 07:55

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
En colonne B la formule utilisée en colonne A


Explications
Code : Tout sélectionner   AgrandirRéduire
=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...) :)
Pièces jointes
NomClasseur.ods
(10.13 Kio) Téléchargé 179 fois
Pierre-Yves Samyn
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 11276
Inscrit le : 02 Mai 2006 10:42

Re: INSERER DANS UNE CELLULE LE NOM DU FICHIER

Messagepar gerard24 » 04 Juil 2010 13:12

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   AgrandirRéduire
=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   AgrandirRéduire
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   AgrandirRéduire
=STXT(file;debut;fin-debut)

A+
OOodidacte
LibreOffice 5.2.6 sous Windows vista SP2
pour télécharger LibreOffice
Avatar de l’utilisateur
gerard24
ManitOOu
ManitOOu
 
Message(s) : 3050
Inscrit le : 06 Juil 2008 19:08
Localisation : dans le Périgord

Re: INSERER DANS UNE CELLULE LE NOM DU FICHIER

Messagepar Jean-Louis Cadeillan » 04 Juil 2010 20:29

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   AgrandirRéduire
=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 édition par Jean-Louis Cadeillan le 05 Juil 2010 00:14, édité 1 fois.
LibreOffice 5.0.1.2 et Apache OpenOffice 4.1.1 sous Windows 7 Édition Intégrale 64 SP1 (Domicile)
LibreOffice 4.3.3.2 sous Debian Wheezy ( 7.8 ), noyau 3.2.0-4-686-pae
Apache OpenOffice 3.4.0 sous Windows Sept Pro 64 SP1 (Bureau)
Avatar de l’utilisateur
Jean-Louis Cadeillan
ManitOOu
ManitOOu
 
Message(s) : 3377
Inscrit le : 03 Jan 2009 01:56

Re: INSERER DANS UNE CELLULE LE NOM DU FICHIER

Messagepar gerard24 » 04 Juil 2010 21:09

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 5.2.6 sous Windows vista SP2
pour télécharger LibreOffice
Avatar de l’utilisateur
gerard24
ManitOOu
ManitOOu
 
Message(s) : 3050
Inscrit le : 06 Juil 2008 19:08
Localisation : dans le Périgord

Re: Insere dans le titre le nom du fichier

Messagepar hiroito » 04 Juil 2010 22:46

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.
hiroito
Fraîchement OOthentifié
 
Message(s) : 5
Inscrit le : 04 Avr 2010 00:56

Re: Insere dans le titre le nom du fichier

Messagepar Jean-Louis Cadeillan » 05 Juil 2010 00:11

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
LibreOffice 5.0.1.2 et Apache OpenOffice 4.1.1 sous Windows 7 Édition Intégrale 64 SP1 (Domicile)
LibreOffice 4.3.3.2 sous Debian Wheezy ( 7.8 ), noyau 3.2.0-4-686-pae
Apache OpenOffice 3.4.0 sous Windows Sept Pro 64 SP1 (Bureau)
Avatar de l’utilisateur
Jean-Louis Cadeillan
ManitOOu
ManitOOu
 
Message(s) : 3377
Inscrit le : 03 Jan 2009 01:56

Re: Insere dans le titre le nom du fichier

Messagepar Pierre-Yves Samyn » 05 Juil 2010 07:51

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).
Pierre-Yves Samyn
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 11276
Inscrit le : 02 Mai 2006 10:42


Retour vers Tableur

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 38 invité(s)