[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 !
stanol69
NOOuvel adepte
NOOuvel adepte
Messages : 21
Inscription : 04 juin 2015 21:14

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

Message par stanol69 »

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

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
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par stanol69 le 01 août 2018 16:56, modifié 1 fois.
LibreOffice 4.3- c'est la version imposée au travail
LibreOffice 5.4.5.1 à la maison
Windows 10
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25167
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc] - alimentation Listbox impossible

Message par Dude »

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.
stanol69
NOOuvel adepte
NOOuvel adepte
Messages : 21
Inscription : 04 juin 2015 21:14

Re: [Calc] - alimentation Listbox impossible

Message par stanol69 »

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