Masquage ligne et colonne en fonction de la valeur des cellules

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 !!

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

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

22pour-boyoo.xlsm (19.13 Ko)

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

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

A+

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?

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 !

Rechercher des sujets similaires à "masquage ligne colonne fonction valeur"