Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

AFFICHER des pages selon condition

6 réponses
Avatar
Sunburn
Bonjour,
j'ai dans mon onglet "DA", cellule G40, une cellule de choix entre "IS",
"IR" et "BA IR".
Je rendre visible l'onglet 80_11 si "IR" ou "BA IR", et l'onglet 80_12 si
"IS".
pour cela, sur mon onglet "DA", ça fonctionne bien, j'ai :
------
Private Sub worksheet_change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Intersect(Target, Range("G40")) Is Nothing Then Exit Sub
Target.Value = UCase(CStr(Target.Value))
Application.ScreenUpdating = False
If Target.Address <> "$G$40" Then Exit Sub
If Target = "IS" Or Target = "SCA" Then
Sheets("80_21").Visible = True
Sheets("80_11").Visible = False
ElseIf Target = "IR" Or Target = "BA IR" Then
Sheets("80_11").Visible = True
Sheets("80_21").Visible = False
Else
Sheets("80_21").Visible = False
Sheets("80_11").Visible = False
End If
End Sub
-------
Par contre, après j'ai une barre d'outil personnalisée, afin d'afficher ou
non des onglets. Lorsque j'afficher mes feuilles '80', j'ai la macro
suivante, mais aucune de me feuilles 80_11 ou 80_21 ne s'affiche, pourquoi ?
(moi je veux afficher les onglets 80, 80_41 et soit le 80_11 soit le 80_21.
Merci
-------
Sub CYCLE80()
Application.ScreenUpdating = False
For Each F In ActiveWorkbook.Sheets
If F.Name <> "DA" Then F.Visible = False
Next
Sheets("80").Visible = True
Sheets("80_41").Visible = True
On Error Resume Next
If Sheets("80_11").Visible = True Then Sheets("80_11").Select: Exit Sub Else
Sheets("DA").Select
If Sheets("80_21").Visible = True Then Sheets("80_21").Select: Exit Sub Else
Sheets("DA").Select
Sheets("80").Activate
End Sub
--------

6 réponses

Avatar
JPMonnier
RE
dans Sub CYCLE80
tu caches tes feuilles 80_11 et 80_21 et ensuite tu testes si elles sont
visibles donc :
If Sheets("80_11").Visible = True Then Sheets("80_11").Select: Exit Sub
Else
est forcément non visible ainsi que la ligne suivante
If Sheets("80_21").Visible = True Then Sheets("80_21").Select: Exit Sub
Else
--
Cordialement


"Sunburn" a écrit dans le message de
news:
Bonjour,
j'ai dans mon onglet "DA", cellule G40, une cellule de choix entre "IS",
"IR" et "BA IR".
Je rendre visible l'onglet 80_11 si "IR" ou "BA IR", et l'onglet 80_12 si
"IS".
pour cela, sur mon onglet "DA", ça fonctionne bien, j'ai :
------
Private Sub worksheet_change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Intersect(Target, Range("G40")) Is Nothing Then Exit Sub
Target.Value = UCase(CStr(Target.Value))
Application.ScreenUpdating = False
If Target.Address <> "$G$40" Then Exit Sub
If Target = "IS" Or Target = "SCA" Then
Sheets("80_21").Visible = True
Sheets("80_11").Visible = False
ElseIf Target = "IR" Or Target = "BA IR" Then
Sheets("80_11").Visible = True
Sheets("80_21").Visible = False
Else
Sheets("80_21").Visible = False
Sheets("80_11").Visible = False
End If
End Sub
-------
Par contre, après j'ai une barre d'outil personnalisée, afin d'afficher ou
non des onglets. Lorsque j'afficher mes feuilles '80', j'ai la macro
suivante, mais aucune de me feuilles 80_11 ou 80_21 ne s'affiche, pourquoi
?
(moi je veux afficher les onglets 80, 80_41 et soit le 80_11 soit le
80_21.
Merci
-------
Sub CYCLE80()
Application.ScreenUpdating = False
For Each F In ActiveWorkbook.Sheets
If F.Name <> "DA" Then F.Visible = False
Next
Sheets("80").Visible = True
Sheets("80_41").Visible = True
On Error Resume Next
If Sheets("80_11").Visible = True Then Sheets("80_11").Select: Exit Sub
Else
Sheets("DA").Select
If Sheets("80_21").Visible = True Then Sheets("80_21").Select: Exit Sub
Else
Sheets("DA").Select
Sheets("80").Activate
End Sub
--------


Avatar
Sunburn
oui, c'est exact, je te remercie, je vais modifier ..
Yann

"JPMonnier" a écrit :

RE
dans Sub CYCLE80
tu caches tes feuilles 80_11 et 80_21 et ensuite tu testes si elles sont
visibles donc :
If Sheets("80_11").Visible = True Then Sheets("80_11").Select: Exit Sub
Else
est forcément non visible ainsi que la ligne suivante
If Sheets("80_21").Visible = True Then Sheets("80_21").Select: Exit Sub
Else
--
Cordialement


"Sunburn" a écrit dans le message de
news:
> Bonjour,
> j'ai dans mon onglet "DA", cellule G40, une cellule de choix entre "IS",
> "IR" et "BA IR".
> Je rendre visible l'onglet 80_11 si "IR" ou "BA IR", et l'onglet 80_12 si
> "IS".
> pour cela, sur mon onglet "DA", ça fonctionne bien, j'ai :
> ------
> Private Sub worksheet_change(ByVal Target As Range)
> If Target.Count > 1 Then Exit Sub
> If Intersect(Target, Range("G40")) Is Nothing Then Exit Sub
> Target.Value = UCase(CStr(Target.Value))
> Application.ScreenUpdating = False
> If Target.Address <> "$G$40" Then Exit Sub
> If Target = "IS" Or Target = "SCA" Then
> Sheets("80_21").Visible = True
> Sheets("80_11").Visible = False
> ElseIf Target = "IR" Or Target = "BA IR" Then
> Sheets("80_11").Visible = True
> Sheets("80_21").Visible = False
> Else
> Sheets("80_21").Visible = False
> Sheets("80_11").Visible = False
> End If
> End Sub
> -------
> Par contre, après j'ai une barre d'outil personnalisée, afin d'afficher ou
> non des onglets. Lorsque j'afficher mes feuilles '80', j'ai la macro
> suivante, mais aucune de me feuilles 80_11 ou 80_21 ne s'affiche, pourquoi
> ?
> (moi je veux afficher les onglets 80, 80_41 et soit le 80_11 soit le
> 80_21.
> Merci
> -------
> Sub CYCLE80()
> Application.ScreenUpdating = False
> For Each F In ActiveWorkbook.Sheets
> If F.Name <> "DA" Then F.Visible = False
> Next
> Sheets("80").Visible = True
> Sheets("80_41").Visible = True
> On Error Resume Next
> If Sheets("80_11").Visible = True Then Sheets("80_11").Select: Exit Sub
> Else
> Sheets("DA").Select
> If Sheets("80_21").Visible = True Then Sheets("80_21").Select: Exit Sub
> Else
> Sheets("DA").Select
> Sheets("80").Activate
> End Sub
> --------




Avatar
Sunburn
Donc, si je comprend bien, il faut que je fasse le test, non pas en Private
sur la feuille "DA", mais au niveau de ma macro "CYCLE_80", n'est-ce pas ?

"JPMonnier" a écrit :

RE
dans Sub CYCLE80
tu caches tes feuilles 80_11 et 80_21 et ensuite tu testes si elles sont
visibles donc :
If Sheets("80_11").Visible = True Then Sheets("80_11").Select: Exit Sub
Else
est forcément non visible ainsi que la ligne suivante
If Sheets("80_21").Visible = True Then Sheets("80_21").Select: Exit Sub
Else
--
Cordialement


"Sunburn" a écrit dans le message de
news:
> Bonjour,
> j'ai dans mon onglet "DA", cellule G40, une cellule de choix entre "IS",
> "IR" et "BA IR".
> Je rendre visible l'onglet 80_11 si "IR" ou "BA IR", et l'onglet 80_12 si
> "IS".
> pour cela, sur mon onglet "DA", ça fonctionne bien, j'ai :
> ------
> Private Sub worksheet_change(ByVal Target As Range)
> If Target.Count > 1 Then Exit Sub
> If Intersect(Target, Range("G40")) Is Nothing Then Exit Sub
> Target.Value = UCase(CStr(Target.Value))
> Application.ScreenUpdating = False
> If Target.Address <> "$G$40" Then Exit Sub
> If Target = "IS" Or Target = "SCA" Then
> Sheets("80_21").Visible = True
> Sheets("80_11").Visible = False
> ElseIf Target = "IR" Or Target = "BA IR" Then
> Sheets("80_11").Visible = True
> Sheets("80_21").Visible = False
> Else
> Sheets("80_21").Visible = False
> Sheets("80_11").Visible = False
> End If
> End Sub
> -------
> Par contre, après j'ai une barre d'outil personnalisée, afin d'afficher ou
> non des onglets. Lorsque j'afficher mes feuilles '80', j'ai la macro
> suivante, mais aucune de me feuilles 80_11 ou 80_21 ne s'affiche, pourquoi
> ?
> (moi je veux afficher les onglets 80, 80_41 et soit le 80_11 soit le
> 80_21.
> Merci
> -------
> Sub CYCLE80()
> Application.ScreenUpdating = False
> For Each F In ActiveWorkbook.Sheets
> If F.Name <> "DA" Then F.Visible = False
> Next
> Sheets("80").Visible = True
> Sheets("80_41").Visible = True
> On Error Resume Next
> If Sheets("80_11").Visible = True Then Sheets("80_11").Select: Exit Sub
> Else
> Sheets("DA").Select
> If Sheets("80_21").Visible = True Then Sheets("80_21").Select: Exit Sub
> Else
> Sheets("DA").Select
> Sheets("80").Activate
> End Sub
> --------




Avatar
JPMonnier
Oui tu peux essayer
--
Cordialement

"Sunburn" a écrit dans le message de
news:
Donc, si je comprend bien, il faut que je fasse le test, non pas en
Private
sur la feuille "DA", mais au niveau de ma macro "CYCLE_80", n'est-ce pas ?

"JPMonnier" a écrit :

RE
dans Sub CYCLE80
tu caches tes feuilles 80_11 et 80_21 et ensuite tu testes si elles sont
visibles donc :
If Sheets("80_11").Visible = True Then Sheets("80_11").Select: Exit Sub
Else
est forcément non visible ainsi que la ligne suivante
If Sheets("80_21").Visible = True Then Sheets("80_21").Select: Exit Sub
Else
--
Cordialement


"Sunburn" a écrit dans le message de
news:
> Bonjour,
> j'ai dans mon onglet "DA", cellule G40, une cellule de choix entre
> "IS",
> "IR" et "BA IR".
> Je rendre visible l'onglet 80_11 si "IR" ou "BA IR", et l'onglet 80_12
> si
> "IS".
> pour cela, sur mon onglet "DA", ça fonctionne bien, j'ai :
> ------
> Private Sub worksheet_change(ByVal Target As Range)
> If Target.Count > 1 Then Exit Sub
> If Intersect(Target, Range("G40")) Is Nothing Then Exit Sub
> Target.Value = UCase(CStr(Target.Value))
> Application.ScreenUpdating = False
> If Target.Address <> "$G$40" Then Exit Sub
> If Target = "IS" Or Target = "SCA" Then
> Sheets("80_21").Visible = True
> Sheets("80_11").Visible = False
> ElseIf Target = "IR" Or Target = "BA IR" Then
> Sheets("80_11").Visible = True
> Sheets("80_21").Visible = False
> Else
> Sheets("80_21").Visible = False
> Sheets("80_11").Visible = False
> End If
> End Sub
> -------
> Par contre, après j'ai une barre d'outil personnalisée, afin d'afficher
> ou
> non des onglets. Lorsque j'afficher mes feuilles '80', j'ai la macro
> suivante, mais aucune de me feuilles 80_11 ou 80_21 ne s'affiche,
> pourquoi
> ?
> (moi je veux afficher les onglets 80, 80_41 et soit le 80_11 soit le
> 80_21.
> Merci
> -------
> Sub CYCLE80()
> Application.ScreenUpdating = False
> For Each F In ActiveWorkbook.Sheets
> If F.Name <> "DA" Then F.Visible = False
> Next
> Sheets("80").Visible = True
> Sheets("80_41").Visible = True
> On Error Resume Next
> If Sheets("80_11").Visible = True Then Sheets("80_11").Select: Exit Sub
> Else
> Sheets("DA").Select
> If Sheets("80_21").Visible = True Then Sheets("80_21").Select: Exit Sub
> Else
> Sheets("DA").Select
> Sheets("80").Activate
> End Sub
> --------






Avatar
Sunburn
D'accord, mais comment modifier mon private sub ? en fait, comment dois-je
lui préciser l'onglet sur lequel il fait le test ?
Merci.
----
'pour l'affichage du résultat fiscal selon le régime
Private Sub worksheet_change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Intersect(Target, Range("G40")) Is Nothing Then Exit Sub
Target.Value = UCase(CStr(Target.Value))
Application.ScreenUpdating = False
If Target.Address <> "$G$40" Then Exit Sub
If Target = "IS" Or Target = "SCA" Then
Sheets("80_21").Visible = True
Sheets("80_11").Visible = False
ElseIf Target = "IR" Or Target = "BA IR" Then
Sheets("80_11").Visible = True
Sheets("80_21").Visible = False
Else
Sheets("80_21").Visible = False
Sheets("80_11").Visible = False
End If
End Sub
-----

"JPMonnier" a écrit :

Oui tu peux essayer
--
Cordialement



Avatar
Sunburn
C'est bon, j'ai cette macro qui fonctionne, sauf si tu vois des choses qui ne
vont pas.
merci
----
Sub CYCLE80()
Application.ScreenUpdating = False
For Each F In ActiveWorkbook.Sheets
If F.Name <> "DA" Then F.Visible = False
Next
Sheets("80").Visible = True
Sheets("80_41").Visible = True
With Sheets("DA")
If .[G40] = "IR" Then Sheets("80_11").Visible = True: Exit Sub Else
If .[G40] = "BA IR" Then Sheets("80_11").Visible = True: Exit Sub Else
If .[G40] = "IS" Then Sheets("80_21").Visible = True: Exit Sub Else
End With
Sheets("80").Activate
End Sub
-----

"JPMonnier" a écrit :

Oui tu peux essayer
--
Cordialement

"Sunburn" a écrit dans le message de
news:
> Donc, si je comprend bien, il faut que je fasse le test, non pas en
> Private
> sur la feuille "DA", mais au niveau de ma macro "CYCLE_80", n'est-ce pas ?
>
> "JPMonnier" a écrit :
>
>> RE
>> dans Sub CYCLE80
>> tu caches tes feuilles 80_11 et 80_21 et ensuite tu testes si elles sont
>> visibles donc :
>> If Sheets("80_11").Visible = True Then Sheets("80_11").Select: Exit Sub
>> Else
>> est forcément non visible ainsi que la ligne suivante
>> If Sheets("80_21").Visible = True Then Sheets("80_21").Select: Exit Sub
>> Else
>> --
>> Cordialement
>>
>>
>> "Sunburn" a écrit dans le message de
>> news:
>> > Bonjour,
>> > j'ai dans mon onglet "DA", cellule G40, une cellule de choix entre
>> > "IS",
>> > "IR" et "BA IR".
>> > Je rendre visible l'onglet 80_11 si "IR" ou "BA IR", et l'onglet 80_12
>> > si
>> > "IS".
>> > pour cela, sur mon onglet "DA", ça fonctionne bien, j'ai :
>> > ------
>> > Private Sub worksheet_change(ByVal Target As Range)
>> > If Target.Count > 1 Then Exit Sub
>> > If Intersect(Target, Range("G40")) Is Nothing Then Exit Sub
>> > Target.Value = UCase(CStr(Target.Value))
>> > Application.ScreenUpdating = False
>> > If Target.Address <> "$G$40" Then Exit Sub
>> > If Target = "IS" Or Target = "SCA" Then
>> > Sheets("80_21").Visible = True
>> > Sheets("80_11").Visible = False
>> > ElseIf Target = "IR" Or Target = "BA IR" Then
>> > Sheets("80_11").Visible = True
>> > Sheets("80_21").Visible = False
>> > Else
>> > Sheets("80_21").Visible = False
>> > Sheets("80_11").Visible = False
>> > End If
>> > End Sub
>> > -------
>> > Par contre, après j'ai une barre d'outil personnalisée, afin d'afficher
>> > ou
>> > non des onglets. Lorsque j'afficher mes feuilles '80', j'ai la macro
>> > suivante, mais aucune de me feuilles 80_11 ou 80_21 ne s'affiche,
>> > pourquoi
>> > ?
>> > (moi je veux afficher les onglets 80, 80_41 et soit le 80_11 soit le
>> > 80_21.
>> > Merci
>> > -------
>> > Sub CYCLE80()
>> > Application.ScreenUpdating = False
>> > For Each F In ActiveWorkbook.Sheets
>> > If F.Name <> "DA" Then F.Visible = False
>> > Next
>> > Sheets("80").Visible = True
>> > Sheets("80_41").Visible = True
>> > On Error Resume Next
>> > If Sheets("80_11").Visible = True Then Sheets("80_11").Select: Exit Sub
>> > Else
>> > Sheets("DA").Select
>> > If Sheets("80_21").Visible = True Then Sheets("80_21").Select: Exit Sub
>> > Else
>> > Sheets("DA").Select
>> > Sheets("80").Activate
>> > End Sub
>> > --------
>>
>>