[Résolu][Calc] - alimentation Listbox impossible

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] - alimentation Listbox impossible

Messagepar stanol69 » 01 Août 2018 07:02

Bonjour,
Je ne suis pas sûr que le sujet soit libellé bien précisément; d'avance, pardon.

Ce que je cherche à faire : Alimenter une ListBox présente sur un Dialogue en allant chercher les informations nécessaires sur une feuille Calc.
Précision : les éléments présents sur cette feuille "Test" ne sont pas figés : l'utilisateur peut être amené à en rajouter, en enlever, etc

Ce qui se passe : lorsque je lance la macro, j'ai le message d'erreur qui intervient lors de l'alimentation de la ListBox :Valeur ou type de données incorrect(e).
Index hors de la plage définie.

Faisant référence à des données "sûres", j = 0 to Ind_DerLigneTest, je ne comprends pas pas pourquoi je bascule hors de la plage définie ExoData(Ind_DerLigneTest)

Cordialement,
Code : Tout sélectionner   AgrandirRéduire
Sub LancerListB
Dim bibli as object
Dim DialTest as object
Dim oCursor as Object
Dim FeuilleTest as object
Dim Ind_DerLigneTest as long


'Charge la librairie + boite de dialogue
   
   DialogLibraries.LoadLibrary("Standard")
   bibli = DialogLibraries.GetByName("Standard")
   DialTest = bibli.GetByName("Dialog1")
   DialTest = CreateUnoDialog(DialogLibraries.Standard.Dialog1)
   FeuilleTest = ThisComponent.Sheets.GetByName("Test")

Dim j as long
Dim ExoData(Ind_DerLigneTest) as string
   
oCursor = FeuilleTest.createCursor
oCursor.gotoEndOfUsedArea(False)
Ind_DerLigneTest = oCursor.RangeAddress.EndRow + 1
'supprime entrées initiale listbox
   DialTest.getControl("ListBox1").RemoveItems(0,DialTest.getControl("ListBox1").ItemCount)
'Alimente Listbox 
   for j =  0 to Ind_DerLigneTest
   ExoData(j) = FeuilleTest.getCellByPosition(0, j+1).formula
    next j
   DialTest.getControl("ListBox1").addItems(ExoData(), 0)
End sub
Pièces jointes
listbox.ods
(13.39 Kio) Téléchargé 15 fois
Dernière édition par stanol69 le 01 Août 2018 17:56, édité 1 fois.
LibreOffice 4.3- c'est la version imposée au travail
LibreOffice 5.4.5.1 à la maison
Windows 10
stanol69
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 21
Inscrit le : 04 Juin 2015 22:14

Re: [Calc] - alimentation Listbox impossible

Messagepar Dude » 01 Août 2018 09:00

Tu déclares ExoData comme un tableau de dimension Ind_DerLigneTest.
Or, cette variable n'est initialisée qu'après.
Inverse l'ordre des choses.

Comme d'habitude, un usage de XRay ou un placement d'un point d'arrêt, t'aurait montré cette erreur.
Avatar de l’utilisateur
Dude
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 20296
Inscrit le : 03 Mars 2006 08:45
Localisation : 127.0.0.1

Re: [Calc] - alimentation Listbox impossible

Messagepar stanol69 » 01 Août 2018 17:56

Bonjour,
Et merci, c'est exactement ça. Je l'ai tourné dans tous les sens et c'était si logique que je ne l'ai pas vu...
Concernant le code que j'ai indiqué et qui figure dans le module de Basic, j'ai en plus oublié d'indiquer DialTest.Execute à la fin ...

Au sujet d'XRay, je l'avais téléchargé après en avoir lu l'intérêt maintes fois indiqué dans ce forum. Je n'ai jamais réussi à m'en servir (suis pas doué, c'est clair), mais je crois que je vais réinvestir du temps pour l'apprivoiser.
Pour le point d'arrêt, j'en avais mis et le témoin me renvoyait 0 comme valeur de j, donc, ça venait du début de la procédure, c'est clair.

Merci encore, et je mets le sujet en résolu.
Cordialement,
LibreOffice 4.3- c'est la version imposée au travail
LibreOffice 5.4.5.1 à la maison
Windows 10
stanol69
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 21
Inscrit le : 04 Juin 2015 22:14


Retour vers Macros et API

Qui est en ligne ?

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