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

Aide - VBA - cacher/afficher feuille automatiquement

  • Initiateur de la discussion Initiateur de la discussion Seb63
  • 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 !

S

Seb63

Guest
Bonjour à tous,

Regarde la pièce jointe VBA fichier aide.xls

Je souhaiterais pouvoir masquer et afficher mes feuilles selon le résultat de mes calcules ayant pour résultat OUI ou NON. Ma formule VBA fonctionne mais je fois obligatoirement faire F2+ENTREE dans chaque cellule de G3 à G12 pour que les feuilles s'affichent ou se masquent.

Mon souhait étant de ne plus avoir à faire F2+Entrée mais que l'affichage des feuilles s'effectuent dès que D28 est modifié.

L'idéal serait même de ce passer des calcules en G3:G12 et que la VBA n'interagisse qu'avec la valeur en D28 mais je ne sais pas faire, je compte sur vous.

Code :

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("G3:G" & Range("G" & Rows.Count).End(xlUp).Row), Target) Is Nothing And Target.Count = 1 Then
Application.ScreenUpdating = False
Sheets(Target.Offset(0, -1).Value).Visible = Target = "OUI"

End If
End Sub





Merci d'avance

Cordialement
 

Pièces jointes

Dernière modification par un modérateur:
Re : Aide - VBA - cacher/afficher feuille automatiquement

Je me trouve sur la page synthèse où je veux que s'exécute mon code, par conséquent le code devrait être le suivant d'après tes indications :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = 0

Rows("6:26").EntireRow.Hidden = False
If Sheets("Page de garde").Range("D28").Value = "1" Then Rows("9:26").EntireRow.Hidden = True
If Sheets("Page de garde").Range("D28").Value = "2" Then Rows("11:26").EntireRow.Hidden = True
If Sheets("Page de garde").Range("D28").Value = "3" Then Rows("13:26").EntireRow.Hidden = True
If Sheets("Page de garde").Range("D28").Value = "4" Then Rows("15:26").EntireRow.Hidden = True
If Sheets("Page de garde").Range("D28").Value = "5" Then Rows("17:26").EntireRow.Hidden = True
If Sheets("Page de garde").Range("D28").Value = "6" Then Rows("19:26").EntireRow.Hidden = True
If Sheets("Page de garde").Range("D28").Value = "7" Then Rows("21:26").EntireRow.Hidden = True
If Sheets("Page de garde").Range("D28").Value = "8" Then Rows("23:26").EntireRow.Hidden = True
If Sheets("Page de garde").Range("D28").Value = "9" Then Rows("25:26").EntireRow.Hidden = True

Application.ScreenUpdating = -1
End Sub

mais ça ne fonctionne pas... :/
 
Re : Aide - VBA - cacher/afficher feuille automatiquement


est-ce que ça répond à ta question sur le module ?

pas de message d'erreur, mais pas non plus d'effet sur la feuille
 

Pièces jointes

  • forum.jpg
    58.6 KB · Affichages: 116
  • forum.jpg
    58.6 KB · Affichages: 117
Re : Aide - VBA - cacher/afficher feuille automatiquement

Re
Essayer

x=Sheets("Page de garde").Range("D28").Value
Rows(7 + 2 * x & ":26").EntireRow.Hidden = True


Comme cela ? :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = 0

Rows("6:26").EntireRow.Hidden = False
x = Sheets("Page de garde").Range("D28").Value
Rows(7 + 2 * x & ":26").EntireRow.Hidden = True

Application.ScreenUpdating = -1
End Sub
 
Re : Aide - VBA - cacher/afficher feuille automatiquement

salut

avec ce que j'ai compris,
dans la page de code de la feuille "Page de garde"
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Address <> "$D$28" Then Exit Sub
  For n = 1 To 10
     Sheets(CStr(n)).Visible = n < Target + 1
  Next
End Sub
dans la page de code de la feuille "Synthèse"
Code:
Private Sub Worksheet_Change(ByVal R As Range)
  Rows("6:26").Hidden = False
  'Rows("9:26").Hidden = Sheets("Page de garde").[D28] = 1
  'Rows("11:26").Hidden = Sheets("Page de garde").[D28] = 2   
  Rows(9 + 2 * (R - 1) & ":26").Hidden = [O1] = R
End Sub
les 2 lignes cochées semblent poser problème.
Merci pierrejean 😀 pour tous tes codes !
 

Pièces jointes

Dernière édition:
Re : Aide - VBA - cacher/afficher feuille automatiquement

Ce qui donne :
Code:
Private Sub Worksheet_Change(ByVal R As Range)
  Rows("6:26").Hidden = False
  Rows("9:26").Hidden = Sheets("Page de garde").[D28] = 1
  Rows("11:26").Hidden = Sheets("Page de garde").[D28] = 2
  Rows("13:26").Hidden = Sheets("Page de garde").[D28] = 3
  Rows("15:26").Hidden = Sheets("Page de garde").[D28] = 4
  Rows("17:26").Hidden = Sheets("Page de garde").[D28] = 5
  Rows("19:26").Hidden = Sheets("Page de garde").[D28] = 6
  Rows("21:26").Hidden = Sheets("Page de garde").[D28] = 7
  Rows("23:26").Hidden = Sheets("Page de garde").[D28] = 8
  Rows("25:26").Hidden = Sheets("Page de garde").[D28] = 9
  Rows(9 + 2 * (R - 1) & ":26").Hidden = [O1] = R
End Sub

mais qui ne me permet pas de masquer les lignes avec le résultat de 'page de garde'!D28 mais qui m'oblige à inscrire manuellement le même chiffre en O1 de la feuille synthèse que celui de la 'page de garde'!D28.
Cela fonctionnais déjà à la base avec ce code :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = 0

Rows("6:26").EntireRow.Hidden = False
If Range("o1").Value = "1" Then Rows("9:26").EntireRow.Hidden = True
If Range("o1").Value = "2" Then Rows("11:26").EntireRow.Hidden = True
If Range("o1").Value = "3" Then Rows("13:26").EntireRow.Hidden = True
If Range("o1").Value = "4" Then Rows("15:26").EntireRow.Hidden = True
If Range("o1").Value = "5" Then Rows("17:26").EntireRow.Hidden = True
If Range("o1").Value = "6" Then Rows("19:26").EntireRow.Hidden = True
If Range("o1").Value = "7" Then Rows("21:26").EntireRow.Hidden = True
If Range("o1").Value = "8" Then Rows("23:26").EntireRow.Hidden = True
If Range("o1").Value = "9" Then Rows("25:26").EntireRow.Hidden = True

Application.ScreenUpdating = -1
End Sub

Ce que je souhaite c'est :
si en 'page de garde' D28 = 1 les lignes 9 à 26 de la feuilles 'Synthèse' soient masquées.
si en 'page de garde' D28 = 2 les lignes 11 à 26 de la feuilles 'Synthèse'soient masquées.
si en 'page de garde' D28 = 3 les lignes 13 à 26 de la feuilles 'Synthèse'soient masquées.
si en 'page de garde' D28 = 4 les lignes 15 à 26 de la feuilles 'Synthèse'soient masquées.
si en 'page de garde' D28 = 5 les lignes 17 à 26 de la feuilles 'Synthèse'soient masquées.
si en 'page de garde' D28 = 6 les lignes 19 à 26 de la feuilles 'Synthèse'soient masquées.
si en 'page de garde' D28 = 7 les lignes 21 à 26 de la feuilles 'Synthèse'soient masquées.
si en 'page de garde' D28 = 8 les lignes 23 à 26 de la feuilles 'Synthèse'soient masquées.
si en 'page de garde' D28 = 9 les lignes 25 à 26 de la feuilles 'Synthèse'soient masquées.
 
Dernière modification par un modérateur:
Re : Aide - VBA - cacher/afficher feuille automatiquement

Re

peut etre mettre la macro sur l’évènement Activate

Private Sub Worksheet_Activate()
Application.ScreenUpdating = 0
Rows("6:26").EntireRow.Hidden = False
x = Sheets("Page de garde").Range("D28").Value
Rows(7 + 2 * x & ":26").EntireRow.Hidden = True
Application.ScreenUpdating = -1
End Sub
 
Re : Aide - VBA - cacher/afficher feuille automatiquement

re

dans ce cas, il n'y a pas 36000 solutions
dans la page de code de la feuille "Page de garde"
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Address <> "$D$28" Then Exit Sub
  For n = 1 To 10: Sheets(CStr(n)).Visible = n < Target + 1: Next
  Sheets("Synthèse").Rows("3:26").Hidden = 0
  If Target < 10 Then Sheets("Synthèse").Rows(9 + 2 * (Target - 1) & ":26").Hidden = Target
End Sub
 
Dernière édition:
Re : Aide - VBA - cacher/afficher feuille automatiquement

re

tu ne peux pas avoir 2 "Change".
Supprime la première macro. Celle que je t'ai donnée fait TOUT !

PARFAIT !!!! la formule ne fonctionnait pas car elle faisait référence à D28 au lieu de C28 mais une fois rectifié l'exécution est optimale.

Merci à tous
 
- 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

Réponses
1
Affichages
1 K
R
Réponses
8
Affichages
1 K
R
P
  • Question Question
Réponses
1
Affichages
3 K
Patrosso
P
Réponses
2
Affichages
746
T
Réponses
24
Affichages
3 K
Traouck
T
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…