[Résolu][Calc]initialiser des zones de liste

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 !
Max59550
Fraîchement OOthentifié
Messages : 3
Inscription : 16 déc. 2023 09:46

[Résolu][Calc]initialiser des zones de liste

Message par Max59550 »


La modération vous a écrit: Suite de ce sujet

Bonjour,

Je cherche à initialiser les zones de liste de mon formulaire en sélectionnant le premier enregistrement (qui est vide) lorsque je clique sur le bouton "nouveau".
Mais pas moyen de trouver la bonne instruction.
Je vous mets le fichier en pièce jointe.
Je l'ai créé à partir d'un fichier trouvé sur ce forum : viewtopic.php?f=15&t=40452. Je ne suis pas développeur mais plutôt bidouilleur avec quelques notions... :D
Merci pour votre aide,
Max
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par Max59550 le 17 déc. 2023 11:57, modifié 1 fois.
LibreOffice 7.3 sous Linux Mint
Avatar de l’utilisateur
DLE
HédOOniste
HédOOniste
Messages : 1503
Inscription : 30 déc. 2007 18:56
Localisation : Lille

Re: [Calc]initialiser des zones de liste

Message par DLE »

Bonsoir,
Si j'ai bien compris, le souci est de ré-initialiser les listbox sur action du bouton "Nouveau". Il n'y a pas de propriété "Text" dans une "listbox", la propriété "selectedItem" est en lecture uniquement mais on peut sélectionner un item par "selectItemPos(1,true) " le code la macro est :

Code : Tout sélectionner

Sub MoveRecord(oEv as Object)
Dim Var() as String, I as Long, oNom as Object, lesLignes as Object
Dim oFeuille As Object, maZone as Object, gomme as Long, txt as String, nomprenom as String, x as Long,genre as String
	oFeuille =  ThisComponent.Sheets.getByName("Donnees")
	Select Case oEv.Source.Model.Name
		Case "lstContacts"
			nLig = oEv.Source.SelectedItemPos + 1
			oEv.Source.Model.SelectedItems = Array()
		Case "cmdFirst"
			nLig = premLig			
		Case "cmdPrevious"
			nLig = nlig - 1											
		Case "cmdNext"
			nLig = nlig + 1		
		Case "cmdLast"
			nLig = derLig
		Case "cmdNew"
			nLig = derLig + 1
			NewReg = True
		Case "cmdSupprimer"
			maZone = oFeuille.getCellRangeByPosition(0,nLig, 0,nLig)
			lesLignes = maZone.Rows
			lesLignes.removeByIndex(0,1)
			derLig = derLig - 1
			nLig = 1
			oDlg.getControl("lstContacts").Model.removeAllItems
			For x = 1 to derLig
				nomprenom ="Parents" & oFeuille.getCellByPosition(0,x).String ' & " " & oFeuille.getCellByPosition(3,x).String
				oDlg.getControl("lstContacts").AddItem(nomprenom,x)
			Next						
	End Select
	oDlg.getControl("lblEnreg").Model.Label = "Enreg : " & nLig & " / " & derLig
	boutonsDeplacement
	Var = Array("txtNom","lstSexe","lstClasse","lstDispositif","lstPéri1","lstPéri2","lstPéri3","lstFréquente1","lstFréquente2","lstFréquente3","lstSuivi1","lstSuivi2","lstSuivi3","lstSuivi4","lstSuivi5","lstSuivi6","lstApprentissage1","lstApprentissage2","lstApprentissage3","lstApprentissage4","lstApprentissage5","lstApprentissage6","lstApprentissage7","lstClimat1","lstClimat2","lstClimat3","lstClimat4","lstClimat5","lstClimat6","lstClimat7","lstClimat8","lstClimat9","lstFonc1","lstFonc2","lstFonc3","lstFonc4","lstFonc5","lstFonc6","lstInsti1","lstInsti2","lstInsti3","lstInsti4","lstSixieme1","lstSixieme2","lstSixieme3","Autre")
	For I = 0 to UBound(Var)
		oNom = oDlg.GetControl(Var(I))
		If oNom.supportsService("com.sun.star.awt.UnoControlListBox") Then
			'txt = oFeuille.getCellByPosition(I, nLig).String
			'oNom.selectItem(txt, True)
' Réinisialisation des listbox ***maj			
			oNom.selectItemPos(1,true)  ' sélection premier item 

		ElseIf oNom.supportsService("com.sun.star.awt.UnoControlRadioButton") Then
			genre = oFeuille.getCellByPosition(I, nLig).String
				If genre = "M" Then
					oDlg.getControl("obM").State = True
				Else
					oDlg.getControl("obF").State = True
				End If			
		Else
			oNom.Text = oFeuille.getCellByPosition(I, nLig).String
		End If
	Next
	oDlg.getControl("cmdEnregistrer").Enable = False
	oDlg.getControl("lstSexe").SetFocus
End Sub
J'espère que cela vous convient. Xray est très utile pour la mise au point des macros.
Bonne soirée.
Max59550_Retour questionnaires parents.ods
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
MacOS Sequoia 15.5 (iMac-Intel) : AOO 4.1.15 , LibreOffice 24.8.5.2, Adoptium-temurinJDK 1.8.0_402, CCC, FireFox, Thunderbird, ORB 1.2.1
Parallel Desktop = Windows 10 & MacOS : AOO, Libreoffice.
Max59550
Fraîchement OOthentifié
Messages : 3
Inscription : 16 déc. 2023 09:46

Re: [Calc]initialiser des zones de liste

Message par Max59550 »

Bonjour,

Merci beaucoup pour le retour, cela fonctionne.
Bonne journée,

Max
LibreOffice 7.3 sous Linux Mint