[Résolu] [Calc] masquer et afficher ligne conditionnelle

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 !
01power
Membre OOrganisé
Membre OOrganisé
Messages : 52
Inscription : 20 juin 2023 11:35

[Résolu] [Calc] masquer et afficher ligne conditionnelle

Message par 01power »

Salut à tous

ce matin j'ai mis a jour mon PC vers W11, et après redémarrage de mon PC libre office s'était mis à jour vers la version 7.6.4.1, je ne sais pas à quelle version j'était avant. > Libre office n'a pas changé de version, juste son apparence à changer légèrement avec le passage à W11

mon soucis est que pour un de mes documents j'avais une macro pour masquer des lignes selon une valeur (0 ou 1) dans une colonne, cette valeur était un résultat d'une formule de condition de la ligne. la fonction masquage était actionné ou actualisé uniquement lorsque je cliquais sur l'icone de la macro que j'avais mis dans la barre d'outils, le réaffichage des lignes par une autre macro et autre bouton,

il me semblais avoir mis la macro dans le document justement pour évité de la perdre car c'était mon seul document nécessitant ces macro.
j'utilisais cette macro depuis environ 18 mois et sans problèmes,

après avoir relancer mon document et ajouté du contenu dans celui ci, j'ai sauvegardé le document. j'ai ensuite voulu contrôlé un des éléments qui était sur une des lignes masqué c'est là que je me suis aperçus que mes macro ne fonctionnait plus, et même disparu.

depuis 9h ce matin je cherche cette macro sur internet, sur ce forum, je ne la retrouve pas, je ne sais pas si c'est moi qui cherche mal mais ça me rend dingue. Alors que je l'avais trouvé sur ce forum sans embêté tout le monde.
J'ai même demandé à chat gpt de l'aide pour la reconstruire, après plusieurs tentatives, j'ai eu une macro qui ne fais pas bien le boulot : qui me masque toutes les lignes remplis sans tenir compte de la valeur résultante dans les cellules de la colonne "T"
et qui met un temps anormal : plusieurs minutes avant que le travail de la macro soit effectif alors qu'avant la mise à jour de l'affiche était instantané

Macro donné par chat gpt pour masqué les lignes

Code : Tout sélectionner

Sub MaquerLignecondition1
 Dim oFeuille As Object
 Dim oCell As Object
 Dim oLigne As object
 Dim i AS Long
 Dim iLastRow As Long
 Dim oColonneT As Object
 
 oFeuille = ThisComponent.CurrentController.ActiveSheet
 oColonneT = oFeuille.getCellRangeByName("T1:T1048576")
 	For IlastRow = oColonneT.Rows.Count -1 To 0 Step -1
 	If oFeuille.getCellByPosition(19,iLastRow).Type <> com.sun.star.table.CellContentType.EMPTY Then
 	Exit For
 	End If
 	Next iLastRow
 	
 	
 
 For i = 0 to iLastRow
 	oCell = OFeuille.getCellByPosition(19,i)
 	oLigne = oFeuille.Rows.getByIndex(i)
 	If oCell.Type = com.sun.star.table.CellContentType.VALUE Then
 	oLigne.IsVisible = (oCell.Value = 1)
 	Else oLigne.IsVisible = False
 	End If
 	Next i
 End Sub
les macro que je trouve ne sont pas celle que je cherche, la bonne macro était plus courte que celle donné par chat GPT mais était très semblable.

je suis pas doué pour la programmation donc créer une macro c'est pas vraiment dans mes cordes

merci à ceux qui voudront bien m'aider
Dernière modification par 01power le 28 avr. 2025 08:49, modifié 2 fois.
sous W11 depuis le 15/4 et libre office 24.8.7 depuis le 12/5 à 13h40
Avatar de l’utilisateur
yclik
HédOOniste
HédOOniste
Messages : 1823
Inscription : 15 déc. 2010 08:33

Re: [calc] [LIBO] macro perdue masquer et afficher ligne conditionnelle

Message par yclik »

Bonjour
un exemple avec des macros glanées sur ce forum :D

Code : Tout sélectionner

sub MasquerTout
Dim oDoc as Object, oFl as object, oZones as object, oZone as object, oLig as object, oCellLigne as integer
Dim oCell as object
Dim oCellValue as double

oDoc = ThisComponent
oF1=oDoc.Sheets(0)'la feuille 1
	for i=2 to 100
		oCell = oF1.getCellRangeByName("T"&i) 'adresse cell
		oCellValue = oCell.Value ' lecture  cellule 
			if oCellValue=1 then  oCell.Rows.IsVisible = False
	next 

End Sub

sub AfficherTout

Dim oDoc as Object, oFl as object
Dim oCell as object
oDoc = ThisComponent
oF1=oDoc.Sheets(0)'la feuille 1
for i=2 to 100
	oCell = oF1.getCellRangeByName("T"&i) 'adresse cell
	oCell.Rows.IsVisible = True
next 
End Sub
OpenOffice 4.1.14 sous Windows 11
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
Messages : 9821
Inscription : 28 août 2010 08:45

Re: [calc] [LIBO] macro perdue masquer et afficher ligne conditionnelle

Message par micmac »

Bonjour,

Vous voudrez bien corriger le titre de votre question < [calc] [LIBO] macro perdue masquer et afficher ligne conditionnelle > où la balise de module doit être orthographiée [Calc] et non [calc] et la balise [LibO] est inutile.
01power a écrit : 15 avr. 2025 14:46 ce matin j'ai mis a jour mon PC vers W11, et après redémarrage de mon PC libre office s'était mis à jour vers la version 7.6.4.1, je ne sais pas à quelle version j'était avant.
Cette version de Lib0 est, de toute façon obsolète.
Voyez comment être à jour de la dernière version.
Accès direct à votre signature pour la corriger.
Touche Ctrl de Windows = touche cmd⌘ sur Mac
OpenOffice > Outils > Options sur Windows = OpenOffice > Préférences sur macOS
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25977
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [calc] [LIBO] macro perdue masquer et afficher ligne conditionnelle

Message par Dude »

Merci de corriger ton titre comme le demande le modo pour continuer à recevoir des réponses.
01power a écrit : 15 avr. 2025 14:46la bonne macro était plus courte que celle donné par chat GPT mais était très semblable.
Faut surtout arrêter avec ChatProut :lol:

01power a écrit : 15 avr. 2025 14:46 masque toutes les lignes remplis sans tenir compte de la valeur résultante dans les cellules de la colonne "T"
Une valeur, c'est quoi ? Une chaîne, un nombre, le résultat d'une formule...
Comme toujours...
Image
Comment joindre un fichier au format ODS
Pense également à dépersonnaliser le fichier joint.
01power
Membre OOrganisé
Membre OOrganisé
Messages : 52
Inscription : 20 juin 2023 11:35

Re: [calc] [LIBO] macro perdue masquer et afficher ligne conditionnelle

Message par 01power »

le résultat de la formule est un 1 ou un 0
je ne suis pas un fan non plus de chat gpt et lui il n'a pas réussi dans cette tâche, mais je ne voulais pas déranger inutilement.

je n'ai pas joint de document car il n'y avait rien d'utile,

petite erreur de ma part, j'était en 7.6.4.1 avant la mise a jour de W10 vers W11, mais la macro à quand même disparu je ne peux affirmé que la macro était dans le document ou le logiciel, ma mémoire n'est pas aussi précise après environ 18 mois d'utilisation (elle fonctionnait bien sous open office avant que je passe à libre office)

mon document est déjà à plus de 400 lignes remplis, le code donné par @yclic fonctionne (après quelques corrections faciles), et se limitait à la ligne 100,

je l'ai modifier pour que ça aille jusqu'à la ligne 10000 mais est lent, je l'ai donc modifier pour se limité à la ligne 5000, mais c'est encore lent de quelques seconde à plus de 1 min
avant je n'avais pas de limites de lignes et c'était presque instantané

bribes de souvenir de l'ancienne macro :
- avant on ne cherchait pas la colonne T mais la colonne 19, (je sais c'est presque pareil)
- il me semble qu'il n'y avait pas de valeur mini et maxi pour les lignes début et fin

dans la macro donné pa yclic, le parametre i n'etait pas déclaré, je l'ai mis en I as long mais si changer son type rend plus rapide ça m'intéresse

j'ai essayer avec i as boolean, et i as string, dans les 2 cas ça me déclare une erreur dans la macro

i ne peut être que à 0 ou à 1

Code : Tout sélectionner

sub MasquerTout
Dim oDoc as Object, oF1 as object, oZones as object, oZone as object, oLig as object, oCellLigne as integer
Dim oCell as object , i as Long
Dim oCellValue as double

oDoc = ThisComponent
oF1=oDoc.Sheets(0)'la feuille 1
	for i=2 to 5000
		oCell = oF1.getCellRangeByName("T"&i) 'adresse cell
		oCellValue = oCell.Value ' lecture  cellule 
			if oCellValue=1 then  oCell.Rows.IsVisible = False
	next 

End Sub

sub AfficherTout

Dim oDoc as Object, oF1 as object, i as Long
Dim oCell as object
oDoc = ThisComponent
oF1=oDoc.Sheets(0)'la feuille 1
for i=2 to 5000
	oCell = oF1.getCellRangeByName("T"&i) 'adresse cell
	oCell.Rows.IsVisible = True
next 
End Sub
sous W11 depuis le 15/4 et libre office 24.8.7 depuis le 12/5 à 13h40
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25977
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [calc] [LIBO] macro perdue masquer et afficher ligne conditionnelle

Message par Dude »

01power a écrit : 16 avr. 2025 13:09 je n'ai pas joint de document car il n'y avait rien d'utile,
C'est toi qui voit.
Bon courage pour tes lenteurs.
Avatar de l’utilisateur
yclik
HédOOniste
HédOOniste
Messages : 1823
Inscription : 15 déc. 2010 08:33

Re: [Calc] LIBO : macro perdue masquer et afficher ligne conditionnelle

Message par yclik »

Bonjour
en complément de ma 1ere réponse
le classeur avec la macro
masquer ligne si 1 bis.ods
et la macro "nettoyée" :D

Code : Tout sélectionner

sub MasquerTout
Dim oDoc as Object, oFl as object
Dim oCell as object
Dim oCellValue as double

oDoc = ThisComponent
oF1=oDoc.Sheets(0)'la feuille 1
	for i=2 to 100
		oCell = oF1.getCellRangeByName("T"&i) 'adresse cell
		oCellValue = oCell.Value ' lecture  cellule 
			if oCellValue=1 then  oCell.Rows.IsVisible = False
	next 

End Sub

sub AfficherTout

Dim oDoc as Object, oFl as object
Dim oCell as object
oDoc = ThisComponent
oF1=oDoc.Sheets(0)'la feuille 1
for i=2 to 100
	oCell = oF1.getCellRangeByName("T"&i) 'adresse cell
	oCell.Rows.IsVisible = True
next 
End Sub
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
OpenOffice 4.1.14 sous Windows 11
01power
Membre OOrganisé
Membre OOrganisé
Messages : 52
Inscription : 20 juin 2023 11:35

Re: [Calc] LIBO : macro perdue masquer et afficher ligne conditionnelle

Message par 01power »

merci @yclic

mais quand tu déclare les variables tu déclare oFl au lieur de oF1, et tu n'appel pas i ça me met des erreur pour ces 2 éléments

pour quoi y t'il besoins de d'indiqué une plage pour les lignes : for i = 2 to 100 ?

à cette heure mon fichier fais environ 450 lignes remplis et augmente de jours en jours

autre truc de dingue, ton fichier fonctionne bien avec ton code alors que sur le mien il m'indique un problème avec l'absence appel des variables utilisé
mais pas avec mon document

dans mon fichier il y a les macro de chat gpt et de yclic et normalement les boutons qui doivent apparaitre dans les barres d'outils (associé au macro de yclic).
Ces macro ne fonctionnent que sur la feuille 1,
la macro disparu fonctionnait sans restriction de lignes ni de page et était super rapide malgré les quantités de lignes remplis des différentes feuilles

maintenant que j'ai une macro fonctionnelle (partiellement) ça a un intérêt de joindre le document
Tableau règlements factures vide.ods
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
sous W11 depuis le 15/4 et libre office 24.8.7 depuis le 12/5 à 13h40
Avatar de l’utilisateur
Dolev
SuppOOrter
SuppOOrter
Messages : 1141
Inscription : 19 août 2018 05:20

Re: [Calc] LIBO : macro perdue masquer et afficher ligne conditionnelle

Message par Dolev »

Bonsoir,
01power a écrit : 16 avr. 2025 16:06 maintenant que j'ai une macro fonctionnelle (partiellement) ça a un intérêt de joindre le document
Bof, vous ne donnez aucune explication pour nous aider à comprendre.
Sur quelle feuille la macro doit agir ?
Si c'est sur la feuille active, il faut utiliser

Code : Tout sélectionner

oCC = oDoc.getCurrentController()
oFeuille = oCC.getActiveSheet()
Open Office 4.1.15 sous Windows 11
01power
Membre OOrganisé
Membre OOrganisé
Messages : 52
Inscription : 20 juin 2023 11:35

Re: [Calc] masquer et afficher ligne conditionnelle

Message par 01power »

bonjour, merci pour cette réponse

en effet je me suis peut être mal exprimé, je compare avec le fonctionnement que j'avais sans précisé la portée ou limitations souhaité.

le top serait de retrouvé la macro que j'avais. mais personne n'est devin.

l'ancienne macro n'avait pas de limitation que ce soit au nombres de feuilles ou au nombre de cellules raison des 0 forcé dans la colonne T de la 4eme feuille.

ce document étant en constante évolution, il est possible que je rajoute des feuilles pouvant nécessité l'utilisation de la macro.
merci @Dolev, j'ai réussi à implémenté correctement ces 2 lignes de macro, qui à l'avantage de fonctionné sur toutes les page du moment que c'est la page active.

suite au 2eme plantage pour surchauffe du processeur de la vie de ce PC survenue hier, j'ai installer un outils de surveillance de température du processeur. "le premier plantage de surchauffe il y a 1 mois était à cause d'une personne qui à accidentellement bouché les 2 principales entrées d'aire".

mon processeur est un i5 et j'ai remarqué que lorsque je masque les lignes en général ça prend quelques secondes, mais quand je fais affiché c'est bien plus long et les processeur passe de ~40° à ~70° voire plus. je comprend que plus il y a de lignes à traité plus ça peut être long et nécessité de ressources, mais ce que je ne comprend pas c'est : pour quoi mon ancienne macro était bien plus rapide en s'appliquant à toutes les feuilles en même temps et ne semblais pas avoir de limite de lignes.

pour quoi un tableau avec une macro aussi simple arrive à consommé plus de ressources que fusion 360 ?
ok ce pc à plus de 10 ans mais il faisait tourné "fallout New vegas" en 1080P 60Fps, sans surchauffé et sans dépassé les 80% de charge processeur, et la configuration n'a pas changer depuis

la configuration au cas où :
carte mère asus "gamer" de l'époque
processeur i5-3470 à 3.2 ghz
16 Go de ram (le teste memoire me donne 15.95 go de ram
carte graphique asus Nvidia gefore GTS450 1 GO
os W11 sur SSD crucial de 250 Go
sous W11 depuis le 15/4 et libre office 24.8.7 depuis le 12/5 à 13h40
Avatar de l’utilisateur
Dolev
SuppOOrter
SuppOOrter
Messages : 1141
Inscription : 19 août 2018 05:20

Re: [Calc] masquer et afficher ligne conditionnelle

Message par Dolev »

Bonsoir,
01power a écrit : 17 avr. 2025 07:23 merci @Dolev, j'ai réussi à implémenté correctement ces 2 lignes de macro, qui à l'avantage de fonctionné sur toutes les page du moment que c'est la page active.
Si le fil est résolu, indiquez le.
Open Office 4.1.15 sous Windows 11
01power
Membre OOrganisé
Membre OOrganisé
Messages : 52
Inscription : 20 juin 2023 11:35

Re: [Calc] masquer et afficher ligne conditionnelle

Message par 01power »

Dolev a écrit : 17 avr. 2025 18:53 Bonsoir,

Si le fil est résolu, indiquez le.
malheureusement je ne peu pas considéré le problème résolu, la lenteur anormale est directement lié à la macro et à libre office qui prend trop de ressources pour l'exécuté.

y a t'il une solution pour la rendre plus légère sur sa consommation de ressources ?
sous W11 depuis le 15/4 et libre office 24.8.7 depuis le 12/5 à 13h40
Avatar de l’utilisateur
Dolev
SuppOOrter
SuppOOrter
Messages : 1141
Inscription : 19 août 2018 05:20

Re: [Calc] masquer et afficher ligne conditionnelle

Message par Dolev »

01power a écrit : 17 avr. 2025 07:23 mais quand je fais affiché c'est bien plus long
Toujours aucune explication sur ce qui est censé être plus long.
Si c'est de démasquer les lignes, avec l'enregistreur de macro, je n'ai pas de lenteur :

Code : Tout sélectionner

sub DemasqueLignes
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "A8"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())

rem ----------------------------------------------------------------------
dim args2(1) as new com.sun.star.beans.PropertyValue
args2(0).Name = "By"
args2(0).Value = 1
args2(1).Name = "Sel"
args2(1).Value = false

dispatcher.executeDispatch(document, ".uno:GoDown", "", 0, args2())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:SelectData", "", 0, Array())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:ShowRow", "", 0, Array())


end sub
Open Office 4.1.15 sous Windows 11
01power
Membre OOrganisé
Membre OOrganisé
Messages : 52
Inscription : 20 juin 2023 11:35

Re: [Calc] masquer et afficher ligne conditionnelle

Message par 01power »

bonjour,

parfois on oublie de réfléchir, je vais testé le document avec la macro sur d'autres PC, le problème est peut être lié à l'os je teste ça et je vous fais le retour dès que possible
sous W11 depuis le 15/4 et libre office 24.8.7 depuis le 12/5 à 13h40
01power
Membre OOrganisé
Membre OOrganisé
Messages : 52
Inscription : 20 juin 2023 11:35

Re: [Calc] masquer et afficher ligne conditionnelle

Message par 01power »

salut a tous je reviens vers vous avec plus d'info

le problème de surchauffe était lié a mon ventirad et pate thermique qui était en fin de vie, avec un petit water cooler je ne dépasse plus les 30°
j'ai ensuite re testé, j'ai toujours entre 3 et 20s de latence pour le masquage et plus de 40 seconde pour le démasquage des lignes.

j'ai testé mon document sur 4 autres Pc avec différentes versions de Windows et différentes version de libre office et open office.

avec les mêmes macro masquer et démasquer, j'ai constaté les même lenteurs. (macro donné par @yclic avec le paramètre i a 5000 lignes)

par contre quand je fais tout sélectionné clic droit et affiché les lignes c'est instantané.

@Dolev je ne suis déjà pas doué avec les macro (j'arrive globalement a comprendre ce que je lis, mais incapable d'en créer une), mais pour ce qui est de l'enregistreur de macro, je comprend juste que ça utilise la macro "DemasqueLignes", pour le reste je suis incapable de comprendre le résultat, ni pour quoi ça parle de la valeur "A8" qui semble désigné une cellule qui n'a aucune influence sur les conditions de masquage de mon document

mais je ne sais pas sur quel document, ni quelle version de la macro, même si j'espère que c'est avec le document que j'ai joint que vous avez fais le test. Je trouve que le fait que ce soit instantané de votre coté, alors que mes tests sur plusieurs Os et version de l'application me donne les mêmes lenteurs que sur mon pc principal me surprend.

je comprend bien qu'une partie de la lenteur est directement lié au nombre de lignes à traité,

j'avais mis i à 5000 car j'ai fais plus de 400 lignes en environ 21 mois, et que je ne souhaite pas modifier ma macro tout les 4 matins
sous W11 depuis le 15/4 et libre office 24.8.7 depuis le 12/5 à 13h40
Avatar de l’utilisateur
yclik
HédOOniste
HédOOniste
Messages : 1823
Inscription : 15 déc. 2010 08:33

Re: [Calc] masquer et afficher ligne conditionnelle

Message par yclik »

Bonjour
reprise de la macro de démasquage, a priori aussi rapide, avec la même structure que la macro de masquage.

Code : Tout sélectionner

sub MasquerTout
Dim oDoc as Object, oFl as object
Dim oCell as object
Dim oCellValue as double
oDoc = ThisComponent
oF1=oDoc.Sheets(0)'la feuille 1
	for i=2 to 5000
		oCell = oF1.getCellRangeByName("T"&i) 'adresse cell
		oCellValue = oCell.Value ' lecture  cellule 
			if oCellValue=1 then  oCell.Rows.IsVisible = False
	next 
End Sub


sub AfficherTout
Dim oDoc as Object, oFl as object
Dim oCell as object
oDoc = ThisComponent
oF1=oDoc.Sheets(0)'la feuille 1
	for i=2 to 5000
	oCell = oF1.getCellRangeByName("T"&i) 'adresse cell
	oCellValue = oCell.Value ' lecture  cellule 
		if oCellValue=1 then  oCell.Rows.IsVisible = True
	next 
le classeur avec des 1 de T4993 à T4999
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
OpenOffice 4.1.14 sous Windows 11
01power
Membre OOrganisé
Membre OOrganisé
Messages : 52
Inscription : 20 juin 2023 11:35

Re: [Calc] masquer et afficher ligne conditionnelle

Message par 01power »

merci @yclik

je ne sais pour quelle raison ton code marche chez toi, mais de mon coté ça me dis qu'il y a des erreurs, j'ai réussi à complété je n'ai plus qu'une latence d'environ 15s mais aussi bien au masquage qu'au démasquage des lignes

la latence de 15s c'est pas aussi génial que le presque instantané que j'avais avant, Mais c'est bien mieux que le plus 1min que j'obtenais avec la dernière macro. donc encore merci à @yclic, et à tout ceux qui m'ont aidé ou tenté d'aider

Ci dessous les Macros fonctionnelles, en espérant que ça en aide d'autres

Code : Tout sélectionner

Option Explicit

sub MasquerTout
Dim oDoc as Object, oF1 as object
Dim oCell as object , i as Long
Dim oCellValue as double, oCC as object
oDoc = ThisComponent
oCC = oDoc.getCurrentController()
oF1 = oCC.getActiveSheet()
	for i=2 to 5000
		oCell = oF1.getCellRangeByName("T"&i) 'T est la colonne et don changeable et i la variable adresse cellule
		oCellValue = oCell.Value ' lecture  cellule 
			if oCellValue=1 then  oCell.Rows.IsVisible = False
	next 

End Sub

sub AfficherTout
Dim oDoc as Object, oF1 as object, i as Long
Dim oCell as object, oCC as object
Dim oCellValue as double
oDoc = ThisComponent
oCC = oDoc.getCurrentController()
oF1=oCC.getActiveSheet()'la feuille 1
	for i=2 to 5000
		oCell = oF1.getCellRangeByName("T"&i) 'adresse cell
		oCellValue = oCell.Value ' lecture  cellule 
			if oCellValue=1 then  oCell.Rows.IsVisible = true
	next 
End Sub
sous W11 depuis le 15/4 et libre office 24.8.7 depuis le 12/5 à 13h40
Avatar de l’utilisateur
Dolev
SuppOOrter
SuppOOrter
Messages : 1141
Inscription : 19 août 2018 05:20

Re: [Calc] masquer et afficher ligne conditionnelle

Message par Dolev »

Re,
01power a écrit : 28 avr. 2025 08:43 la latence de 15s c'est pas aussi génial que le presque instantané que j'avais avant
:shock: La macro que je vous propose rend instantané le démasquage.
Open Office 4.1.15 sous Windows 11
01power
Membre OOrganisé
Membre OOrganisé
Messages : 52
Inscription : 20 juin 2023 11:35

Re: [Calc] masquer et afficher ligne conditionnelle

Message par 01power »

@Dolev, tu parles de celle ci-dessous ? si oui je croyais que c'était un enregistrement de macro (une sorte de rapport d'analyse d'une exécution de macro)

peux tu m'expliqué l'usage de "A8", n'étant pas doué pour le monde de la programmation, je ne comprend pas tout, et j'ai ce besoins de comprendre pour adapté ou corriger si besoins. si j'interprète avec mes maigre compétences : on cherche à lire la case A8

je souhaite être sur de comprendre un minimum comment ça marche pour l'intégré correctement et le testé sur mon tableau
Dolev a écrit : 18 avr. 2025 17:17
01power a écrit : 17 avr. 2025 07:23 mais quand je fais affiché c'est bien plus long
Toujours aucune explication sur ce qui est censé être plus long.
Si c'est de démasquer les lignes, avec l'enregistreur de macro, je n'ai pas de lenteur :

Code : Tout sélectionner

sub DemasqueLignes
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "A8"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())

rem ----------------------------------------------------------------------
dim args2(1) as new com.sun.star.beans.PropertyValue
args2(0).Name = "By"
args2(0).Value = 1
args2(1).Name = "Sel"
args2(1).Value = false

dispatcher.executeDispatch(document, ".uno:GoDown", "", 0, args2())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:SelectData", "", 0, Array())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:ShowRow", "", 0, Array())


end sub
sous W11 depuis le 15/4 et libre office 24.8.7 depuis le 12/5 à 13h40