Masquage ligne et colonne en fonction de la valeur des cellules Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
B
Boyoo974
Membre habitué
Membre habitué
Messages : 102
Inscrit le : 12 juillet 2018
Version d'Excel : 2010

Message par Boyoo974 » 31 août 2018, 14:37

Bonjour, je suis un initié en VBA,
Je souhaiterai faire une macro me permettant de masquer toutes les lignes contenant une valeur déterminée. Par exemple il faut masquer les lignes 2 et 4 car les cellules A2 et A4 contiennent les valeurs "A masquer".

De même pour les colonnes, il faudrait masquer les colonnes A et D car les cellules A1 et D1 contiennent les valeurs "A masquer".

Je n'ai pas trouvé de sujets similaires ^^

Merci beaucoup pour votre aide !!
G
Girodo
Membre dévoué
Membre dévoué
Messages : 629
Appréciations reçues : 35
Inscrit le : 24 mars 2015
Version d'Excel : 2010

Message par Girodo » 31 août 2018, 14:50

Salut,

Avec une macro évènementielle (Placée dans la zone This Workbook de VBA) on peut y arriver assez facilement.

Je t'ai fait un test qui fonctionne pour les colonnes de A à D. Si tu tapes "A masquer" Ta colonne se masque instantanément.

A toi d'adapter à tes besoins. (La logique est la même pour les lignes)

Girodo
Masquage colonne.xls
(31.5 Kio) Téléchargé 10 fois
Petit Chêne deviendra gland ! :btres:
Avatar du membre
Juice
Membre impliqué
Membre impliqué
Messages : 1'141
Appréciations reçues : 102
Inscrit le : 28 novembre 2017
Version d'Excel : Microsoft Excel 2010

Message par Juice » 31 août 2018, 15:14

Bonjour Boyoo ! Bonjour Girodo !

Pour ma part je ne passe pas par une macro évènementielle mais par un simple Sub !

Par contre le nombre de ligne et de colonne à vérifier sont variables.

C'est à dire que tu peux avoir 1 048 576 lignes à vérifier ou bien des colonnes jusqu'à XFD, la procédure les vérifieras toutes !

Vala ! Vala :3
Pour Boyoo.xlsm
(19.13 Kio) Téléchargé 10 fois
Dans l'incapacité de continuer à vous aidez sur vos fichiers, je vous prie de bien vouloir m'excuser et vous invite à ouvrir un nouveau sujet pour reprendre vos problèmes avec un membre actif du Forum.

En espérant revenir très vite :)
B
Boyoo974
Membre habitué
Membre habitué
Messages : 102
Inscrit le : 12 juillet 2018
Version d'Excel : 2010

Message par Boyoo974 » 31 août 2018, 18:55

Salut à vous deux,
Merci à vous deux pour votre rapidité!
Je n'ai pas réussi à trouver ton code Girodo,
J'ai utilisé celui de Juice qui fonctionne parfaitement !!!!
Merci beaucoup :)
Avatar du membre
curulis57
Passionné d'Excel
Passionné d'Excel
Messages : 3'747
Appréciations reçues : 226
Inscrit le : 4 janvier 2016
Version d'Excel : 2016 FR / 2019 FR

Message par curulis57 » 31 août 2018, 19:30

Salut Boyoo,
Salut l'équipe,

Pour un traitement global à partir d'un double-clic.
Code à coller dans le module VBA de la feuille à traiter.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'
Cancel = True
Application.ScreenUpdating = False
'
For x = 2 To WorksheetFunction.Max(Range("A" & Rows.Count).End(xlUp).Row, Cells(1, Columns.Count).End(xlToLeft).Column)
    If Cells(x, 1) = "A masquer" Then Rows(x).Hidden = True
    If Cells(1, x) = "A masquer" Then Columns(x).Hidden = True
Next
'
Application.ScreenUpdating = True
'
End Sub
Pour un traitement instantané au changement de valeur.
Code à coller dans le module VBA de la feuille à traiter.
Private Sub Worksheet_Change(ByVal Target As Range)
'
If (Target.Row = 1 And Target.Column > 1) Or (Target.Column = 1 And Target.Row > 1) Then _
    IIf(Target.Column = 1, Rows(Target.Row), Columns(Target.Column)).Hidden = IIf(Target = "A masquer", True, False)
'
End Sub
:btres:

8-)
A+
B
Boyoo974
Membre habitué
Membre habitué
Messages : 102
Inscrit le : 12 juillet 2018
Version d'Excel : 2010

Message par Boyoo974 » 31 août 2018, 20:14

Juice a écrit :
31 août 2018, 15:14
Bonjour Boyoo ! Bonjour Girodo !

Pour ma part je ne passe pas par une macro évènementielle mais par un simple Sub !

Par contre le nombre de ligne et de colonne à vérifier sont variables.

C'est à dire que tu peux avoir 1 048 576 lignes à vérifier ou bien des colonnes jusqu'à XFD, la procédure les vérifieras toutes !

Vala ! Vala :3
Juice, pourrais tu me dire comment limiter le traitement au 500 premiers lignes par exemple et à la colonne BZ par exemple?
Avatar du membre
Juice
Membre impliqué
Membre impliqué
Messages : 1'141
Appréciations reçues : 102
Inscrit le : 28 novembre 2017
Version d'Excel : Microsoft Excel 2010

Message par Juice » 3 septembre 2018, 09:19

Bonjour Boyoo, Bonjour le Fofo !

Excuse moi pour la lenteur de mon retour, mais les week-ends c'est sacré xD
Juice, pourrais tu me dire comment limiter le traitement au 500 premiers lignes par exemple
Avec un SI tu peux vérifier la valeur de ta variable "Ligne" :)
Dim ligne As Integer
ligne = Range("A" & Rows.Count).End(xlUp).Row
If ligne >= 500 Then
ligne = 500
End If
La tu dit à ton code que si la variable ligne est supérieur ou égal à 500, alors tu veux quelle soit égal 500 !
la colonne BZ par exemple?
Idem pour le nombre de colonne (Et je dit bien nombre, pas les lettres ;D)

Donc ta colonne BZ correspond à la 78ème colonne :
Dim colonne As Long
colonne = Cells.SpecialCells(xlCellTypeLastCell).Column
If colonne >= 78 Then
colonne = 78
End If
La tu dit que si ta variable colonne est supérieur ou égal à 78, alors tu veux quelle soit égal à 78 :)

Restant à ta dispo !
Dans l'incapacité de continuer à vous aidez sur vos fichiers, je vous prie de bien vouloir m'excuser et vous invite à ouvrir un nouveau sujet pour reprendre vos problèmes avec un membre actif du Forum.

En espérant revenir très vite :)
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message