Calc ouverture multiples fichiers

Bonjour

Voici une nouvelle question envoyée à l'aide du formulaire de demande d'aide (http://fr.libreoffice.org/get-help/poser-une-question/).
Si vous répondez, merci de penser à utiliser la fonction "répondre à tous" de votre logiciel de courrier électronique de façon que le demandeur reçoive une copie de votre réponse.

Email: - sebastien.ramsay@alpes-de-haute-provence.gouv.fr
Sujet: - Calc ouverture multiples fichiers
Question: - Bonjour,
J'aie créé un bout de programme qui a pour but d'aller chercher des informations dans des fichiers calc identiques (un par nom).
Ce fichier Synthèse teste la présence des fichiers source, les ouvre s'ils existent, récuppère la donnée et referme le fichier source.

code :

Dim DocSource as object
Dim DocSynth as object
Dim Args(0) as new com.sun.star.beans.PropertyValue
dim oDesktop as Object
dim NomFichier,nom,pac as string
dim LDocSynth,LDocSource as integer
dim i as integer

sub TesteExistanceNomFichier

DocSynth = ThisComponent
oDesktop = createUnoService( "com.sun.star.frame.Desktop" )
LDocSynth = 3
Args(0).name = "Hidden"
Args(0).value = true

DocSynth.currentController.setActiveSheet(DocSynth.sheets(1))

for i = 4 to 10

NomFichier = DocSynth.sheets(0).getcellbyposition(5,i).string
nom = DocSynth.sheets(0).getcellbyposition(2,i).string
pac = DocSynth.sheets(0).getcellbyposition(3,i).string

  if FileExists (NomFichier) then

  DocSource = oDesktop.LoadComponentFromURL( NomFichier ,"_blank",0, Args())
      
    for LDocSource = 7 to 30
      if DocSource.sheets(5).getcellbyposition(1,LDocSource).string <>"" then
        LDocSynth = LDocSynth + 1
        DocSynth.sheets(1).getcellbyposition(0,LDocSynth).string = nom
        DocSynth.sheets(1).getcellbyposition(1,LDocSynth).string = pac
          for colsynth = 2 to 12
          DocSynth.sheets(1).getcellbyposition(colsynth,LDocSynth).string = DocSource.sheets(5).getcellbyposition(colsynth-1,LDocSource).string
          next colsynth
      end if
      
      if DocSource.sheets(5).getcellbyposition(1,LDocSource).string ="" then
      DocSource.close(True)
      wait(200)
      exit for
      end if
    
    next LDocSource

  DocSynth.sheets(0).getcellbyposition(6,i).string = "OK"
  
  end if
next i

msgbox ("terminé")
end sub

quand je limite à 3 ou 4 fichiers, le code fonctionne, au delà libre office envoie un message d'erreur.

qu'est ce que j'oublie ?

Bonjour

J'aie créé un bout de programme qui a pour but d'aller chercher des
informations dans des fichiers calc identiques (un par nom).
Ce fichier Synthèse teste la présence des fichiers source,
les ouvre s'ils existent, récuppère la donnée et referme le fichier source.
...
quand je limite à 3 ou 4 fichiers, le code fonctionne, au delà libreoffice
envoie un message d'erreur.

Tu imagines bien que reproduire ton problème nécessiterait de recréer
"à l'aveugle" des classeurs, en imaginant leur structure et contenu
à partir de ton code. Tout cela pour un résultat incertain...

Donner le message d'erreur pourrait déjà aider...

Une hypothèse parmi d'autres : tu ne testes pas l'existence des
feuilles avant d'y accéder par leur numéro. Si par exemple un des
classeurs n'a pas le nombre de feuilles requis...

Les listes ne laissent pas passer les pièces jointes, donc si tu veux
joindre un exemple des classeurs (celui contenant le code et au moins
un de ceux ouverts), il faut passer par un site de téléchargement
de fichiers et inclure le lien dans ton message.

Ces listes sont publiques, donc attention à ne pas mettre en ligne de
données confidentielles.

Si tu réponds, merci de penser à utiliser la fonction "répondre à tous" du
logiciel de courrier de façon que la liste reçoive la réponse.

Cordialement
Pierre-Yves

merci de vous pencher sur mon problème

Tous les fichiers ont été créés à partir d'un seul même base, donc même nombre de feuilles.

Le message d'erreur est à peu près le suivant

[msci-uno bridge error]UNO type of C++ exception unknown:
  "std".runtime_error", RTTI-name=".,AVruntime-error@std@@"!.

Sébastien Ramsay
Pôle pastoralisme
Direction Départementale des Territoires des Alpes de Haute-Provence
Avenue Demontzey BP 211 - 04002 Digne-les-Bains cedex
Tel: 04 92 30 20 77 - Fax: 04 92 30 55 02

Suite...

seb du 04 wrote

Tous les fichiers ont été créés à partir d'un seul même base, donc même
nombre de feuilles.

Ok, mais sans les fichiers "synthèse" et "source" difficile de se faire une
idée.

Peut-être le fait que tu ne fermes pas DocSource dans tous les cas (si la
cellule testée n'est pas vide)...

Pierre-Yves