[Résolu][Calc] Ajout à la liste si non présence dans boîte combinée

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 !
footeux
NOOuvel adepte
NOOuvel adepte
Messages : 23
Inscription : 03 sept. 2017 16:54

[Résolu][Calc] Ajout à la liste si non présence dans boîte combinée

Message par footeux »

Bonjour,

J'ai une boite de dialogue sur la feuille pronostic, qui s'ouvre en appuyant sur le bouton.
Sur cette boite de dialogue il y a une boite combinée.
J'aimerais lorsque le nom du joueur n'est pas connu dans la boite combinée, qu'il soit ajouté dans la liste présent sur la feuille 1. ( c'est cette liste qui alimente ma boite combiné)
Comme j'ai déjà une fonction recherche sur mon fichier je pensais arrivé à résoudre mon problème mais je me retrouve face au message d'erreur suivant :
Erreur d'exécution BASIC.
'1'

Type: com.sun.star.lang.IndexOutOfBoundsException
et avec cette ligne en bleu

Code : Tout sélectionner

fJoueur.getCellByPosition(0, nouv_joueur).setDataArray(array(ligne_j))
Je pensais quand recopiant bêtement le principe de recherche j'obtiendrais le résultat voulu, mais je dois vraiment le faire trop bêtement :fou:

Je vous met ici le code que j'ai essayé :

Code : Tout sélectionner

Dim fJoueur as object
Dim nouv_joueur as Long
Dim rProno()
dialogue = event.Source.Context
pronostiqueur = event.Source.text
fJoueur= oSheets.getByName("Feuille1")
	oCurseur2 = fJoueur.createCursor
    oCurseur2.gotoEndOfUsedArea(True) ' Le curseur sur la dernière ligne
	rJoueur = oCurseur2.DataArray

	' on récupère ici la valeur du combo
	combo = dialogue.getControl("ComboBox1")
	pronostiqueur = combo.Text

	' on cherche si la valueur de la combobox n'est pas presente sur a1:a100 sur la feuille Feuil1
	nouv_joueur= itemDansMatrice(pronostiqueur, rJoueur, 0)
         if nouv_joueur > -1 then ' je ne suis pas sur de la valeur -1 mais si je met 0 ou -2 il n'y a aucun changement
 	nouv_joueur=ubound(rJoueur)+1   'la variable nouv_joueur = la première ligne vide
	end if

        'on inscrit le noms
	dim ligne_j(ubound(rJoueur(0)))
	ligne_j(0) = pronostiqueur
	fJoueur.getCellByPosition(0, nouv_joueur).setDataArray(array(ligne_j))

function itemDansMatrice(item, matrice, index)
dim n as integer
	for n = 0 to ubound(matrice)
		if lcase(item) = lcase(matrice(n)(index)) then
			itemDansMatrice = n
			exit function
		end if
	next
	itemDansMatrice = -1
end function


Et un fichier d'illustration en Pj
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par footeux le 06 oct. 2017 17:32, modifié 1 fois.
LibreOffice 5.3.6.1 (x64) sous windows 10
Avatar de l’utilisateur
DLE
SuppOOrter
SuppOOrter
Messages : 1477
Inscription : 30 déc. 2007 18:56
Localisation : Lille

Re: [Calc]Ajouté à la liste si non présent dans la boite com

Message par DLE »

Bonjour,

A valider :

Code : Tout sélectionner

         if nouv_joueur > -1 then  
 	nouv_joueur=ubound(rJoueur)+1   'la variable nouv_joueur = la première ligne vide
	end if
A remplacer par

Code : Tout sélectionner

         if nouv_joueur = -1 then  '**** avant nouv_joueur > -1
 	nouv_joueur=ubound(rJoueur)+1   'la variable nouv_joueur = la première ligne vide
	end if
MacOS Sonoma 14.4.1 (iMac-Intel) : AOO 4.1.15 , LibreOffice 7.6.5.2, Adoptium-temurinJDK_1.8.0_402 -
Windows 10 64 bits :
AOO 4.1.15, Libreoffice 7.1.8.1 - FireFox, Thunderbird, ORB 1.2.1
footeux
NOOuvel adepte
NOOuvel adepte
Messages : 23
Inscription : 03 sept. 2017 16:54

Re: [Calc]Ajouté à la liste si non présent dans la boite com

Message par footeux »

bonjour,

merci de ton aide, avec le signe = ,j'obtiens bien le résultat souhaitait
J'ai corrigé aussi une autre faute que j'avais fait, j'avais mis le end if beaucoup trop tot.
Il fallait que je le mette à la fin de "on inscrit les nom" sinon sa appliquée a chaque fois même quand le nom était connu, et vu que la variable nouv_joueur n'était pas connu car les conditions non réuni, sa posez forcement problème.

Au final merci de ton aide, car le signe égal je n'y aurais pas pensé.
LibreOffice 5.3.6.1 (x64) sous windows 10