Bonjour,
Est-il possible, au lancement de Libre Office Calc, de lire automatiquement des données contenues dans un fichier externe de type .txt et les insérer automatiquement dans une colonne ?
Faut-il utiliser une macro ?
Merci par avance
Bonjour,
Oui, mais il faut connaître un peu plus sur le projet.
Le fichier TXT n’a qu’une donnée par ligne ?
Dans quelle colonne insérer les données ? Éventuellement demander à l’utilisateur
S’agit-il de nombres ou de texte ? (ça peut créer des surprises)
Y-a-t-il des données à préserver ?
Faut-il créer un nouveau fichier à chaque fois ?
Etc …
Cordialement,
Bonjour Lucien.
Je viens de tester ceci dans un fichier bash. “sudo inxi -F > mat.txt” ensuite 'libreoffice --calc mat.txt --infilter=“CSV:0,0,0,1,4/2/1” '. Les options de filtre sont décrites ici
Merci roujl pour cette suggestion, qui fonctionne bien … mais ne résoud pas complètement le problème.
Le fichier généré ne contient que les données importées depuis le fichier mat.txt, or il faudrait importer ces données dans un fichier calc déjà existant comportant par ailleurs déjà des données et des macros.
J’ai essayé de combiner deux options :
libreoffice --calc mat.txt –infilter=“CSV:0,0,0,1,4/2/1 -o audit-Linux-V03\ en\ cours.ods
mais je n’arrive qu’à ouvrir deux instances de feuilles de calcul.
Y a t-il possibilité de fusionner automatiquement deux classeurs ?
Je pense qu’il va falloir me résoudre à suivre un cours sur les macros
Bonsoir Lucien,
Oui et oui.
Pour faire plus détaillé:
- Il faut créer un modèle qui sera porteur de cette fonctionnalité
- il faut créer une macro qui fait le travail et associer l’événement
Ouvrir le document
à cette macro (Outils > Personnaliser
, ongletÉvénements
).
Lorsque le point 2 fonctionne passez au point 1.
Bonsoir jfn,
Merci pour cette réponse.
Je suis novice en macros … et je ne vois pas ce qu’est un modèle.
Y a t-il des liens sur les quels je puisse trouver des tutos avec des exemples ?
Lucien
Merci pour ce lien.
J’ai aussi récupéré une doc sur les macros (CG6412FR-Macros.pdf)
J’étudie tout ça et reviens vers vous si je ne m’en sors pas…
Lucien
Bonjour Lucien.
J’ai trouvé sur le site en anglais une macro pour importer un fichier cvs dans une feuille calc. Cela pourra peut-être t’aider en adaptant à ton problème. Attention, j’avais une erreur avec “ra.StartRow+4”. Voulant commencer l’écriture dans la case A2 pour conserver ma première ligne avec les entêtes je l’ai remplacé par “ra.StartRow+1”. J’espère que cette macro pourra t’aider.
Autre macro
Bonjour,
Tout ça a l’air bien compliqué !!!
Il y a des solutions plus simples, tout dépend de la manière dont le problème se pose…
Cordialement,
Bonjour, et merci pour vos réponses.
Je n’ai peut être pas donné suffisemment d’informations concernant le problème que je souhaite résoudre. Les voici :
Je fais partie d’une association dont un des objectifs est de revendre des ordinateurs recyclés à des publics ayant peu de moyens.
Le prix de revente (modeste) est fixé en fonction des caractéristiques des machines (Processeur, quantité de RAM, taille et type de Disque dur, état des batteries …etc., )
Ces ordinateurs sont, soit sous Windows, soit sous Linux.
Sous Windows des bénévoles ont développé un outil automatisé, qui utilise entre autres PowerShell et LibreOffice Calc. Il fonctionne correctement moyennant quelques étapes effectuées manuellement
Nous travaillons à développer le même outil sous Linux, mais je souhaite automatiser le plus possible les premières étapes
Voici les différentes phases actuellement faires “à la main” :
1 - Lancer dans un terminal la commande $sudo inxi -F
2 - Lancer la feuille de calcul OpenOffice contenant les macros qui fonctionnent
3 - Copier le résultat de la commande inxi du terminal dans la première colonne d’une feuille de calcul Calc OpenOffice
4 - Lancer la macro (via un bouton) qui a été développée, et qui fonctionne correctement.
Ce que je souhaite faire : automatiser à partir du lancement d’un fichier script shell bash, l’enchainement des opérations, à savoir :
1 - Execution de la commande $sudo inxi -F et redirection du résultat dans un fichier texte fic.txt (le mot de passe admin sera saisi manuellement)
2 - lancement de libreOffice calc contenant les macros d’audit
3 - Lecture automatique par Calc du contenu du fichier fic.txt dans la colonne A de la feuiille n°3. Les délimiteurs de lignes et colonnes proposées par défaut doivent être acceptés.
Je donne ci dessous un exemple du fichier texte résultat de la commande inxi
Merci par avance si vous avez eu la patience de me lire jusque là.
Je ne demande pas une solution “clé en mains”, mais des pistes à explorer pour arriver au résultat.
Cordialement,
Lucien
(base) lucien@ThinkPad-T440s:~$ sudo inxi -F
System:
Host: ThinkPad-T440s Kernel: 5.4.0-135-generic x86_64 bits: 64
Desktop: Cinnamon 4.6.7 Distro: Linux Mint 20 Ulyana
Machine:
Type: Laptop System: LENOVO product: 20ARA0Y500 v: ThinkPad T440s
serial: PC00LK84
Mobo: LENOVO model: 20ARA0Y500 serial: 1ZSUK48W5D4 UEFI: LENOVO
v: GJETA0WW (2.50 ) date: 09/25/2018
Battery:
ID-1: BAT0 charge: 16.6 Wh condition: 16.7/23.2 Wh (72%)
ID-2: BAT1 charge: 33.8 Wh condition: 40.0/47.5 Wh (84%)
CPU:
Topology: Dual Core model: Intel Core i7-4600U bits: 64 type: MT MCP
L2 cache: 4096 KiB
Speed: 798 MHz min/max: 800/3300 MHz Core speeds (MHz): 1: 798 2: 800
3: 799 4: 798
Graphics:
Device-1: Intel Haswell-ULT Integrated Graphics driver: i915 v: kernel
Display: server: X.Org 1.20.13 driver: modesetting unloaded: fbdev,vesa
resolution: 1920x1080~60Hz, 1680x1050~60Hz
OpenGL: renderer: Mesa DRI Intel HD Graphics 4400 (HSW GT2)
v: 4.5 Mesa 21.2.6
Audio:
Device-1: Intel Haswell-ULT HD Audio driver: snd_hda_intel
Device-2: Intel 8 Series HD Audio driver: snd_hda_intel
Device-3: Roland UA-1G type: USB driver: snd-usb-audio
Sound Server: ALSA v: k5.4.0-135-generic
Network:
Device-1: Intel Ethernet I218-LM driver: e1000e
IF: enp0s25 state: up speed: 100 Mbps duplex: full mac: 28:d2:44:df:3d:39
Device-2: Intel Wireless 7260 driver: iwlwifi
IF: wlp3s0 state: up mac: 28:b2:bd:7f:8e:29
Drives:
Local Storage: total: 931.51 GiB used: 230.32 GiB (24.7%)
ID-1: /dev/sda vendor: Toshiba model: MQ01ABD100 size: 931.51 GiB
Partition:
ID-1: / size: 269.29 GiB used: 204.96 GiB (76.1%) fs: ext4 dev: /dev/sda2
ID-2: swap-1 size: 13.41 GiB used: 0 KiB (0.0%) fs: swap dev: /dev/sda3
Sensors:
System Temperatures: cpu: 46.0 C mobo: 0.0 C
Fan Speeds (RPM): cpu: 0
Info:
Processes: 268 Uptime: 1d 5h 02m Memory: 11.58 GiB used: 2.98 GiB (25.7%)
Shell: bash inxi: 3.0.38
(base) lucien@ThinkPad-T440s:~$
Bonjour Lucien. Suite à ta remarque, j’ai étudié une solution avec les données enregistrées directement dans un fichier ods grâce à une macro. J’ai déposé le fichier bash sur pastebin et le fichier ods sur onedrive. J’avais pensé fermer le tableur après l’opération d’écriture, mais comme la macro démarre à l’ouverture celui-ci se fermait directement. Il n’était plus possible de l’afficher. J’espère avoir contribué à la recherche de solution.
Merci Jean Luc,
j’ai testé le script shell Bash que tu me fais parvenir.
Lors de l’appel de LibreOffice, il y a deux arguments :
libreoffice scalc ordinateur.ods
Quel est le rôle du premier ?
Libre Office cherche un fichier du même nom … qu’il ne trouve pas …
Merci encore pour ton aide
Lucien
Bonsoir Lucien,
Le premier argument appelle le programme calc. Chez moi j’ai installé LibreOffice dans le répertoire /opt/libreoffice7.3 et je dois donc appeler scalc.
Mais si tu as l’installation de la distribution il faut mettre “libreoffice --calc ordinateur.ods” et pas “scalc”. Je suis désolé de cette imprécision.
Je reste à ta disposition si tu désires peaufiner ta procédure.
Bonsoir Jean Luc,
Merci encore pour tes explications.
J’en ai découvert un peu plus sur les options de lancement de Libre Office.
je vais arrêter mon travail sur ce script qui est suffisant pour le travail attendu.
Si tu es intéressé, j’ai partagé le script ici : http://pastebin.com/bBgd1y9L
Le mode d’emploi ici : http://pastebin.com/zZACLhpZ
Je te mets aussi le fichier audit en pièce jointe.
Encore merci et bonnes fêtes de fin d’année
audit-Linux-V03.ods (320 KB)