[Résolu] concaténation de fichier sans les ouvrir

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.
parlapresente
Membre lOOyal
Membre lOOyal
Messages : 39
Inscription : 17 janv. 2020 19:39

[Résolu] concaténation de fichier sans les ouvrir

Message par parlapresente »

Bonjour à tous,

Premier post alors je me présente, François, plutôt bidouilleur sous Calc mais en général j'arrive à mes fins, pas forcément optimisés mais ça fonctionne ;)
Alors voilà, actuellement je bosse sur un fichier "sauvegarde" calc avec plusieurs onglets (principalement des onglets de calculs) qui dépendent tous d'un unique onglet (onglet A).
Dans cet onglet A, j'ai pris pour habitude de copier coller des données que je reçois chaque jour, tous les fichiers reçus on la même forme, et le même nombre de lignes donc j'empile tous les jours chaque fichier, c'est pénible car je pense qu'on pourrait facilement placer tous les fichiers reçus dans un unique répertoire et dire au fichier "sauvegarde"de faire lui même ce travail non ? En renomment les fichier avec un nom qui fait référence à la date de réception du fichier, par exemple 17_01_20_fichier, puis 18_01_20_fichier ... etc ...
En PJ le résultat souhaité.
Je ne souhaite pas passer par des macros mais plutôt par des formules, avez une idée ?

Merci
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LIbreoffice 24.2.1
Windows 11
Avatar de l’utilisateur
OOotremer971
ManitOOu
ManitOOu
Messages : 2744
Inscription : 16 avr. 2010 13:31

Re: concaténation de fichier sans les ouvrir ?

Message par OOotremer971 »

Bonjour,

En E2 :

Code : Tout sélectionner

=INDIRECT(SUBSTITUE(GAUCHE(CELLULE("filename");TROUVE("#";CELLULE("filename")));"sauvegarde.ods";SUBSTITUE(TEXTE(D2;"JJ/MM/AAAA");"/";"_")&"_fichier.ods")&SUBSTITUE(TEXTE(D2;"JJ/MM/AAAA");"/";"_")&"_fichier"&".A"&NB.SI($D$2:D2;D2)+1)
En F2, remplacer A par B avant NB.SI()

Si le fichier de sauvegarde devait s’appeler autrement, il faudrait remplacer dans la formule : sauvegarde.ods par le vrai nom du fichier

Contrainte : les fichiers à sauvegarder doivent se trouver dans le même répertoire que le fichier de sauvegarde.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
En principe, toujours à jour des dernières versions dites stables
AOO
LibreOffice
Debian 10 et 11
Avatar de l’utilisateur
Jean-Louis Cadeillan
GourOOu
GourOOu
Messages : 5753
Inscription : 02 janv. 2009 23:56

Re: concaténation de fichier sans les ouvrir ?

Message par Jean-Louis Cadeillan »

Bonsoir,
Une variante en E2 :

Code : Tout sélectionner

=INDIRECT(ADRESSE(1+SI(MOD(LIGNE(A1);5)=0;5;MOD(LIGNE(A1);5));1;4;1;"'file:///Chemin complet des fichiers"&TEXTE(D2;"jj-mm-aaaa")&"-fichier.ods'#"&TEXTE(D2;"jj-mm-aaaa")&"-fichier"))
En F2, remplacer 1;4;1 par 2;4;1.
J'ai renommé les fichiers et les onglets en remplaçant le tiret du 8 (_) par le tiret du 6 (-).
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
parlapresente
Membre lOOyal
Membre lOOyal
Messages : 39
Inscription : 17 janv. 2020 19:39

Re: concaténation de fichier sans les ouvrir ?

Message par parlapresente »

Merci pour ce retour, je vais essayer cela, par contre c'est une véritable contrainte de placer les fichiers dans le même répertoire que le fichier de synthèse ?
LIbreoffice 24.2.1
Windows 11
Avatar de l’utilisateur
OOotremer971
ManitOOu
ManitOOu
Messages : 2744
Inscription : 16 avr. 2010 13:31

Re: concaténation de fichier sans les ouvrir ?

Message par OOotremer971 »

Bonjour,
parlapresente a écrit :c'est une véritable contrainte de placer les fichiers dans le même répertoire que le fichier de synthèse ?
Telle que la formule est conçue oui car la fonction CELLULE("filename") nous donne l'emplacement du fichier de synthèse dans ton arborescence. Les chemins de fichier étant différents d'un OS à l'autre, cela permet à la formule de s'adapter automatiquement à l'environnement dans lequel elle est utilisée. Après on peut adapter au cas par cas en saisissant le chemin en dur dans la formule ou dans une expression nommée (Ctrl+F3).

A+
En principe, toujours à jour des dernières versions dites stables
AOO
LibreOffice
Debian 10 et 11
Avatar de l’utilisateur
Jean-Louis Cadeillan
GourOOu
GourOOu
Messages : 5753
Inscription : 02 janv. 2009 23:56

Re: concaténation de fichier sans les ouvrir ?

Message par Jean-Louis Cadeillan »

Bonjour,
Quelques remarques :
  • les solutions par formule proposées ont une contrainte évidente : tu es obligé de garder les fichiers de base reçus... tu pourrais t'en affranchir par une solution macro... surtout si tu en reçois un par jour !
  • le codage de tes noms de fichiers, si tu veux le garder, ne permet pas un classement chronologique dans le navigateur (17_01_20_fichier = jj_mm_aa_fichier). Pour cela il faudrait plutôt un codage du style aa_mm_jj_fichier.
  • tu remarqueras que quelle que soit la formule, le codage du nom de fichier est essentiel pour les faire fonctionner : j'espère que tu nous as donné le codage réel... sinon tu devras adapter !
  • j'ai remplacé le tiret du 8 (_) par le tiret du 6 (-) pour des raisons de compatibilité avec le formatage date, mais bien sûr tu peux utiliser la fonction SUBSTITUE() pour garder le tiret du 8 (exemple d'utilisation dans la formule d'OOotremer971)
  • OOotremer971 a écrit :en saisissant le chemin en dur
    par exemple dans la formule que je t'avais proposée.
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