Masquer/afficher lignes variables
Résolu
Nai
Messages postés
765
Statut
Membre
-
Nai Messages postés 765 Statut Membre -
Nai Messages postés 765 Statut Membre -
Bonjour la communauté ! :)
Je cherche à masquer/afficher des lignes dont le numéro varie. En effet, de nouvelles lignes sont ajoutées chaque jour et le numéro de ligne à masquer change.
J'ai bien trouvé ceci : https://www.excel-downloads.com/threads/vba-masquer-des-lignes-variables.210111/
Mais je n'ai pas du comprendre comment la macro fonctionne. Lorsque je la met dans un module, son exécution déclenche le débogueur. J'ai évidemment modifié LDEB et LFIN en les termes qui m’intéressent (en l'occurrence "total_reel_ta1" et "total_reel_ta4").
Quelqu'un peut-il m'expliquer où est mon erreur ?
Voici le fichier : https://www.cjoint.com/c/GDopNsFqrQn
L'idée est de masquer les détails sous les totaux (Total, Garçons, Filles). J'adapterais pour la feuille Réel et Prévisionnel.
Merci d'avance pour votre aide !
Je cherche à masquer/afficher des lignes dont le numéro varie. En effet, de nouvelles lignes sont ajoutées chaque jour et le numéro de ligne à masquer change.
J'ai bien trouvé ceci : https://www.excel-downloads.com/threads/vba-masquer-des-lignes-variables.210111/
Sub MacroNantes()
Dim ldebut As Integer
Dim lfin As Integer
ldebut = Range("LDEB")
lfin = Range("LFIN")
'Affiche toutes les lignes
Sheets("Véhicules").Select
Rows("1:1000").Select
Selection.EntireRow.Hidden = False
'Masque les lignes
Rows(ldebut & ":" & lfin).Select
Selection.EntireRow.Hidden = True
Range("A1").Select
End Sub
Mais je n'ai pas du comprendre comment la macro fonctionne. Lorsque je la met dans un module, son exécution déclenche le débogueur. J'ai évidemment modifié LDEB et LFIN en les termes qui m’intéressent (en l'occurrence "total_reel_ta1" et "total_reel_ta4").
Quelqu'un peut-il m'expliquer où est mon erreur ?
Voici le fichier : https://www.cjoint.com/c/GDopNsFqrQn
L'idée est de masquer les détails sous les totaux (Total, Garçons, Filles). J'adapterais pour la feuille Réel et Prévisionnel.
Merci d'avance pour votre aide !
A voir également:
- Masquer/afficher lignes variables
- Masquer conversation whatsapp - Guide
- Comment masquer les amis sur facebook - Guide
- Comment appeler en masquer - Guide
- Afficher taille dossier windows - Guide
- Windows 11 afficher d'autres options - Guide
4 réponses
Bonjour
Je n'ai pas bien compris ce que tu veux faire, mais as tu pensé à l'outil "Grouper et créer un plan" pour masquer/afficher un groupe de lignes avec un simple clic
Cdlmnt
Je n'ai pas bien compris ce que tu veux faire, mais as tu pensé à l'outil "Grouper et créer un plan" pour masquer/afficher un groupe de lignes avec un simple clic
Cdlmnt
Une macro reste envisageable pour des lignes variables, il suffit de savoir comment les repérer.
Il faudrait que tu précises quelles sont les lignes à masquer, dans quelle(s) feuille(s) etc ....
Cdlmnt
Il faudrait que tu précises quelles sont les lignes à masquer, dans quelle(s) feuille(s) etc ....
Cdlmnt
Dans le fichier joint, les lignes à masquer/afficher sont dans la feuille Prévisionnel (et aussi Réel, mais j'adapterais la macro ;) )
Les lignes 24 à 27 (les détails de la ligne 23)
Les lignes 29 à 32 (détails de la ligne 28)
34 à 37 (détails de la ligne 33).
C'est une macro qui me servirait dans d'autres feuilles (tous les détails n'ont pas toujours besoin d'être affichés (comme la feuille Récap par exemple)) ^^
Merci pour l'aide ! :)
Les lignes 24 à 27 (les détails de la ligne 23)
Les lignes 29 à 32 (détails de la ligne 28)
34 à 37 (détails de la ligne 33).
C'est une macro qui me servirait dans d'autres feuilles (tous les détails n'ont pas toujours besoin d'être affichés (comme la feuille Récap par exemple)) ^^
Merci pour l'aide ! :)
A mettre dans un module général (Module 2 par exemple)
Tu peux leur affecter un raccourci clavier ou les affecter à un bouton.
http://www.cjoint.com/c/GDouwk5PdFs
Cdlmnt
Tu peux leur affecter un raccourci clavier ou les affecter à un bouton.
Public Sub Masquer()
Dim obj As Object, liobj As Long
With ActiveSheet
Set obj = .Columns(cotot).Find("Total", , , xlWhole)
If obj Is Nothing Then MsgBox "le mot Total n'est pas en colonne " & cotot: Exit Sub
liobj = obj.Row
Rows(liobj + 1 & ":" & liobj + 4).Hidden = True
Rows(liobj + 6 & ":" & liobj + 9).Hidden = True
Rows(liobj + 11 & ":" & liobj + 14).Hidden = True
End With
End Sub
Public Sub Demasquer()
Dim lifin As Long
With ActiveSheet
lifin = 1000
Rows(1 & ":" & lifin).Hidden = False
End With
End Sub
http://www.cjoint.com/c/GDouwk5PdFs
Cdlmnt
Bonjour,
ccm81, ta macro est très bien, mais elle ne tient pas en compte l'ajout de ligne!
Je me suis permis de la corriger :
ccm81, ta macro est très bien, mais elle ne tient pas en compte l'ajout de ligne!
Je me suis permis de la corriger :
Option Explicit
Public Const cotot As String = "F"
Public Sub Masquer()
Dim obj As Object, liobjtotal, liobjgars, liobjfille As Long
Dim DernLigne As Long
DernLigne = Range("F65536").End(xlUp).Row
With ActiveSheet
Set obj = .Columns(cotot).Find("Total", , , xlWhole)
If obj Is Nothing Then MsgBox "le mot Total n'est pas en colonne " & cotot: Exit Sub
liobjtotal = obj.Row
Set obj = .Columns(cotot).Find("Garçons", , , xlWhole)
If obj Is Nothing Then MsgBox "le mot Garçons n'est pas en colonne " & cotot: Exit Sub
liobjgars = obj.Row
Set obj = .Columns(cotot).Find("Filles", , , xlWhole)
If obj Is Nothing Then MsgBox "le mot Filles n'est pas en colonne " & cotot: Exit Sub
liobjfille = obj.Row
Rows(liobjtotal + 1 & ":" & liobjgars - 1).Hidden = True
Rows(liobjgars + 1 & ":" & liobjfille - 1).Hidden = True
Rows(liobjfille + 1 & ":" & DernLigne).Hidden = True
End With
End Sub
Public Sub Demasquer()
Dim lifin As Long
With ActiveSheet
lifin = 1000
Rows(1 & ":" & lifin).Hidden = False
End With
End Sub
Merci ccm ^^ Je n'avais pas vu le fichier joint :/ Ctrl D et M c'est top, mais ça ne marche pas quand j’intègre la macro au fichier.
Merci Le Pivert, c'est nickel, parfait !
Pouvez-vous m'expliquer, en gros, à quoi correspondent les lignes. Ex :
Ou
Aussi, puis-je intégrer cette macro à une feuille, et non un module ? Je n'ai pas encore bien compris la différence entre l'intégration dans un module ou une feuille.
Merci à vous !
Merci Le Pivert, c'est nickel, parfait !
Pouvez-vous m'expliquer, en gros, à quoi correspondent les lignes. Ex :
Set obj = .Columns(cotot).Find("Filles", , , xlWhole) 'Pourquoi tant de virgule ?
Ou
Rows(liobjtotal + 1 & ":" & liobjgars - 1).Hidden = True
Aussi, puis-je intégrer cette macro à une feuille, et non un module ? Je n'ai pas encore bien compris la différence entre l'intégration dans un module ou une feuille.
Merci à vous !
Visuellement, je n'aime pas trop, mais ça fait ce que je souhaite ^^
Je pensais à une macro qui ferait exactement cela, mais en ajoutant un bouton plus proche des données à afficher/masquer. Une petite loupe par exemple.
Je pensais à un bouton unique (qui affiche et masque). Je me souviens avoir utilisé cela mais pour des lignes fixes.