Cacher une colonne en fonction d'une cellule extérieure

Bonjour,

Je souhaiterais cacher une colonne entière, en fonction de la valeur présente dans une cellule extérieure à cette colonne. J'ai regardé dans la mise en forme conditionnelle mais il me semble que ça ne conviens pas puisque c'est une mise en forme en fonction d'une case qui n'est pas dans la colonne.

Merci d'avance de votre aide.

Bonjour,

Il faut un peu d'indications pour te répondre.

  • La cellule se trouve sur la même feuille ou pas ?
  • La colonne est cachée en fonction de quelle valeur dans cette cellule : 0 ou autre ?

Amicalement

Dan

Bonjour

Un exemple

https://www.excel-pratique.com/~files/doc2/Q9lIgClasseur2.xls

Maintenant, c'est vrai que les précisions manquent, y compris sur la colonne cachée ou masquée?

Cordialement

La cellule caché se trouve bien sur la même feuille et la valeur de la cellule est 0 ou 1 permettant donc d'afficher ou de cacher. (Cacher la colonne C lorsque la cellule B15 prend la valeur 0 et inversement).

Merci

Merci beaucoup pour l'exemple, je vais l'adapter à mon problème, mais je me demandais si il était possible de carrément supprimer la colonne et pas seulement masquer son contenu.

re,

La cellule caché se trouve bien sur la même feuille et la valeur de la cellule est 0 ou 1 permettant donc d'afficher ou de cacher. (Cacher la colonne C lorsque la cellule B15 prend la valeur 0 et inversement).

Est-ce toi qui met valeur 0 dans la cellule B15 ou est-ce que cette valeur vient d'une formule ?

Dan

La valeur est une saisie de l'utilisateur.

re,

  • Clique droite sur l'onglet dans lequel se trouve la cellule B15
  • choisis "visualiser le code"
  • colle le code ci-dessous
Private Sub Worksheet_Change(ByVal Target As Range)
'Macro dan pour E-Zekiel - 08/09/09
'http://forum.excel-pratique.com/viewtopic.php?t=13124
If Not Intersect(Target, Range("B15")) Is Nothing Then
If Target = 0 Then
Columns("C").EntireColumn.Hidden = True
Else: Columns("C").EntireColumn.Hidden = False
End If
End If
End Sub

Amicalement

Dan

C'est exactement ce qu'il me fallait merci beaucoup, je l'ai modifié pour qu'il corresponde exactement à mon tableau.

Il me manque juste encore une petite info, quel est l'opérateur que je doit mettre à la place du ? dans : Columns ("C"?"F") pour cacher deux colonne d'un coup.

Private Sub Worksheet_Change(ByVal Target As Range)
'Macro dan pour E-Zekiel - 08/09/09
'http://forum.excel-pratique.com/viewtopic.php?t=13124
If Not Intersect(Target, Range("B2")) Is Nothing Then
If Target = "false" Then
Columns("C").EntireColumn.Hidden = True
Else: Columns("C").EntireColumn.Hidden = False
End If
End If
End Sub

Avec toute ma reconnaissance

Bon, j'ai résolu le problème en copiant une deuxième fois le code que tu m'as gentillement fournis et en changeant le C en F. C'est pas joli mais ca fonctionne.

Merci encore et bonne journée !

Bonjour, Salut Dan,

Utilise le code suivant :

Range("C:C,F:F").EntireColumn.Hidden = True

Bonjour à toi Raja, ça fonctionne parfaitement !

Merci beaucoup à vous deux.

Désolé de vous embêter encore mais un problème persiste, en utilisant le code que vous m'avez donné, je l'ai multiplié pour les différentes colonne dont j'avais besoin mais je n'arrive pas a obtenir ce que je souhaiterai.

En fait, je souhaite que en fonction de la valeur de la case A2 qui varie de 2 à 8 certaine colonne soient caché (pour 2, de AF jusqu'a BC; pour 3 de AJ à Bc, ..., pour 7 de AZ jusqu'a BC; 8 rien ne se cache) comme vous le voyez dans la macro présente dans ce lien

https://www.excel-pratique.com/~files/doc2/Table_SO_au_choix.xlsm

Je pense qu'il faut que j'imbrique les conditions Si mais je n'arrive toujours pas à trouver le bon résultat.

Merci d'avance.

Bonsoir,

Si j'ai bien compris,

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    If Not Application.Intersect(Target, Range("a2")) Is Nothing Then
        Application.ScreenUpdating = False
        Range("b:BC").EntireColumn.Hidden = False 'affiche tout

    '*** masque les colonnes indiquées ****
        If Target = 8 Then End
        If Target = 7 Then Range("AZ:BC").EntireColumn.Hidden = True
        If Target = 6 Then Range("AV:BC").EntireColumn.Hidden = True
        If Target = 5 Then Range("AR:BC").EntireColumn.Hidden = True
        If Target = 4 Then Range("AN:BC").EntireColumn.Hidden = True
        If Target = 3 Then Range("AJ:BC").EntireColumn.Hidden = True
        If Target = 2 Then Range("AF:BC").EntireColumn.Hidden = True
    End If
End Sub

Fichier

https://www.excel-pratique.com/~files/doc2/Table_SO_au_choix_c1.xls

Amicalement

Claude.

edit: changé en numérique

C'était exactement ça qui me fallait! Merci beaucoup à toi !

Ce forum est vraiment parfait

Bonne journée à tout le monde

Si la réponse t'a satisfait, merci de remplir la petite formalité (à gauche en bas de page)

en étant connecté.

G4QXNresolu

Amicalement

Claude.

Bonjour à tous j'aurai besoin par rapport au dernier fichier présenté de pouvoir répéter la fonction située en A2 en A3 A4 A5ect et l'affichage des colonne se ferait en fonction de la celule active .

Par exemple A3 affiche B D E Et A4 affiche C P K si je clique sur A3 il m'affiche BDE etc

donc j'ai copié le code et tenté de le modifier :

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    If Not Application.Intersect(Target, Range("a2")) Is Nothing Then
        Application.ScreenUpdating = False
        Range("b:BC").EntireColumn.Hidden = False 'affiche tout

    '*** masque les colonnes indiquées ****
        If Target = 8 Then End
        If Target = 7 Then Range("AZ:BC").EntireColumn.Hidden = True
        If Target = 6 Then Range("AV:BC").EntireColumn.Hidden = True
        If Target = 5 Then Range("AR:BC").EntireColumn.Hidden = True
        If Target = 4 Then Range("AN:BC").EntireColumn.Hidden = True
        If Target = 3 Then Range("AJ:BC").EntireColumn.Hidden = True
        If Target = 2 Then Range("AF:BC").EntireColumn.Hidden = True
    End If

Option Explicit
Private Sub Worksheet_Change2(ByVal Target As Excel.Range)
    If Not Application.Intersect(Target, Range("a3")) Is Nothing Then
        Application.ScreenUpdating = False
        Range("b:BC").EntireColumn.Hidden = False 'affiche tout

    '*** masque les colonnes indiquées ****
        If Target = 8 Then End
        If Target = 7 Then Range("AZ:BC").EntireColumn.Hidden = True
        If Target = 6 Then Range("AV:BC").EntireColumn.Hidden = True
        If Target = 5 Then Range("AR:BC").EntireColumn.Hidden = True
        If Target = 4 Then Range("AN:BC").EntireColumn.Hidden = True
        If Target = 3 Then Range("AJ:BC").EntireColumn.Hidden = True
        If Target = 2 Then Range("AF:BC").EntireColumn.Hidden = True
    End If
End Sub

Mais j'obtiens beaucoup d'erreurs

Merci de votre soutien

Bonsoir,

Tu aurais dû continuer sur ton poste précédent !

lien: https://forum.excel-pratique.com/excel/probleme-pour-ouvrir-une-formule-t21358.html

Amicalement

Claude

Bonjour j'aurai besoin d'aide sur à peu près le même sujet je voudrais réussir à faire apparaitre ou disparaitre des cases de mon fichier en fonction du choix d'une cellule.

Exemple dans le fichier joint si E15=Yes alors la suite de la ligne est caché.

Si E15= No alors affiché la continuité de la ligne.

Je pense qu'il existe un truc simple mais je n'arrive pas à trouver

Rechercher des sujets similaires à "cacher colonne fonction exterieure"