Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 13/05/2023, à 04:51

claudius723

Macros pour masquer et afficher (Résolu)

Bonjour à tous, sous Calc, j'ai construit un tableau pour enregistrer ma comptabilité personnelle, pas de soucis, je maîtrise assez bien les fonctions, mais j'aimerais ajouter deux macros, afficher et masquer des lignes suivant un critère.
Je ne suis pas du tout familiarisé avec le langage Basic, aussi j'aurais besoin de quelqu'un pour m'écrire, ces deux codes
Mon tableau comporte 12 colonnes, lignes 6 à 450, critère R sur colonne 10.
En fait c'est l'auto filtre, que je veux remplacer par ces macros, commandes par deux bouton, j'ai bien construit la macro filtrer en utilisant les menus, mais cela ne marche pas avec l'auto filtre..
Alors voilà, je suis à disposition pour les renseignements complémentaires, et je remercie d'avance celui ou celle qui aura la gentillesse de me rendre ce service.

Bonne journée

Dernière modification par claudius723 (Le 14/05/2023, à 12:59)


Cordialement
Claudius723

Hors ligne

#2 Le 13/05/2023, à 09:06

lann

Re : Macros pour masquer et afficher (Résolu)

Une fois que tu as coché l'auto-filtre, tu cliques sur la flèche présente sur la première ligne de ta colonne 10 et tu choisis les données à afficher ou à masquer.

Hors ligne

#3 Le 13/05/2023, à 14:07

claudius723

Re : Macros pour masquer et afficher (Résolu)

Bonjour, oui je sais, mais je voudrais quand même avoir des macros en remplacement.


Cordialement
Claudius723

Hors ligne

#4 Le 13/05/2023, à 18:34

Rafbor

Re : Macros pour masquer et afficher (Résolu)

Bonjour,
voici 2 macros que j'ai réalisé rapidement en me basant sur la doc.
Il te reste à les affecter à des boutons.

REM  *****  BASIC  *****
Option Explicit

Sub FiltrerCol10
	Dim oSheet
	Dim oDataRange
	Dim oFilterDesc
	Dim oFields(0) As New com.sun.star.sheet.TableFilterField
  
	oSheet = ThisComponent.getSheets().getByIndex(0)
	' range à  filtrer
	oDataRange = oSheet.getCellRangeByName("A6:L450")
	' filtre
	oFilterDesc = oSheet.createFilterDescriptor(True)
	
	With oFields(0)
	' colonne 10 (base 0)
	.Field = 9
	' comparer en utilisant une chaine
	.IsNumeric = False
	' critères de filtre
	.StringValue = "R"
	.Operator = com.sun.star.sheet.FilterOperator.NOT_EQUAL
 	End With
  
	oFilterDesc.setFilterFields(oFields())
	oFilterDesc.ContainsHeader = False
	oDataRange.filter(oFilterDesc)
End Sub

Sub AnnulerFiltre
	Dim oSheet
	Dim oDataRange
	Dim oFilterDesc
  
	oSheet = ThisComponent.getSheets().getByIndex(0)
	' range à  filtrer
	oDataRange = oSheet.getCellRangeByName("A6:L450")
	' filtre
	oFilterDesc = oSheet.createFilterDescriptor(True)
  
	oFilterDesc.ContainsHeader = False
	oDataRange.filter(oFilterDesc)
End Sub

Xubuntu 22.04 - Mes projets sur Github

Hors ligne

#5 Le 13/05/2023, à 19:30

claudius723

Re : Macros pour masquer et afficher (Résolu)

Merci beaucoup Rafbor, je vais les copier et te tiendrais au courant
Bonne soirée


Cordialement
Claudius723

Hors ligne

#6 Le 14/05/2023, à 05:53

claudius723

Re : Macros pour masquer et afficher (Résolu)

Bonjour, j'ai copié les macros, elle fonctionnent parfaitement, mais j'ai un deuxième tableau presque identique avec une colonne en moins (11), j'ai renommé ces macros,(FiltrerCol9, AnnulerFiltre9) modifié le nombre de lignes (A6:K171) et le n° de colonne avec R (8) mais là cela ne fonctionne pas, pourquoi ?
D'autre part, je ne sais pas pourquoi quand je rentre une nouvelle date dans une cellule, elle se transforme en nombre (45069), j'ai du faire une mauvaise manip ?
Bien à vous.


Cordialement
Claudius723

Hors ligne

#7 Le 14/05/2023, à 07:31

Rafbor

Re : Macros pour masquer et afficher (Résolu)

On est toujours dans le même fichier ? Si oui, ton 2ème tableau doit être situé dans une autre feuille, vu qu'il commence en A6 comme le 1er ?
La macro sélectionne la 1ere feuille qui à l'index 0, via la ligne

oSheet = ThisComponent.getSheets().getByIndex(0)

Si tu veux sélectionner une autre feuille, il faut mettre le bon index ou alors utiliser la sélection par le nom de la feuille

oSheet = ThisComponent.Sheets.getByName("NOM_FEUILLE")

Pour ta question sur la date, c'est sûrement à cause du format de la cellule, à passer en format date.


Xubuntu 22.04 - Mes projets sur Github

Hors ligne

#8 Le 14/05/2023, à 12:58

claudius723

Re : Macros pour masquer et afficher (Résolu)

Merci Rafbor, tout fonctionne parfaitement.
Bon Dimanche


Cordialement
Claudius723

Hors ligne