Formule VBA pour masquer

Bonjour,

Je nage dans Excel.

j'essaie de créer une formule avec if pour masquer des colonnes et pour les faire apparaitre.

Range("A2").Select =0 "colonne c à u masqué"

Range("A2").Select =1 "colonne f à u masqué"

Range("A2").Select =2 "colonne i à u masqué"

Range("A2").Select =3 "colonne m à u masqué"

Range("A2").Select =4 "colonne r à u masqué"

Range("A2").Select =5 " aucune colonne masqué".

Merci de votre aide

Bonsoir

Dans votre cas vous pouvez utiliser un SELECT :

Application.ScreenUpdating = False ' afin d'éviter de montrer ce qui se passe
' on affiche tout
Range("C:U").EntireColumn.Hidden = False   
Select Case Range("A2")
    Case 0
        Range("C:U").EntireColumn.Hidden = True
    Case 1
        Range("F:U").EntireColumn.Hidden = True
' pas ce Case 5 car il y est d'office au début du code
End Select

Je n'ai pas inscrit tous les cas mais je pense que vous avez compris le principe.

@ bientôt

LouReeD

Merci de votre aide c'est top.

Merci @ vous pour vos remerciements !

@ bientôt

LouReeD

Bonjour j'ai besoin de votre aide.

J'ai essayé avec plusieurs

excel test

reprises de rentré le code mais, je fait toujours une erreur.

Rien ne se passe sur la feuille.

Merci.

Sub masque_les_colonnes() 'masquer les colonnes

Application.ScreenUpdating = False ' afin d'éviter de montrer ce qui se passe
' on affiche tout
Range("C:U").EntireColumn.Hidden = False
Select Case Range("A2")
Case 0
Range("C:U").EntireColumn.Hidden = True
Case 1
Range("F:U").EntireColumn.Hidden = True
Case 2
Range("J:U").EntireColumn.Hidden = True
Case 3
Range("O:U").EntireColumn.Hidden = True
Case 4
Range("R:U").EntireColumn.Hidden = True


' pas ce Case 5 car il y est d'office au début du code
End Select

End Sub

Bonne journée

Guillaume

Bonjour,

Chez moi la macro fonctionne correctement. Une précision cependant, souhaitez-vous que la macro se lance après action d'un bouton ou après changement de la valeur de la cellule A2 ?

Ceci à son importance, si c'est le 2ème comportement que vous souhaitez alors il faut apporter quelques modification au code proposé par LouReeD en la transformant en procédure événementielle de la feuille.

Cdlt,

Bonjour,

He oui manque de précision dans ma réponse ! Merci à vous Ergotamine pour cette dernière !

@ bientôt

LouReeD

Bonjour,

Oui c'est de ma faute je n'avais pas précisé.

J 'ai un menu déroulant dans A2 pour actionné la macro de 1 à 5

En sélectionnant je souhaite masquer les colonnes.

Mais je ne connais pas le code pour cette sélection, pouvez-vous me l'expliquer

Merci

Bonsoir,

Alors c'est Private Sub Worksheet_change, pour la mettre en place, mettez vous sur la feuille considérée, puis clic droit sur son onglet "afficher le code".

Dans la fenêtre de code VBA à droite il y a deux listes de choix sur le haut, celle de gauche vous sélectionnez Worksheet, sur celle de droite vous sélectionnez Change.

Vous copiez le code à "l'intérieure" de la sub qui vient de s'inscrire dans la fenêtre VBA.

Suis je assez claire ? Quand je dis le code je dis ce qui a été posté avec un petit ajout pour ne pas déclencher le code à chaque changement de valeur sur la feuille !

if target.address <> "$A$2" then exit sub
Application.ScreenUpdating = False ' afin d'éviter de montrer ce qui se passe
' on affiche tout
Range("C:U").EntireColumn.Hidden = False   
Select Case Range("A2")
    Case 0
        Range("C:U").EntireColumn.Hidden = True
    Case 1
        Range("F:U").EntireColumn.Hidden = True
' pas ce Case 5 car il y est d'office au début du code
End Select

On vérifie que le changement a bien lieu sur l'adresse A2 sinon on quitte la procédure.

@ bientôt

LouReeD

Bonjour …

2 exemples :

1- Array (tableau VBA)

Option Explicit
Dim P
Private Sub Worksheet_Change(ByVal R As Range)
    [A:U].EntireColumn.Hidden = 0
    'tableau dont la liste des index commence à 0 d'où le R-1
    P = Array([C:U], [F:U], [J:U], [O:U], [R:U])
    If R.Address = [A2].Address Then
        If R <> "" Then P(R - 1).EntireColumn.Hidden = 1
    End If
End Sub

Avec Option base=1 sous Option Explicit, le – 1 est à supprimer (début à 1)

2- Tableau structuré (évidemment à adopter)

Private Sub Worksheet_Change(ByVal R As Range)
    [A:U].EntireColumn.Hidden = 0
    If R.Address = [A2].Address Then
        If R <> "" Then Columns([TP[plage]].Rows(R).Text).EntireColumn.Hidden = 1
    End If
End Sub

TP : tableau à 2 colonnes :liste des cas (1, 22, ...,5) couplée avec les colonnes à masquer (C:U, F:U, ...,R:U)

5vu-pas-vu.xlsm (22.16 Ko)

Merci pour ces exemples et le modèle. Je vais me posé pour essayer de tout comprendre.

Je ne peux pas vous dire à charge de revanche je n'ai pas le niveau.

Bon weekend à vous.

Guillaume

Bonjour LouReeD

J'ai mis un peu de temps mais tout fonctionne merci pour les explications.

Bon week

Rechercher des sujets similaires à "formule vba masquer"