[Résolu][Calc] Import de feuilles depuis plusieurs classeurs

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] Import de feuilles depuis plusieurs classeurs

Messagepar coincoin » 07 Mai 2015 10:32

Salut,

Je retente donc ma chance ici, parce qu'à priori, je ne devrais pas pouvoir faire l'économie d'une macro ;-)
Voici donc ce que je veux faire:

Lorsque j'insère une nouvelle feuille, je choisis l'option "à partir d'un fichier", mais je ne peux effectivement sélectionner qu'un fichier à la fois ce qui va m'obliger à répéter l'action 50 fois :evil:
Comment faire pour tout importer d'un coup (chaque fichier ne comportant qu'un seule feuille)

Par exemple, je veux importer (en une seule fois) la feuille de l'élève A et de l'élève B dans mon classeur prof:
Pièces jointes
eleveB.ods
(48.85 Kio) Téléchargé 18 fois
eleveA.ods
(48.8 Kio) Téléchargé 21 fois
prof.ods
(48.76 Kio) Téléchargé 20 fois
Dernière édition par micmac le 12 Mai 2015 22:14, édité 2 fois.
Raison: Ajout de la coche
libreOffice 4.3.6.2 sous Windows7
coincoin
Membre lOOyal
Membre lOOyal
 
Message(s) : 26
Inscrit le : 06 Mai 2015 10:32

Re: [Calc] Import de feuilles depuis plusieurs classeurs

Messagepar TheHache » 07 Mai 2015 12:22

Bonjour,

On comprend mieux ce que tu veux avec les fichiers joints (On le dit souvent !). Du coup, une macro n'est peut-être pas nécessaire !

Puisque tu connais la structure de tes fichiers élèves il serait alors plus simple de récupérer leurs réponses avec une liaison de ton classeur 'Prof' vers tes fichiers élèves.

Tu connais le nom de tes élèves, le nom du fichier de leurs réponses est leur nom, donc les liaisons ne devraient pas poser de problème. Sois tu fais une liaison de leurs réponses dans une feuille à leur nom dans ton classeur 'Prof', soit tu fais un récapitulatif de leurs réponses dans une feuille 'Récap'.

Le forum doit bien avoir un sujet sur les liaisons (je n'ai pas cherché). S'il n'y a pas, ouvre un nouveau sujet, on t'aidera. :wink:

@+
LibO 5.4.7.2 (Imposée) - Windows 7 Entreprise
LibO 6.2.4.2 - Windows 10
LibO 6.1.3.2 - Ubuntu 18.04 LTS
AOO 4.1.5 - Windows 10
Avatar de l’utilisateur
TheHache
PassiOOnné
PassiOOnné
 
Message(s) : 643
Inscrit le : 02 Déc 2009 10:43

Re: [Calc] Import de feuilles depuis plusieurs classeurs

Messagepar coincoin » 07 Mai 2015 13:00

Salut,

Merci pour ta proposition, mais avec des élèves de collège, je suis sûr que sur 300 élèves, une bonne 50aine ne respecteront pas le format d'écriture de nom de fichier que j'aurais imposé, donc je ne peux malheureusement pas miser sur cette option.

c'est pourquoi je souhaite passer par l'importation de feuille multiple, même s'il m'en coûte :?
libreOffice 4.3.6.2 sous Windows7
coincoin
Membre lOOyal
Membre lOOyal
 
Message(s) : 26
Inscrit le : 06 Mai 2015 10:32

Re: [Calc] Import de feuilles depuis plusieurs classeurs

Messagepar TheHache » 07 Mai 2015 13:41

coincoin a écrit:...une bonne 50aine ne respecteront pas le format d'écriture de nom de fichier que j'aurais imposé...


Le format d'écriture de nom de fichier peut être "forcé" par macro.

Il serait plus simple et moins coûteux en temps de développement de lier tes classeurs et d'obliger tes élèves à respecter le formalisme de sauvegarde par macro.

@+
LibO 5.4.7.2 (Imposée) - Windows 7 Entreprise
LibO 6.2.4.2 - Windows 10
LibO 6.1.3.2 - Ubuntu 18.04 LTS
AOO 4.1.5 - Windows 10
Avatar de l’utilisateur
TheHache
PassiOOnné
PassiOOnné
 
Message(s) : 643
Inscrit le : 02 Déc 2009 10:43

Re: [Calc] Import de feuilles depuis plusieurs classeurs

Messagepar Piaf » 07 Mai 2015 13:47

Bonjour
Un petit exemple mais qui doit remplir certaines conditions.
  • Le fichier Prof et les fichiers élèves doivent être dans le même répertoire.
  • Les feuilles à importer doivent avoir le même nom que le classeur sans l'extension.
Code : Tout sélectionner   AgrandirRéduire
Option Explicit

Global monTab() as String

Sub ImporterFeuilles
Dim oDoc as Object, mesFeuilles as Object, maFeuille as Object
Dim sURL as String, x as Integer,adrDocSource as String, NomFeuille as String
   oDoc = thisComponent
   sURL = getDirectory(thisComponent.getURL())
   SelectionClasseurs(sURL)
   mesFeuilles = oDoc.Sheets
   For x = LBound(monTab) To UBound(monTab)
      adrDocSource = monTab(x)
      NomFeuille = ConvertFromUrl(getFileNameOnly(adrDocSource))
      mesFeuilles.insertNewByName(NomFeuille, mesFeuilles.Count)
      maFeuille = mesFeuilles.getByName(NomFeuille)
      maFeuille.link(adrDocSource, NomFeuille, "", "", com.sun.star.sheet.SheetLinkMode.NORMAL )
      maFeuille.setLinkMode(com.sun.star.sheet.SheetLinkMode.NONE)      
   Next
End Sub

Sub SelectionClasseurs(monURL as String)
Dim FP As Object, lesClasseurs() As String
Dim x As Long
   FP = CreateUnoService("com.sun.star.ui.dialogs.FilePicker")
   FP.DisplayDirectory = monURL
   FP.appendFilter("Documents Calc", "*.ods")
   FP.CurrentFilter = "Documents Calc"
   FP.MultiSelectionMode = True
   FP.Title = "Choisissez le ou les classeurs à importer"
   If FP.execute = com.sun.star.ui.dialogs.ExecutableDialogResults.OK Then
      lesClasseurs() = FP.Files
      If UBound(lesClasseurs) > 0 Then
         For x = 1 to UBound(lesClasseurs)
         reDim Preserve monTab(x - 1)
            monTab(x - 1) = lesClasseurs(x)
         Next
      Else
         reDim monTab(0)
         monTab(0) = lesClasseurs(0)
      End If
   End If
   FP.dispose
End Sub
Pas testé sur 50 fichiers.
A+
Pièces jointes
Importation.zip
(47.41 Kio) Téléchargé 35 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] Import de feuilles depuis plusieurs classeurs

Messagepar coincoin » 07 Mai 2015 18:19

Les conditions ne me posent pas de soucis, j'essaie ça sans tarder merci
libreOffice 4.3.6.2 sous Windows7
coincoin
Membre lOOyal
Membre lOOyal
 
Message(s) : 26
Inscrit le : 06 Mai 2015 10:32

Re: [Calc] Import de feuilles depuis plusieurs classeurs

Messagepar coincoin » 12 Mai 2015 12:01

Piaf a écrit:Bonjour
Un petit exemple mais qui doit remplir certaines conditions.
  • Le fichier Prof et les fichiers élèves doivent être dans le même répertoire.
  • Les feuilles à importer doivent avoir le même nom que le classeur sans l'extension.
Code : Tout sélectionner   AgrandirRéduire
Option Explicit

Global monTab() as String

Sub ImporterFeuilles
Dim oDoc as Object, mesFeuilles as Object, maFeuille as Object
Dim sURL as String, x as Integer,adrDocSource as String, NomFeuille as String
   oDoc = thisComponent
   sURL = getDirectory(thisComponent.getURL())
   SelectionClasseurs(sURL)
   mesFeuilles = oDoc.Sheets
   For x = LBound(monTab) To UBound(monTab)
      adrDocSource = monTab(x)
      NomFeuille = ConvertFromUrl(getFileNameOnly(adrDocSource))
      mesFeuilles.insertNewByName(NomFeuille, mesFeuilles.Count)
      maFeuille = mesFeuilles.getByName(NomFeuille)
      maFeuille.link(adrDocSource, NomFeuille, "", "", com.sun.star.sheet.SheetLinkMode.NORMAL )
      maFeuille.setLinkMode(com.sun.star.sheet.SheetLinkMode.NONE)      
   Next
End Sub

Sub SelectionClasseurs(monURL as String)
Dim FP As Object, lesClasseurs() As String
Dim x As Long
   FP = CreateUnoService("com.sun.star.ui.dialogs.FilePicker")
   FP.DisplayDirectory = monURL
   FP.appendFilter("Documents Calc", "*.ods")
   FP.CurrentFilter = "Documents Calc"
   FP.MultiSelectionMode = True
   FP.Title = "Choisissez le ou les classeurs à importer"
   If FP.execute = com.sun.star.ui.dialogs.ExecutableDialogResults.OK Then
      lesClasseurs() = FP.Files
      If UBound(lesClasseurs) > 0 Then
         For x = 1 to UBound(lesClasseurs)
         reDim Preserve monTab(x - 1)
            monTab(x - 1) = lesClasseurs(x)
         Next
      Else
         reDim monTab(0)
         monTab(0) = lesClasseurs(0)
      End If
   End If
   FP.dispose
End Sub
Pas testé sur 50 fichiers.
A+


Après plusieurs tentative, j’exécute la macro qui me demande bien de choisir un fichier à importer, mais un seul, et ça ne résout pas mon problème... à moins que je m'y prenne mal?
libreOffice 4.3.6.2 sous Windows7
coincoin
Membre lOOyal
Membre lOOyal
 
Message(s) : 26
Inscrit le : 06 Mai 2015 10:32

Re: [Calc] Import de feuilles depuis plusieurs classeurs

Messagepar MrPropre » 12 Mai 2015 13:22

Bonjour,

Évitez de citer l'ensemble du message précédent, cela rend la lecture très difficile.

coincoin a écrit:à moins que je m'y prenne mal?

Image
Comment joindre un fichier au format ODF
Penser également à dépersonnaliser le fichier joint.
Nettoyez votre PC du piratage, utilisez des logiciels libres à chaque lavage.
Une seule dose de OpenOffice suffit à éliminer durablement toute trace de MS-Office.
Avatar de l’utilisateur
MrPropre
MOOdérateur
MOOdérateur
 
Message(s) : 1139
Inscrit le : 01 Oct 2008 17:54

Re: [Calc] Import de feuilles depuis plusieurs classeurs

Messagepar Piaf » 12 Mai 2015 14:30

Bonjour
coincoin a écrit:Après plusieurs tentative, j’exécute la macro qui me demande bien de choisir un fichier à importer, mais un seul
Si tu ne sélectionnes qu'un fichier, la macro n'importera qu'un fichier, le titre de la boite de dialogue de sélection est : Choisissez le ou les classeurs à importer.
Teste en sélectionnant plusieurs fichiers.
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] Import de feuilles depuis plusieurs classeurs

Messagepar coincoin » 12 Mai 2015 16:37

oui, c'est bien ce que j'ai voulu faire, mais le browser qui s'ouvre quand j’exécute la macro ne me permet pas de choisir les deux fichiers élèves, c'est soit l'un, soit l'autre :marto:
libreOffice 4.3.6.2 sous Windows7
coincoin
Membre lOOyal
Membre lOOyal
 
Message(s) : 26
Inscrit le : 06 Mai 2015 10:32

Re: [Calc] Import de feuilles depuis plusieurs classeurs

Messagepar zeguedon » 12 Mai 2015 16:51

Bonjour,

coincoin a écrit:mais le browser qui s'ouvre quand j’exécute la macro ne me permet pas de choisir les deux fichiers élèves, c'est soit l'un, soit l'autre :marto:


Même en appuyant sur la touche Ctrl ? (Désolé je n'ai pas Windows pour tester)

A+
Comment baliser [Résolu] ?
AOO 4.1.5
LibreOffice 5.4.5.1
Ubuntu 18.04 LTS
zeguedon
ManitOOu
ManitOOu
 
Message(s) : 2565
Inscrit le : 02 Juil 2014 18:25

Re: [Calc] Import de feuilles depuis plusieurs classeurs

Messagepar Grenouille » 12 Mai 2015 16:53

Bonsoir,

coincoin a écrit: mais le browser qui s'ouvre quand j’exécute la macro ne me permet pas de choisir les deux fichiers élèves

Le dialogue permet la multi sélection en maintenant la touche Ctrl ou Maj appuyée.
C'est un principe lié à ton système d'exploitation :
h**p://windows.microsoft.com/fr-fr/windows/select-multiple-files-folders#1TC=windows-7

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] Import de feuilles depuis plusieurs classeurs

Messagepar coincoin » 12 Mai 2015 18:28

oui, merci je connais ce principe :wink: ... j'ai également essayer une sélection en encadrant les deux fichiers avec la souris mais je confirme que la sélection est exclusive ...

:?:
libreOffice 4.3.6.2 sous Windows7
coincoin
Membre lOOyal
Membre lOOyal
 
Message(s) : 26
Inscrit le : 06 Mai 2015 10:32

Re: [Calc] Import de feuilles depuis plusieurs classeurs

Messagepar Piaf » 12 Mai 2015 18:42

Re
Teste en rempalcant la ligne
Code : Tout sélectionner   AgrandirRéduire
FP = CreateUnoService("com.sun.star.ui.dialogs.FilePicker")
Par
Code : Tout sélectionner   AgrandirRéduire
FP = CreateUnoService("com.sun.star.ui.dialogs.OfficeFilePicker")
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] Import de feuilles depuis plusieurs classeurs

Messagepar coincoin » 12 Mai 2015 21:16

bien vu, le browser de sélection n'est plus le même et je peux effectivement importer mes deux fichiers d'un coup. :bravo:
Merci encore pour votre implication :super:
libreOffice 4.3.6.2 sous Windows7
coincoin
Membre lOOyal
Membre lOOyal
 
Message(s) : 26
Inscrit le : 06 Mai 2015 10:32

Re: [Résolu][Calc] Import de feuilles depuis plusieurs class

Messagepar coincoin » 07 Nov 2019 14:57

Bonjour,

Je déterre ce fil où j'avais trouvé mon bonheur il y a quatre ans, car depuis la dernière maj de libreoffice (6.3.1.2 x64), le bouton qui permet d'activer la macro se met à clignoter dès que je double clique sur une cellule, Le fonctionnement du logiciel se trouve alors grandement ralenti, même si toute les fonctionnalités, y compris la macro en question, sont bien là.

J'ai essayé de supprimer le bouton pour en générer un autre, mais le problème semble entier.

Je vous joint l'un de mes fichiers pour illustrer mes dires

Par avance, merci.
Pièces jointes
CR-Chauff1-test.ods
(21.54 Kio) Téléchargé 2 fois
libreOffice 4.3.6.2 sous Windows7
coincoin
Membre lOOyal
Membre lOOyal
 
Message(s) : 26
Inscrit le : 06 Mai 2015 10:32

Re: [Résolu][Calc] Import de feuilles depuis plusieurs class

Messagepar micmac » 07 Nov 2019 15:03

coin-coin a écrit:Je déterre ce fil
Déterrage = verrouillage.
Il appartient à l'auteur de faire un nouveau sujet en rappelant le fil du sujet déterré par un lien vers ce dernier.
Les formats ouverts (ODF) assurent la pérennité de vos documents.
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
 
Message(s) : 6338
Inscrit le : 28 Août 2010 09:45


Retour vers Macros et API

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : MSN [Bot] et 7 invité(s)