Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Grouper / Dissocier si "oui" dans une cellule

  • Initiateur de la discussion Initiateur de la discussion duclosm
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

D

duclosm

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

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

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

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…