Masquer / Créer les feuilles automatiquement

jflegros

XLDnaute Nouveau
Bonjour,
j'essaie de créer un code qui ajoute ou masque des feuilles en fonction d'une plage de cellules.
Dès qu'il y a une modification dans celle-ci, la macro vérifie que les feuilles correspondent bien à la plage de cellule. Si ce n'est pas le cas , les feuilles sont masquées ou ajoutées automatiquement
Ci-joint un fichier pour mieux comprendre mon problème

Merci à ceux qui voudront bien m'aider
 

Pièces jointes

  • Exemple.xls
    31.5 KB · Affichages: 44
  • Exemple.xls
    31.5 KB · Affichages: 54
  • Exemple.xls
    31.5 KB · Affichages: 48

Lone-wolf

XLDnaute Barbatruc
Re : Masquer / Créer les feuilles automatiquement

Bonjour jflegros,

regarde si le fichier peux convenir.


EDIT: bonjour pierrejean.



A+ :cool:
 

Pièces jointes

  • Exemple-2.xls
    49 KB · Affichages: 35
  • Exemple-2.xls
    49 KB · Affichages: 45
  • Exemple-2.xls
    49 KB · Affichages: 39

jflegros

XLDnaute Nouveau
Re : Masquer / Créer les feuilles automatiquement

Bonjour à vous deux,
PJean, ton code fonctionne très bien et répond au besoin, au top !!
LWolf, dès que je sélectionne une cellule (sans la modifier), cela ajoute un onglet..
Merci à vous d'avoir pris un peu de temps
 

Lone-wolf

XLDnaute Barbatruc
Re : Masquer / Créer les feuilles automatiquement

Rebonjour pierrejean, jflegros

Dans le code de pierrejean, j'ai vu que la feuille Dates se masque aussi (un peu dommage, vu que c'est la feuille principale.) J'ai donc apporté deux modifications.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("C33:I33")) Is Nothing Then
  For Each cel In Range("C33:I33")
    nom = Format(Day(cel.Value), "00") & "-" & Format(Month(cel.Value), "00")
      For Each sh In Sheets
        If sh.Name <> ActiveSheet.Name Then
          If sh.Name = nom Then
            present = True
            Exit For
          End If
        End If
      Next
      If present Then
        Sheets(nom).Visible = True
      Else
        Sheets.Add(after:=Worksheets(Worksheets.Count)).Name = nom  'ICI
      End If
      present = False
  Next
  For Each sh In Sheets
  
    For Each cel In Range("C33:I33")
      nom = Format(Day(cel.Value), "00") & "-" & Format(Month(cel.Value), "00")
      If sh.Name = nom Then
         dans = True
         Exit For
      End If
    Next
    If dans = False And sh.Name <> ActiveSheet.Name Then sh.Visible = False: Sheets("Dates").Visible = True    'ET ICI
 
dans = False
Next
End If
End Sub


A+ :cool:
 

pierrejean

XLDnaute Barbatruc
Re : Masquer / Créer les feuilles automatiquement

Re
Non La feuille Dates ne se masque pas car :
If dans = False And sh.Name <> ActiveSheet.Name Then sh.Visible = False
Mais il est vrai qu'elle est moins visible puisque la nouvelle feuille vient en tête et je suis d'accord avec
after:=Worksheets(Worksheets.Count)
 

Discussions similaires

Statistiques des forums

Discussions
312 756
Messages
2 091 759
Membres
105 062
dernier inscrit
Ret78