Afficher/Maquer des colonnes

Résolu/Fermé
Villette54 Messages postés 300 Date d'inscription vendredi 15 mars 2013 Statut Membre Dernière intervention 31 juillet 2018 - Modifié par Villette54 le 12/07/2013 à 14:06
Villette54 Messages postés 300 Date d'inscription vendredi 15 mars 2013 Statut Membre Dernière intervention 31 juillet 2018 - 15 juil. 2013 à 09:24
Bonjour,

Je voudrais savoir s'il est possible de modifier des colonnes en fonction d'un menu déroulant ?

Je m'explique :

Admettons que j'ai une liste déroulante dans ma colonne A (Permis) avec 2 options (Oui / Non)
Je souhaiterais savoir s'il était possible de faire apparaître ou disparaître des colonnes en fonction du résultat (Si "Oui" dans la colonne A, alors la colonne demande la date d'obtention en B apparaît si "Non" elle reste masquée)

Merci par avance pour vos réponses

PS : Pour le moment il s'agit juste d'une question, je ne sais pas ce qu'il est possible de faire avec VBA, masquer des colonnes (.hide ?) ou les afficher (.unhide ? // .ShowAllData ?)
Si vous pensez que cela est possible je joindrais alors un fichier pour que ce soit plus simple

3 réponses

rEVOLV3r Messages postés 223 Date d'inscription jeudi 12 août 2010 Statut Membre Dernière intervention 21 septembre 2022 28
12 juil. 2013 à 14:09
Bonjour,

J'ai fais exactement cela pour un ami dernièrement, mais à l'aide de cases à cocher et non d'un menu déroulant.

Je peux vous expliquer en détail si cela vous intéresse.
0
Villette54 Messages postés 300 Date d'inscription vendredi 15 mars 2013 Statut Membre Dernière intervention 31 juillet 2018 28
Modifié par Villette54 le 12/07/2013 à 14:46
Effectivement je suis très intéressé !

Je veux bien vos explications, mais je préfère vous prévenir je suis débutant en VBA.

Je vous joint un exemple de mon fichier afin que ce soit plus facile.

--> http://cjoint.com/data3/3GmoUjDNZQs.htm

Merci pour votre aide.
0
rEVOLV3r Messages postés 223 Date d'inscription jeudi 12 août 2010 Statut Membre Dernière intervention 21 septembre 2022 28
12 juil. 2013 à 15:10
Je vois qu'il y aura un problème...

SI la ligne Ref1 dit de voir les colonnes L et M
et qu'en Ref2 on doit les cacher, il y aura un conflit d'interet malheureusement.

Je ne pense pas que cacher les colonnes soit la meilleure choses a faire.

Soit 1)
faire deux feuilles une sans arret et l'autre avec -> simplifie les choses
Soit 2)
mettre en place avec la mise en forme conditionnelle les cellules en Noires pour dire qu'elles sont inutiles.

Désolé.

Mais peut etre qu'une personne aura une meilleure idée que moi et réussira a cacher vos colonnes !
0
Villette54 Messages postés 300 Date d'inscription vendredi 15 mars 2013 Statut Membre Dernière intervention 31 juillet 2018 28
Modifié par Villette54 le 15/07/2013 à 09:05
Bonjour,

Je vois ce que vous voulez dire,
J'avais également envisagé la 2ème option, je cherchais juste une meilleure solution !

En tout cas, merci pour votre aide !
0
eriiic Messages postés 24597 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 22 septembre 2024 7 235
Modifié par eriiic le 12/07/2013 à 15:55
Bonjour,

Une proposition.
L'affichage dépend de la ligne sélectionnée, ou bien seulement de la dernière sélection en B (activer l'un ou l'autre choix en mettant en commentaire la ligne de code avec une ')
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count <> 1 Then Exit Sub
    If Target.Column = 2 And Target.Row > 1 Then masquer (Target)
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Count <> 1 Then Exit Sub
    ' choix 1 : sélection d'une ligne change l'affichage
    If Target.Row > 1 Then masquer (Cells(Target.Row, "B"))
    ' choix 2 : sélection en colonne B change l'affichage
    'If Target.Column = 2 And Target.Row > 1 Then masquer (Target)
End Sub

Sub masquer(typeRDP As String)
' typeRDP="Blessure sans arrêt" : afficher L:M
' typeRDP="Blessure avec arrêt" : afficher L:O
' typeRDP= autres cas           : masquer L:O
    Range("L:O").EntireColumn.Hidden = True
    Select Case typeRDP
    Case "Blessure sans arrêt"
        Range("L:M").EntireColumn.Hidden = False
    Case "Blessure avec arrêt"
        Range("L:O").EntireColumn.Hidden = False
    Case Else
    End Select
End Sub

Clic-droit sur le nom de l'onglet et choisir 'visualiser le code...' pour modifier.
https://www.cjoint.com/c/CGmpYpFoSul

eric
Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.
0
Villette54 Messages postés 300 Date d'inscription vendredi 15 mars 2013 Statut Membre Dernière intervention 31 juillet 2018 28
15 juil. 2013 à 09:24
Bonjour Eric,

Merci pour ton aide.

Ta macro fonctionne parfaitement, à première vue je préfère l'option N°1.
Il m'a fallu un peu de temps pour comprendre comment elle fonctionnait mais maintenant c'est bon !

Encore merci, et bonne journée.
0