[Résolu][Calc] Fusionner n Fichiers ODS homogènes en un seul

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur: Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !

[Résolu][Calc] Fusionner n Fichiers ODS homogènes en un seul

Messagepar arthaxeres » 31 Mars 2014 15:51

Bonjour à tous,

Après avoir fait pas mal de recherches sur ce forum, je n'ai pas trouvé de réponse à ma question qui me paraissait pourtant simple :

Je dispose de n fichiers homogènes en terme de description des données (cad ayant tous les mêmes colonnes, aux mêmes formats) mais avec un nombre de lignes variable et je souhaite les regrouper/consolider/fusionner en un seul fichier.

Exemple :
ETAT INITIAL
2 Fichiers placé dans un même répertoire et ayant tous les 2 pour colonnes ID;Libellé;Couleur;Ref

Fichier "1", feuille "blabla"
ligne 1 : ID;Libellé;Couleur;Ref
ligne 2 : 01;tutu;rouge;9879
ligne 3 : 89;jojo;bleu;1425
ligne 4 : 23;korigan;gris;1009

Fichier "2", feuille "blabla"
ligne 1 : ID;Libellé;Couleur;Ref
ligne 2 : 75;chenille;vert;9245
ligne 3 : 24;jojo;jaune;8765

ETAT FINAL (après exécution de la macro)

Fichier "1" & "2" non-modifiés

Fichier "Consolidation" créé dont le contenu serait le suivant (voire même sans ligne 1)
ligne 1 : ID;Libellé;Couleur;Ref
ligne 2 : 01;tutu;rouge;;9879
ligne 3 : 89;jojo;bleu;1425
ligne 4 : 23;korigan;gris;1009
ligne 5 : 75;chenille;vert;;9245
ligne 6 : 24;jojo;jaune;8765

Evidemment, j'ai beaucoup de fichiers (des centaines) à traiter et qui comportent chacun bcp d'enregistrements (des centaines) ce qui empêche une fusion manuelle.

Pour le moment, la solution la plus proche trouvée est ici (c en anglais) : https://forum.openoffice.org/en/forum/v ... 0&p=179250
Le problème est que cette macro permet de copier le contenu d'un fichier source vers n fichiers cibles or, mon besoin est de copier n fichiers sources vers 1 fichiers cible. il faudrait donc "retourner" la macro d'Andy. De plus, il faut prendre en compte des lignes afin de ne pas écraser de données. La macro doit décaler les cellules copiées pour ne pas écraser la source, un peu comme décrit ici. https://forum.openoffice.org/fr/forum/v ... 38#p220738

Je sollicite la communauté car n'arrive pas à modifier la macro d'Andy comme je le souhaiterais... Je suis loin d'être expert en open basic... :?
D'après ce que j'ai lu, il s'agit d'une utilisation de Calc comme d'un BD or Base pourrait être plus adapté. Problème : les fichiers sont déja saisis dans Calc...
Je m'attendais à trouver un applicatif ou une extension dédiée mais je n'ai rien trouvé pour Open Office...

Merci par avance pour votre aide.
Dernière édition par Oukcha le 07 Avr 2014 12:40, édité 4 fois.
Raison: Balisage dans le premier message du fil de discussion
OpenOffice 4.0.1 sous Windows 7
arthaxeres
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 11
Inscrit le : 31 Mars 2014 15:25

Re: [Calc] Fusionner n Fichiers ODS homogènes en 1 fichier

Messagepar Grenouille » 31 Mars 2014 16:18

Bonsoir,

Pour moi, ce ne sont pas des fichiers ODS mais plutôt des CSV.
De simples fichiers au format texte avec des délimiteurs.

A gérer avec les fonctions Open, Read et Write dont tu trouveras l'explication dans l'aide F1.

A+
OpenOffice 4.1.5 et LibreOffice 5.3.4 (par obligation) sous Windows 7
Avatar de l’utilisateur
Grenouille
ManitOOu
ManitOOu
 
Message(s) : 3223
Inscrit le : 13 Jan 2006 17:21
Localisation : Chasseneuil-du-Poitou / Futuroscope

Re: [Calc] Fusionner n Fichiers ODS homogènes en 1 fichier

Messagepar Piaf » 31 Mars 2014 18:56

Bonjour
Grenouille a écrit:Pour moi, ce ne sont pas des fichiers ODS mais plutôt des CSV.
+1
Par contre
arthaxeres a écrit:pour colonnes ID;Libellé;Couleur;Ref
ligne 2 : 01;tutu;rouge;;9879
ligne 2 : 75;chenille;vert;;9245
Me parait étrange.
Quatre en-têtes de colonne et cinq colonnes de données ?
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Piaf
GourOOu
GourOOu
 
Message(s) : 5622
Inscrit le : 25 Nov 2011 19:07
Localisation : Guyane

Re: [Calc] Fusionner n Fichiers ODS homogènes en 1 fichier

Messagepar arthaxeres » 01 Avr 2014 06:27

Bonjour et merci pour vos messages, ce forum a des membres actifs, c'est super shaggy !

@Grenouille : Merci pour l'idée. je me compliquais la vie je crois (je suis nouveau sur le forum et debutant sur BASIC). :oops:

@Piaf : J'ai édité ma question. C'était une coquille. Il y a une jolie citation de Vian là-dessus, mais c'est une autre histoire... :)

Pour résumé, la macro pourrait-être :
1/ Ouvrir n fichiers .ODS d'un répertoire donné, et pour chaque fichier :
-- boucle
2/ Sélectionner les lignes à exporter (*)
3/ Copier ces lignes dans un nouveau document
4/ Enregistrer le nouveau document au format CSV
-- fin boucle
5/ Fermer les fichiers .ODS ouverts
6/ Créer un nouveau fichier de consolidation
7/ Coller les fichiers CSV générés dans le fichier de consolidation, sur une même feuille, à la suite des autres
8/ Enregistrer le fichier de consolidation au format .ODS
9/ Enregistrer les fichiers .CSV

(*): En réalité, ce n'est pas l'intégralité des fichiers ODS qui m'interessent car les fichiers étaient préremplis avant que des users saisissent des données dedans :
J'ai donc des fichiers qui ressemblent à ça (voir ci-dessous) et seules les lignes dont la couleur a été saisie doivent aller dans le fichier de consolidation (le fichier de saisie était verrouillé et controlé afin que Libellé & Ref soient obligatoirement renseignés si Couleur était renseigné)
Il n'y a aucune autre complication. :)

Fichier "1", feuille "blabla1"
ligne 1 : ID;Libellé;Couleur;Ville;Ref
ligne 2 : 01;tutu;rouge;Gotham;9879
ligne 3 : 89;jojo;bleu;Gotham;1425
ligne 4 : 23;korigan;gris;Gotham;1009
ligne 5 : 16;;;Gotham;
ligne 6 : 30;papa;violet;New York;1921
ligne 7 : 11;;;New York;
ligne 8 : 71;;;New York;
ligne 9 : 99;;;New York;
ligne 10: 84;cuicui;rouge;Roubaix;1333
ligne 11: 29;lolo;orange;Roubaix;6110
ligne 12: 12;;;Roubaix;
ligne 13: 07;;;Roubaix;
...

Fichier "2", feuille "blabla2"
ligne 1 : ID;Libellé;Couleur;Ville;Ref
ligne 2 : 75;chenille;vert;Dunkerque;9245
ligne 3 : 24;jojo;jaune;Dunkerque;8765
...

Avec pour résultat cible
Fichier "Consolidation"
ligne 1 : ID;Libellé;Couleur;Ville;Ref
ligne 2 : 01;tutu;rouge;Gotham;9879
ligne 3 : 89;jojo;bleu;Gotham;1425
ligne 4 : 23;korigan;gris;Gotham;1009
ligne 5 : 30;papa;violet;New York;1921
ligne 6 : 84;cuicui;rouge;Roubaix;1333
ligne 7 : 29;lolo;orange;Roubaix;6110
ligne 8 : 75;chenille;vert;Dunkerque;9245
ligne 9 : 24;jojo;jaune;Dunkerque;8765

Que pensez-vous de l'idée de macro en 9 étapes ?

N'existerait-il pas une solution toute faite type extension/programme/... ?

Merci d'avance
OpenOffice 4.0.1 sous Windows 7
arthaxeres
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 11
Inscrit le : 31 Mars 2014 15:25

Re: [Calc] Fusionner n Fichiers ODS homogènes en 1 fichier

Messagepar alhazred » 01 Avr 2014 10:48

Bonjour,

Plutôt que d'écrire des lignes comme tu le fais, joins donc deux exemplaires des fichiers dont tu pars (une dizaine de ligne pour chacun)
À bientôt

LibO 4.1.5.3 et AOO 4.0.1 sous Windows 7, MRI et SDK pour les macros.

Et la sauvegarde incrémentée, c'est sympa !
Avatar de l’utilisateur
alhazred
ManitOOu
ManitOOu
 
Message(s) : 3028
Inscrit le : 01 Mai 2011 00:08
Localisation : Casablanca (Maroc)

Re: [Calc] Fusionner n Fichiers ODS homogènes en 1 fichier

Messagepar Dude » 01 Avr 2014 13:46

Salut,

arthaxeres a écrit: En réalité, ce n'est pas l'intégralité des fichiers ODS

On va donc te le répéter encore une fois, ce ne sont pas des fichiers ODS mais CSV.

A partir de là et comme le souligne grenouille, l'utilisation des instructions du Basic suffit.
Pas besoin d'ouvrir Calc pour concaténer des fichiers texte.
D'ailleurs, même pas besoin d'AOO pour ça. Un batch Windows ou un script Bash suffirait.
Avatar de l’utilisateur
Dude
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 21599
Inscrit le : 03 Mars 2006 08:45
Localisation : 127.0.0.1

Re: [Calc] Fusionner n Fichiers ODS homogènes en 1 fichier

Messagepar arthaxeres » 01 Avr 2014 14:23

Merci pour vos questions/remarques !

@alhazred : Voici 2 fichiers d'exemple en PJ

@Dude : dsl mais je ne comprends pas bien. Mes fichiers (ex ceux qui sont en PJ) sont au format ODS et le but est de sortir des fichiers ODS.
Pourrais-tu expliquer "l'utilisation des instructions du Basic suffit" ?

Merci ! :)
Pièces jointes
Fichier_02.ods
Exemple d'un fichier source 1
(30.26 Kio) Téléchargé 139 fois
Fichier_01.ods
Exemple d'un fichier source 2
(37.04 Kio) Téléchargé 132 fois
OpenOffice 4.0.1 sous Windows 7
arthaxeres
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 11
Inscrit le : 31 Mars 2014 15:25

Re: [Calc] Fusionner n Fichiers ODS homogènes en 1 fichier

Messagepar alhazred » 01 Avr 2014 14:43

Et là, je ne vois pas le rapport avec les descriptions que tu as données plus haut :marto:
À bientôt

LibO 4.1.5.3 et AOO 4.0.1 sous Windows 7, MRI et SDK pour les macros.

Et la sauvegarde incrémentée, c'est sympa !
Avatar de l’utilisateur
alhazred
ManitOOu
ManitOOu
 
Message(s) : 3028
Inscrit le : 01 Mai 2011 00:08
Localisation : Casablanca (Maroc)

Re: [Calc] Fusionner n Fichiers ODS homogènes en 1 fichier

Messagepar arthaxeres » 01 Avr 2014 20:46

Bonsoir,

Il ne s'agit que d'exemples. En bref, je dispose de nombreux fichiers avec des colonnes pre-remplies (ex col. A, E et F des fichiers en PJ) et de colonnes dont les données ont été saisies par des users(col. B, C, D, I et E) . J'ai donc 2 types de lignes : celles qui ont juste des données pré-remplies et celles qui ont le infos pré-remplies + les données renseignées par les users.

Je souhaite consolider avec une macro toutes les lignes qui répondent à cette deuxième catégorie (les lignes sont réparties dans plusieurs fichiers .ODS et je souhaite les consolider dans un fichier .ODS unique).

Est ce plus clair ? En tout cas, merci pour vos questions qui me font considérer mon problème sous différents angles.
OpenOffice 4.0.1 sous Windows 7
arthaxeres
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 11
Inscrit le : 31 Mars 2014 15:25

Re: [Calc] Fusionner n Fichiers ODS homogènes en 1 fichier

Messagepar Piaf » 01 Avr 2014 23:51

Bonsoir
Un brouillon de solution éventuelle parmi d'autres. (à tester)
Basé sur les renseignements donnés avant tes fichiers.
Pour les explications voir : lister le contenu d'un répertoire et Copier / coller entre deux classeurs ou feuilles
Pour tester, utiliser la macro CopieOds.
Le principe, on part du fichier Consolidation, les différents fichiers sont placés dans un sous répertoire du fichier principal.
On ouvre chaque fichier, on récupère les lignes voulues, on les copie dans le fichier Consolidation, on ferme le fichier et on passe au suivant.
A+
Pièces jointes
arthaxeres.zip
(20.98 Kio) Téléchargé 185 fois
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Piaf
GourOOu
GourOOu
 
Message(s) : 5622
Inscrit le : 25 Nov 2011 19:07
Localisation : Guyane

Re: [Calc] Fusionner n Fichiers ODS homogènes en 1 fichier

Messagepar alhazred » 02 Avr 2014 08:14

Bonjour,

En utilisant les classeurs fournis (à peu près, car les données ne me paraissent pas trop cohérentes, et les en-têtes de colonnes sont aussi couverts par le secret défense ? J'aime bien savoir à quoi je participe :twisted: )

Le code suivant (incorporé au classeur joint) peut être adapté
-- Indiquer le chemin du répertoire contenant les fichiers
-- modifier éventuellement les conditions qui indiquent qu'un classeur a été traité et qu'une ligne est à conserver

Code : Tout sélectionner   AgrandirRéduire
Sub Collect
   path = "C:\Users\Alhazred\Desktop\Fichiers\"
   
   fileName = Dir(path+"*.ods")
   row% = 2 'la première ligne est déjà remplie
   Do While fileName<>""
      AddLines(path+fileName,row)
      fileName = Dir
   Loop   
End Sub

Sub AddLines(filePath, byRef destRow)
   destSheet = ThisComponent.sheets.GetByName("Feuille1")
   file = StarDesktop.LoadComponentFromURL(ConvertToURL(filePath),"_blank",0,Array())
   sourceSheet = file.sheets.GetByName("Feuille1")
   sourceRow% = 2 'la première ligne est ignorée
   Do
      data = sourceSheet.GetCellRangeByName("A"+sourceRow+":H"+sourceRow).dataArray
      sourceRow = sourceRow+1
      If data(0)(4)="" Then Exit Do 'Fin si la colonne E est vide (4)
      If data(0)(1)<>"" Then 'On retient les lignes où la colonne B est remplie (1)
         destSheet.GetCellRangeByName("A"+destRow+":H"+destRow).dataArray = data
         destRow = destRow+1
      End If      
   Loop
   file.close(true)
End Sub
Pièces jointes
Réunir les classeurs.ods
(10.46 Kio) Téléchargé 413 fois
À bientôt

LibO 4.1.5.3 et AOO 4.0.1 sous Windows 7, MRI et SDK pour les macros.

Et la sauvegarde incrémentée, c'est sympa !
Avatar de l’utilisateur
alhazred
ManitOOu
ManitOOu
 
Message(s) : 3028
Inscrit le : 01 Mai 2011 00:08
Localisation : Casablanca (Maroc)

Re: [Calc] Fusionner n Fichiers ODS homogènes en 1 fichier

Messagepar arthaxeres » 02 Avr 2014 11:01

Bonjour et merci beaucoup Piaf & Alhazred pour votre aide,

@ Alhazred : Tu connais le projet Manhattan ? Et bien c'est pas ça ! :wink:
Serieusement, en lisant les posts, j'ai vu qu'il fallait faire attention à ne laisser aucune donnée confidentielle donc j'ai tout anonymisé. J'en ai peut être fait un peu trop mais je me découvre une passion torride pour les tableurs, les fonctions et le basic et pour OO en particulier ! :lol:
En tout cas, c'est pour cela que le fichier à une tête bizarre !

Je regarde les fichiers proposés et vous donne des news.
OpenOffice 4.0.1 sous Windows 7
arthaxeres
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 11
Inscrit le : 31 Mars 2014 15:25

Re: [Calc] Fusionner n Fichiers ODS homogènes en 1 fichier

Messagepar arthaxeres » 02 Avr 2014 14:41

J'ai regardé une des solutions proposée et en modifiant un peu la macro, j'arrive à faire ce que je veux. :bravo:

Un grand merci à Alhazred !

Il me reste à vérifier avec les vrais fichiers sources, décortiquer le code dans le détail, regarder la solution de Piaf et flaguer le fil résolu.

Encore merci aux contributeur de ce forum ! :D
OpenOffice 4.0.1 sous Windows 7
arthaxeres
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 11
Inscrit le : 31 Mars 2014 15:25

[Résolu] [Calc] Fusionner n Fichiers ODS homogènes en 1 fich

Messagepar arthaxeres » 07 Avr 2014 12:23

Merci !
OpenOffice 4.0.1 sous Windows 7
arthaxeres
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 11
Inscrit le : 31 Mars 2014 15:25

Re: [Résolu][Calc] Fusionner n Fichiers ODS homogènes en un

Messagepar megumi » 04 Mars 2015 11:17

Bonjour

Je viens d'utiliser le travail présenté pour mon travail et je me demandais si il était possible de modifier
ce morceau de la macro

row% = 4 'les trois premières lignes sont déjà remplies


afin de se placer dans la dernière ligne utilisées.

Mes fichiers sont placés dans plusieurs dossiers différents et donc la macro écrase les lignes utilisées précédemment.

Merci par Avance

La modération a écrit:Relisez les règles de ce forum : déterrage = verrouillage
OpenOffice.org 3.3.0 sous Windows 7
megumi
Fraîchement OOthentifié
 
Message(s) : 6
Inscrit le : 16 Avr 2012 19:19


Retour vers Macros et API

Qui est en ligne ?

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