Grouper / Dissocier si "oui" dans une cellule

duclosm

XLDnaute Nouveau
Bonjour,

Mon problème est le suivant :

Je voudrais grouper une colonne si la valeur "Oui" se trouve dans une cellule (qui n'est pas dans cette colonne).

Malheureusement, ayant un niveau VBA proche de zéro, je ne sais pas comment m'y prendre…. HELP ! :)

D'avance, merci beaucoup !
 

duclosm

XLDnaute Nouveau
Bonjour,

Merci de votre réponse :)

Fichier joint.

Je voudrais que si B2 = "Oui" alors les colonnes H à M se groupent (qu'elles ne s'affichent pas), et si B2 ="Non" ou "" (vide) alors ces mêmes colonnes se dissocient / dégroupent pour s'afficher (je ne sais pas si je suis très clair…)

J'ai un autre problème lié (voir même fichier joint), alors je profite de votre aide, j'espère que vous ne m'en voudrez pas ;) ;

Je voudrais que si B3 = "Oui" alors la colonne E se groupe, et si B3 ="Non" ou "" (vide) alors cette même colonne se dissocie / dégroupe.

Merci de votre aide :)
 

Pièces jointes

  • Test.xlsx
    8.4 KB · Affichages: 12

mapomme

XLDnaute Barbatruc
Supporter XLD
Re,

Voir le fichier joint. Il y a deux macro évènementielles:
la première dans le module de ThisWorkbook:
VB:
Private Sub Workbook_Open()
  Sheets("Sheet1").Range("h:m").EntireColumn.Hidden = UCase(Sheets("Sheet1").Range("B2")) = "OUI"
  Sheets("Sheet1").Range("e:e").EntireColumn.Hidden = UCase(Sheets("Sheet1").Range("B3")) = "OUI"
End Sub

la seconde dans le module de la feuille nommée "Sheet1":
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Count = 1 Then
    If Target.Address(0, 0) = "B2" Then Range("h:m").EntireColumn.Hidden = UCase(Target) = "OUI"
    If Target.Address(0, 0) = "B3" Then Range("e:e").EntireColumn.Hidden = UCase(Target) = "OUI"
  End If
End Sub
 

Pièces jointes

  • duclosm- masquer ou non colonnes- v1.xlsm
    16.8 KB · Affichages: 23

job75

XLDnaute Barbatruc
Bonjour duclosm, mapomme,

Avec ce code dans le fichier joint les liste de validation et le plan sont liés :
VB:
Dim espion As Boolean 'mémorise la variable

Private Sub Worksheet_Calculate()
Application.OnTime 1, Me.CodeName & ".Analyse"
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
espion = True
End Sub

Sub Analyse()
Application.EnableEvents = False
If espion Then
    Columns("H:M").Hidden = UCase([B2]) = "OUI"
    Columns("E:E").Hidden = UCase([B3]) = "OUI"
    espion = False
Else
    [B2] = IIf(Columns("H:M").Hidden, "Oui", "Non")
    [B3] = IIf(Columns("E").Hidden, "Oui", "Non")
End If
Application.EnableEvents = True
End Sub
La fonction volatile =AUJOURDHUI() en D2 permet de créer l'évènement Calculate.

A+
 

Pièces jointes

  • Masquer colonnes(1).xlsm
    21.8 KB · Affichages: 20

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 915
Membres
101 837
dernier inscrit
Ugo