[Résolu][Calc] Mise à jour ListBox suivant OptionButtons

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 !
Avatar de l’utilisateur
Roby68
Membre OOrganisé
Membre OOrganisé
Messages : 66
Inscription : 09 oct. 2013 21:12

[Résolu][Calc] Mise à jour ListBox suivant OptionButtons

Message par Roby68 »

Bonjour le Forum,

Ne trouvant pas la solution adéquat à mon projet, malgré les nombreuses pistes évoquées dans les différents forums sur les Listes déroulantes et les cases à cocher, je me retourne vers vous.

J'aimerai modifier l'emplacement de mes boutons "OptionButton" (pas les mêmes que ceux plus haut) visibles directement sur la feuille "Data" en les intégrant dans la boîte de dialogue "Recherche1".
Trois "OptionButton" permettent de faire les choix suivants pour alimenter la liste déroulante:

- Actif ( la liste des personnels ayant "Ops" = 3 )

- Futur ( la liste des personnels ayant "Ops" = 1 )

- Tous ( pas de filtre sinon NOM et Prénom par ordre alphabétique )

j'avais réussi à mettre à jour la cellule C5 dans la feuille "Parametres" suivant l'option choisie mais la liste déroulante ne se met pas à jour.
Les codes sont toujours présents.

merci d'avance à ceux qui pourront m'aider.
Bonne soirée à tous

Roby
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par toucan le 08 févr. 2019 12:48, modifié 5 fois.
Raison : Ajout de l'icône
LibreOffice 5.2.6.2 / LibreOffice 5.3 ( au Bureau ) "Par obligation de version".
Win 7 Pro

LibreOffice 6.2.5.2 ( Maison )
Win 10 Pro
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: [Calc] Mise à jour ListBox suivant OptionButtons

Message par Piaf »

Bonjour
Très peu familier avec le tableur.
Un petit exemple de ce que j'ai compris :lol:
Je n'ai pas incorporé le tri du tableau, Tu as un exemple d'Alain de la Chaume Ici

Code : Tout sélectionner

Option Explicit
Dim oDlg as Object, maZone as Object

Sub Main
Dim oDoc as Object, FeuillePers as Object, oSelect as Object
Dim cellVide as Variant, y as Long
Dim Cherche As Object, trouv As Variant
	DialogLibraries.LoadLibrary("Standard")
	oDlg = CreateUnoDialog(DialogLibraries.Standard.Recherche1)
	oDoc = thisComponent
	FeuillePers = oDoc.Sheets.getByName("Personnels")
	maZone = FeuillePers.getCellRangeByName("E2:E1000")
	cellVide = maZone.queryEmptyCells().RangeAddresses
	y = cellVide(0).StartRow
	maZone = FeuillePers.getCellRangeByName("A2:B" & y)
	If oDlg.execute = com.sun.star.ui.dialogs.ExecutableDialogResults.OK Then
		If oDlg.getControl("ListBox1").SelectedItem = "" Then
			MsgBox("Vous devez sélectionner une option (Actifs, Futurs ou Tous)" & Chr(13) & "Puis sélectionner un nom dans la liste déroulante")
			Exit Sub
		End If	
		Cherche = FeuillePers.createSearchDescriptor
		With Cherche
			.SearchString = oDlg.getControl("ListBox1").SelectedItem
			.SearchType = 1
			.SearchWords = True
		End With
		trouv = FeuillePers.findFirst(Cherche)
		oSelect = FeuillePers.getCellRangeByPosition(0,trouv.CellAddress.Row,8,trouv.CellAddress.Row)
		oDoc.CurrentController.Select(oSelect)
	End If	
	oDlg.dispose()
End Sub

Sub Options(oEv as Object)
Dim i as Long, monTab() as String, n as Long
	Select Case oEv.Source.Model.Tag
		Case 1
			For i = 0 To UBound(maZone.dataArray)
				If maZone.dataArray(i)(0) = 1 Then
					reDim Preserve monTab(n)
					monTab(n) = maZone.dataArray(i)(1)
					n = n + 1
				End If	
			Next i
		Case 2
			For i = 0 To UBound(maZone.dataArray)
				reDim Preserve monTab(n)
				monTab(n) = maZone.dataArray(i)(1)
				n = n + 1
			Next i		
		Case 3
			For i = 0 To UBound(maZone.dataArray)
				If maZone.dataArray(i)(0) = 3 Then
					reDim Preserve monTab(n)
					monTab(n) = maZone.dataArray(i)(1)
					n = n + 1
				End If	
			Next i		
	End Select
	oDlg.getControl("ListBox1").Model.StringItemList = monTab()	
End Sub
A+
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Avatar de l’utilisateur
Roby68
Membre OOrganisé
Membre OOrganisé
Messages : 66
Inscription : 09 oct. 2013 21:12

Re: [Calc] Mise à jour ListBox suivant OptionButtons

Message par Roby68 »

Bonjour le Forum, Piaf

Le résultat attendu est de mettre le choix de la listbox dans cellule B2 de l'onglet "Data".
Le fait de pouvoir effectuer le choix avec les "OptionButton" est déjà une belle avancée. J'avais également vu le code cité mais je n'arrive pas à l'exploiter.

Ensuite c'est une recherche à partir de cette cellule qui affichera toutes les données retenue.

merci encore à toi de me permettre de m'avancer.

Bonne soirée à tous.
LibreOffice 5.2.6.2 / LibreOffice 5.3 ( au Bureau ) "Par obligation de version".
Win 7 Pro

LibreOffice 6.2.5.2 ( Maison )
Win 10 Pro
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: [Calc] Mise à jour ListBox suivant OptionButtons

Message par Piaf »

Bonsoir
Roby68 a écrit :Le résultat attendu est de mettre le choix de la listbox dans cellule B2 de l'onglet "Data".
Fait.
Roby68 a écrit :J'avais également vu le code cité mais je n'arrive pas à l'exploiter.
j'ai ajouter la fonction de tri d'Alain de la Chaume.
A+
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Avatar de l’utilisateur
Roby68
Membre OOrganisé
Membre OOrganisé
Messages : 66
Inscription : 09 oct. 2013 21:12

Re: [Calc] Mise à jour ListBox suivant OptionButtons

Message par Roby68 »

Bonsoir le Forum, Piaf

Parfait pour la cellule B2. Par contre je n'ai pas besoin qu'il aille se positionner dans l'onglet "Personnels". Simplement la copie en cellule B2 me convient pour ce test de boîte de dialogue.
Oui je suis assez exigeant tu vas me dire mais je n'ai pas trouvé la variable qui prend le choix de la liste pour essayer de la copier moi-même en B2. Je pensais à "oSelect", cela n'a pas fonctionné.

J'ai remarqué également que la boîte de dialogue est centrée dans la fenêtre Windows sous Open Office mais pas sous LibreOffice.
En effet, au boulot, on vient d'installer LibreOffice 5.2.6.2 à la place d'Open Office aujourd'hui. Pas encore familiarisé avec cette version.
Peut être là encore une option que l'on doit paramétrer quelque part.

Merci encore pour le temps passé.

Roby
LibreOffice 5.2.6.2 / LibreOffice 5.3 ( au Bureau ) "Par obligation de version".
Win 7 Pro

LibreOffice 6.2.5.2 ( Maison )
Win 10 Pro
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: [Calc] Mise à jour ListBox suivant OptionButtons

Message par Piaf »

Bonjour
Roby68 a écrit :Par contre je n'ai pas besoin qu'il aille se positionner dans l'onglet "Personnels". Simplement la copie en cellule B2 me convient pour ce test de boîte de dialogue.
J'ai mis en commentaire la recherche.
Roby68 a écrit :J'ai remarqué également que la boîte de dialogue est centrée dans la fenêtre Windows sous Open Office mais pas sous LibreOffice.
Le dialogue devrait être centré que ce soit sous AOO ou LibO.
A+
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Avatar de l’utilisateur
Roby68
Membre OOrganisé
Membre OOrganisé
Messages : 66
Inscription : 09 oct. 2013 21:12

Re: [Calc] Mise à jour ListBox suivant OptionButtons

Message par Roby68 »

Bonjour le Forum, Piaf

Merci encore pour le temps passé. Cela fonctionne très bien (sur le fichier test).
Je ne pensais pas que le centrage de la boîte de dialogue ne se faisait que par code.
Encore une petite chose, à quoi correspond le "fMenu", je ne trouve pas l'origine.

Ensuite, j'ai voulu adapter le code à la feuille d'origine et cela ne fonctionne plus, pourtant pas grand chose qui change (pour ma part).

L'erreur affichée : ligne dans la fonction TriAlpha
- redim t2(indexMaxi)
Valeur ou type de données incorrect(e). Index hors de la plage définie.

Ce qui change sur le fichier origine:

- le nom de l'onglet "Personnels" du fichier test (pourtant changé dans le code fichier origine).
- Le tri doit se faire sur A2:BP... au lieu de A2:i... moins de colonnes (sur fichier test)
- La cellule de choix de la liste (1 2 3) c'est la cellule i79 de l'onglet nommé "Paramètres" au lieu de C5 même nom d'onglet sur le fichier test.
Mais du fait que tu as intégré un tri au code, est-ce le même tri que "TriDataOps"
je n'arrive pas à trouver à quoi correspond toutes les valeurs (trop compliqué pour moi).

merci encore pour le temps consacré.
Bonne soirée à tous
Roby
LibreOffice 5.2.6.2 / LibreOffice 5.3 ( au Bureau ) "Par obligation de version".
Win 7 Pro

LibreOffice 6.2.5.2 ( Maison )
Win 10 Pro
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: [Calc] Mise à jour ListBox suivant OptionButtons

Message par Piaf »

Bonjour
Roby68 a écrit :Encore une petite chose, à quoi correspond le "fMenu"
Strictement à rien, c'est une procédure que j'avais copié dans une base de données comme aide mémoire pour le positionnement du dialogue et que j'ai oublié d'effacer.
Après pour les erreurs rencontrées, il faudrait que tu mettes en ligne un fichier (sans données confidentielles) mais avec la même structure que ton fichier de travail.
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Avatar de l’utilisateur
Roby68
Membre OOrganisé
Membre OOrganisé
Messages : 66
Inscription : 09 oct. 2013 21:12

Re: [Calc] Mise à jour ListBox suivant OptionButtons

Message par Roby68 »

Bonjour le Forum, Piaf

Ok pour le "fMenu".
En ce qui concerne mes erreurs, j'ai effectué l'import de tous mes onglets et agencement du fichier origine sur le fichier test que tu as modifié, et ca marche. Je ne saurai pas pourquoi pour l'instant.
J'essaye de rendre le fichier incriminé neutre et le mettrais en ligne.
Merci dans tous les cas pour l'avancé effectué.

Bonne fin d'après midi
Roby
LibreOffice 5.2.6.2 / LibreOffice 5.3 ( au Bureau ) "Par obligation de version".
Win 7 Pro

LibreOffice 6.2.5.2 ( Maison )
Win 10 Pro