[Résolu] [Calc] désactiver la sélection sur un Grid suite à un tri sur colonne

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 !
Dan33
Fraîchement OOthentifié
Messages : 4
Inscription : 19 sept. 2024 07:48

[Résolu] [Calc] désactiver la sélection sur un Grid suite à un tri sur colonne

Message par Dan33 »

Bonjour,
je sélectionne une ligne sur ma grille dans la listbox (ligne "pare-brise" dans l'exemple ci-dessous), je gère correctement l'affichage pour la modifier.
Mon problème survient si l'utilisateur, après la sélection de la ligne, fait un tri sur une colonne par exemple sur Traité et fait de nouveau une modification Il voit maintenant la ligne "Révision" sélectionnée mais l'affichage dans la modification est resté sur "Pare-brise"
J'ai déclaré un listener pour gérer les sélections dans la grille mais je n'arrive pas à détecter un tri sur colonne pour annuler la sélection.
J'ai cherché également une solution pour ne pas autoriser le tri sur colonne mais sans succès.
Auriez-vous une idée ?
Le code et les copies d'écran en pjs
Merci
pb grid.doc
Dan
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par micmac le 20 sept. 2024 08:34, modifié 1 fois.
Raison : Balisage
LibreOffice 7.6.7.2 sous Windows 10
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
Messages : 9580
Inscription : 28 août 2010 08:45

Re: comment désactiver la sélection sur un Grid suite à un tri sur colonne

Message par micmac »

Bonjour et bienvenue,

1- Cette section a des règles très précises que vous devez obligatoirement suivre pour obtenir de l'aide. C'est indiqué dans le cadre rouge en haut de la page.

Il est demandé aux auteurs de faire précéder le titre de leur question d'une balise adéquate. Ce balisage est extrêmement important car il permet d'avoir une base de connaissance optimum en cas de recherche.
Avez-vous remarqué comment étaient postées les autres questions ?

Lisez ce fil pour savoir quelle balise utiliser : sutra27295.html#27295

N'oubliez pas que les termes Macro, OpenOffice, LibreOffice ne doivent pas être employés car il sont implicites. Essayez de synthétiser au mieux ce que vous cherchez à faire.

Nous vous remercions de le faire lors de votre prochain passage.

2- Remarque : Vous joignez un document au format .doc, format propriétaire. Ici on utilise les formats ODF.

Veuillez séparer le code et la copie d'écran.
Pour poster votre code ou vos formules utilisez le bouton Afficher du codeImage (balises [code] et [ /code]) et collez-le code entre ces balises.
Ceci afin d'éviter aux bénévoles qui prennent sur leur temps, de télécharger votre fichier puis de l'ouvrir pour inspecter la macro en question.
Et la copie d'écran peut être jointe séparément, les formats images sont acceptés.

Merci de votre collaboration.
Touche Ctrl de Windows = touche cmd⌘ sur Mac
Outils > Options sur Windows = OpenOffice > Préférences sur macOS
Avatar de l’utilisateur
tintin
GourOOu
GourOOu
Messages : 9659
Inscription : 18 juil. 2008 15:29
Localisation : F-Oise + F-Savoie

Re: comment désactiver la sélection sur un Grid suite à un tri sur colonne

Message par tintin »

Bonjour et bienvenue,

En plus du code et, joignez le fichier dépersonnalisé vous faciliteriez l'obtention d'une solution adaptée.
AOO 4.1.15 et LibO 24.2.6 / macOS Intel 13.7.1 Ventura
Adoptium-temurinJDK-jre_1.8.0_432 / Firefox/Safari/Thunderbird /Time Machine+cloneCCC
Tutoriels du forum pour macOS
Pour sauvegarder vos documents c'est ceinture ET bretelles
Dan33
Fraîchement OOthentifié
Messages : 4
Inscription : 19 sept. 2024 07:48

Re: désactiver la sélection sur un Grid suite à un tri sur colonne

Message par Dan33 »

bonjour,

voici le fichier complet dépersonnalisé.
Comme il y a beaucoup de macros, il faut regarder le module Entretien
merci
Dan
planning_résa_véhicules_2024_forum.ods
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 7.6.7.2 sous Windows 10
Avatar de l’utilisateur
Bidouille
RespOOnsable forum
RespOOnsable forum
Messages : 12457
Inscription : 08 nov. 2005 16:23
Localisation : Caen, France

Re: désactiver la sélection sur un Grid suite à un tri sur colonne

Message par Bidouille »

Et donc, où est le balisage obligatoire dans votre titre ?
Modifié à votre place.

Inutile de nous fournir un document au format Microsoft.
Les images doivent être insérées directement ici sans avoir à télécharger quoi que ce soit.
capture1.png
capture2.png
Afin d'optimiser la recherche et l'indexage, il convient de publier le code directement dans le message :

Code : Tout sélectionner

Sub AfficherEntretien()
Dim ligneEntretienAuto As Integer
Dim ColTab0 As Object, ColTab1 As Object, ColTab2 As Object, ColTab3 As Object, oFont As Object, Columnmodel As Object, Cell as object
dim oEvt(1) as new com.sun.star.beans.PropertyValue

	'déclaration de la listebox qui sera insérée pour les interventions
	DlgModelEntretien = oDlgEntretien.getModel("ListEntretien")
	If DlgModelEntretien.hasByName("ListEntretien") Then
		DlgModelEntretien.RemoveByName("ListEntretien")
	end if
	
	'déclaration du tableau à l'intérieur de la listbox qui contiendra les données de résa
	GridModelEntretien = DlgModelEntretien.createInstance("com.sun.star.awt.grid.UnoControlGridModel")

	'taille et police du tableau
	With GridModelEntretien
	    .PositionX = 12 : .PositionY = 110 : .Width = 406 : .Height = 136  : oFont = .FontDescriptor : oFont.Name = "Courrier" : oFont.Height = 12 : oFont.Width = 5
		'permet de faire des selections multiples dans un grid control
		.SelectionModel = com.sun.star.view.SelectionType.MULTI
	End With
	
	'déclaration des colonnes du tableau
	Columnmodel = GridModelEntretien.ColumnModel
	ColTab0 = Columnmodel.createColumn() : ColTab0.Title = "Date Demande" : Columnmodel.addColumn(ColTab0)
	ColTab1 = Columnmodel.createColumn() : ColTab1.Title = "Date Intervention" : Columnmodel.addColumn(ColTab1)
	ColTab2 = Columnmodel.createColumn() : ColTab2.Title = "Lieu Intervention" : Columnmodel.addColumn(ColTab2)
	ColTab3 = Columnmodel.createColumn() : ColTab3.Title = "Type" : Columnmodel.addColumn(ColTab3)
	ColTab4 = Columnmodel.createColumn() : ColTab4.Title = "Observations" : Columnmodel.addColumn(ColTab4)
	ColTab5 = Columnmodel.createColumn() : ColTab5.Title = "Traité" : Columnmodel.addColumn(ColTab5)

	With ColTab0
		.ColumnWidth = "50"
		.Resizeable = False
	'	.ColumnSortMode = 0
	end With
	With ColTab1
		.ColumnWidth = "50"
		.Resizeable = False
	end With
	With ColTab2
		.ColumnWidth = "80"
		.Resizeable = False
	end With
	With ColTab3
		.ColumnWidth = "61"
		.Resizeable = False
	end With	
	With ColTab4
		.ColumnWidth = "132"
		.Resizeable = False
	end With
	With ColTab5
		.ColumnWidth = "20"
		.Resizeable = False
		.HorizontalAlign = 1
	end With
	

		'insertion du tableau dans la boite de dialogue
		DlgModelEntretien.InsertByName("ListEntretien", GridModelEntretien)

		'création d'un listener qui gère la ligne sélectionnée dans listbox des indispo		
		oGridEntretien = oDlgEntretien.getControl("ListEntretien")
		oListenerEntretien = CreateUnoListener("gridModelEntretien_", "com.sun.star.awt.grid.XGridSelectionListener")
		oGridEntretien.addSelectionListener(oListenerEntretien)

		DataModelEntretien = GridModelEntretien.GridDataModel
		
		'remplissage de la listbox avec les données du tableau mémoire
		For indiceTab = 0 To indtabEntretien - 1
			DataModelEntretien.AddRow(indiceTab, Array(tabEntretien(indiceTab, 0), tabEntretien(indiceTab, 1), tabEntretien(indiceTab, 2), tabEntretien(indiceTab, 3), tabEntretien(indiceTab, 4), tabEntretien(indiceTab, 5)))
		Next

		
		
End Sub
Merci de nous aider à garder la qualité de ce forum.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25602
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc] désactiver la sélection sur un Grid suite à un tri sur colonne

Message par Dude »

Salut,

A lire ta routine, tu utilises un contrôle table dans un dialogue.
Comme stipulé dans le suprême de code, mis à part l'écoute sur le changement de sélection, il n'existe pas d'autre événement disponible.

Et dans ton cas, Calc n'est pas l'outil idéal dans ce qui s'apparente à une base de données.
Les formulaires dans Base et le contrôle de table seraient sans nul doute plus souples.
Dan33
Fraîchement OOthentifié
Messages : 4
Inscription : 19 sept. 2024 07:48

Re: [Calc] désactiver la sélection sur un Grid suite à un tri sur colonne

Message par Dan33 »

merci pour ce retour, et à ma proposition de désactiver le tri sur les colonnes dans un grid, est-ce possible ?
Pour ma part, je n'ai pas trouvé.
Dan
LibreOffice 7.6.7.2 sous Windows 10
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25602
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc] désactiver la sélection sur un Grid suite à un tri sur colonne

Message par Dude »

Dan33 a écrit : 19 sept. 2024 18:31 Pour ma part, je n'ai pas trouvé.
En utilisant XRay, on peut voir qu'il y a une propriété booléenne ShowColumnHeader au niveau de la couche objet UnoGridModel :

capture.png
En désactivant l'entête des colonnes, le tri sera impossible.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dan33
Fraîchement OOthentifié
Messages : 4
Inscription : 19 sept. 2024 07:48

Re: [Calc] désactiver la sélection sur un Grid suite à un tri sur colonne

Message par Dan33 »

effectivement il suffit d'ajouter ce paramètre à False pour ne pas afficher les entêtes et de "dessiner" ces entêtes dans la boîte de dialogue indépendamment de la grid section
Excellente Idée

merci beaucoup :D
comme je suis nouveau, je tente de fermer la discussion en mettant résolu
LibreOffice 7.6.7.2 sous Windows 10
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
Messages : 9580
Inscription : 28 août 2010 08:45

Re: [Calc] désactiver la sélection sur un Grid suite à un tri sur colonne

Message par micmac »

La coche accrochée au titre du dernier message ne correspond pas au balisage recommandé.
Comment clore un sujet lorsqu'il est résolu
Touche Ctrl de Windows = touche cmd⌘ sur Mac
Outils > Options sur Windows = OpenOffice > Préférences sur macOS