Excel afficher masquer un onglet

[Résolu/Fermé]
Signaler
Messages postés
122
Date d'inscription
samedi 28 janvier 2017
Statut
Membre
Dernière intervention
25 mai 2021
-
Messages postés
17549
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
24 septembre 2021
-
Bonjour à tous,

J'avais une macro dont voici un extrait du code en fin d'article qui me permet d'afficher ou de masquer un ou plusieurs onglets.

Je viens de changer de version d'Excel (je suis passé à la plus récente) et depuis j'ai un bug : je peux tout à fait masquer les onglets sans problème, mais quand je veux afficher 10 onglets en même temps, il me les affiche que de 2 en 2 (à chaque fois il faut ré-exécuter la macro).

Est-ce dû à la mise à jour de Excel et comment y remédier ?
D'avance merci.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Sub changer()

If [G19] = "NON" Then
Worksheets("procedureCaisse").Visible = False
ElseIf [G19] = "OUI" Then
Worksheets("procedureCaisse").Visible = True
End If

If [G20] = "NON" Then
Worksheets("cadrageClients").Visible = False
ElseIf [G20] = "OUI" Then
Worksheets("cadrageClients").Visible = True
End If

If [G21] = "NON" Then
Worksheets("cadrageChiffreDAffaires").Visible = False
ElseIf [G21] = "OUI" Then
Worksheets("cadrageChiffreDAffaires").Visible = True
End If

...
...
...
...
...

If [G117] = "NON" Then
Sheets("listeAjustements").Visible = False
ElseIf [G117] = "OUI" Then
Sheets("listeAjustements").Visible = True
End If

If [G118] = "NON" Then
Sheets("NoteDeSynthese").Visible = False
ElseIf [G118] = "OUI" Then
Sheets("noteDeSynthese").Visible = True
End If


End Sub

9 réponses

Messages postés
17549
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
24 septembre 2021
4 741
Re,

remplace ton code par ce dernier que je te laisse le soin de terminer

Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Not Intersect(Target, Union([G19], [G20], [G21], [G22])) Is Nothing Then
Application.EnableEvents = False
If [G19] = "NON" Then Worksheets("procedureCaisse").Visible = False Else Worksheets("procedureCaisse").Visible = True
If [G20] = "NON" Then Worksheets("cadrageClients").Visible = False Else Worksheets("cadrageClients").Visible = True
If [G21] = "NON" Then Worksheets("cadrageChiffreDAffaires").Visible = False Else Worksheets("cadrageChiffreDAffaires").Visible = True

'Continuer le code


If [G118] = "NON" Then Worksheets("noteDeSynthese").Visible = False Else Worksheets("noteDeSynthese").Visible = True
Application.EnableEvents = True
End If
End Sub


A+
Mike-31

Je suis responsable de ce que je dis, pas de ce que tu comprends...
>
Messages postés
122
Date d'inscription
samedi 28 janvier 2017
Statut
Membre
Dernière intervention
25 mai 2021

 
Ça sert à « geler » l'écran : il n'est pas mis à jour pendant l'exécution de la macro,
donc l'exécution est plus rapide ; de plus, c'est plus confortable pour la vue car
ça évite de voir le défilement des feuilles qui sont successivement affichées ou
masquées (sans, c'est rapide et furtif, mais quand même gênant) ; tu pourras
voir qu'après la fin de la macro, l'écran sera actualisé correctement (rafraîchi),
et tu seras bien sur la feuille de départ.
 
Messages postés
122
Date d'inscription
samedi 28 janvier 2017
Statut
Membre
Dernière intervention
25 mai 2021
2
Pour reprendre ton code ci-dessus, avec un exemple un peu plus complet ça ferait ça ?
Sub changer()
  Dim FX As Worksheet, b As Boolean: FX = ActiveSheet
  Application.ScreenUpdating = False: b = [G45] = "OUI"
Worksheets("procedureCaisse").Visible = [G19] = "OUI"
Worksheets("cadrageClients").Visible = [G20] = "OUI"
Worksheets("cadrageChiffreDAffaires").Visible = [G21] = "OUI"
[G22]
[G23]
...
  Worksheets("methodeDuResultat2").Visible = b
  Worksheets("methodeDuChiffreDAffaires2").Visible = b
  Worksheets("methodeDeLaCapaciteDInvt2").Visible = b
  Worksheets("evaluationSte2").Visible = b
...
  FX.Select
End Sub
>
Messages postés
122
Date d'inscription
samedi 28 janvier 2017
Statut
Membre
Dernière intervention
25 mai 2021

 
Tes 2 lignes #7 et #8 ne sont pas complètes ! peut-être une fausse manip ?

Quand tu écris un programme, veille à bien respecter l'indentation : c'est le fait
que les lignes sont plus ou moins proches de la marge gauche ; ce n'est pas
seulement une question de présentation car ça aide beaucoup pour la lisibilité
et la compréhension du code VBA.

Ton code réécrit donne ceci :


Sub changer()
  Dim FX As Worksheet, b As Boolean: FX = ActiveSheet
  Application.ScreenUpdating = False: b = [G45] = "OUI"
  Worksheets("procedureCaisse").Visible = [G19] = "OUI"
  Worksheets("cadrageClients").Visible = [G20] = "OUI"
  Worksheets("cadrageChiffreDAffaires").Visible = [G21] = "OUI"
  ' [G22] : ?
  ' [G23] : ?
  ' ...
  Worksheets("methodeDuResultat2").Visible = b
  Worksheets("methodeDuChiffreDAffaires2").Visible = b
  Worksheets("methodeDeLaCapaciteDInvt2").Visible = b
  Worksheets("evaluationSte2").Visible = b
  ' ...
  FX.Select
End Sub


Quand tu mets un code VBA dans un message, la 1ère balise est :
<code basic> => code en couleur (selon la syntaxe).  ;)

Exemple : les commentaires sont en vert ; ils ne sont pas pris en
compte lors de l'exécution du programme VBA.

La balise de fin reste la même : </code>
  
Messages postés
122
Date d'inscription
samedi 28 janvier 2017
Statut
Membre
Dernière intervention
25 mai 2021
2
C'est vrai que je n'ai pas fait attention à l'indentation. Il me semble que sur CSS ça le fait tout seul du coup je suis passé à coté.

Merci pour le tuyau, j'écrivais le code VBA dans une balise HTML car je n'avais pas vu VBA ... (je suis vraiment une bille dans cet encodage).

Pour les lignes #7 et #8, elles reprennent la même syntaxe que la ligne précédente ? à savoir : (en complétant un peu)
Sub changer()
  Dim FX As Worksheet, b As Boolean: FX = ActiveSheet
  Application.ScreenUpdating = False: b = [G45] = "OUI"

  Worksheets("procedureCaisse").Visible = [G19] = "OUI"
  Worksheets("cadrageClients").Visible = [G20] = "OUI"
  Worksheets("cadrageChiffreDAffaires").Visible = [G21] = "OUI"
  Worksheets("analyseMarges").Visible = [G22] = "OUI"
  Worksheets("remisesFidelite").Visible = [G23] = "OUI"
  ' ...
  Worksheets("methodeDuResultat2").Visible = b
  Worksheets("methodeDuChiffreDAffaires2").Visible = b
  Worksheets("methodeDeLaCapaciteDInvt2").Visible = b
  Worksheets("evaluationSte2").Visible = b
  ' ...
  Worksheets("cadrageErb").Visible = [G46] = "OUI"
  Worksheets("validationCaisse").Visible = [G47] = "OUI"
  '...
  FX.Select
End Sub

Messages postés
122
Date d'inscription
samedi 28 janvier 2017
Statut
Membre
Dernière intervention
25 mai 2021
2
Quand j'exécute la macro j'ai une erreur :
Erreur d'exécution '91' : Variable objet ou variable de bloc With non définie

Sur cette ligne : (apparemment au niveau du "FX = ActiveSheet")
Dim FX As Worksheet, b As Boolean: FX = ActiveSheet



[EDIT]

Je vous transmets l'intégralité du code modifié selon le premier commentaire laissé par Mike-31 et de Paul avec les boolean. ça sera plus simple je crois.
En réalité, j'ai 2 cellules (G45 et G60) qui doivent afficher 4 onglets à la fois, du coup j'ai essayé de compléter le code (ligne 4), mais il n'a pas l'air d'apprécier ...

Par exemple, si j'écris "OUI" en G60 Excel va afficher tous les onglets entre G45 et G60
Et quand j'écris "OUI" en G45, tous les onglets après G45 s'affichent...

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Sub changer()
Dim b As Boolean
Application.ScreenUpdating = False: b = [G45] = "OUI": b = [G60] = "OUI"
  
If [G19] = "NON" Then Worksheets("procedureCaisse").Visible = False Else Worksheets("procedureCaisse").Visible = True

If [G20] = "NON" Then Worksheets("cadrageClients").Visible = False Else Worksheets("cadrageClients").Visible = True

If [G21] = "NON" Then Worksheets("cadrageChiffreDAffaires").Visible = False Else Worksheets("cadrageChiffreDAffaires").Visible = True

If [G22] = "NON" Then Worksheets("revueAnalytiqueChiffreDAffaires").Visible = False Else Worksheets("revueAnalytiqueChiffreDAffaires").Visible = True

If [G23] = "NON" Then Worksheets("margeParRayons").Visible = False Else Worksheets("margeParRayons").Visible = True

If [G24] = "NON" Then Worksheets("tvaSurVentes").Visible = False Else Worksheets("tvaSurVentes").Visible = True

If [G25] = "NON" Then Worksheets("remiseFidelite").Visible = False Else Worksheets("remiseFidelite").Visible = True

If [G26] = "NON" Then Worksheets("cutOffClients").Visible = False Else Worksheets("cutOffClients").Visible = True

If [G27] = "NON" Then Worksheets("circularisationClients").Visible = False Else Worksheets("circularisationClients").Visible = True




If [G31] = "NON" Then Sheets("assistanceInventairePhy").Visible = False Else Sheets("assistanceInventairePhy").Visible = True

If [G32] = "NON" Then Sheets("concordanceDesStocks").Visible = False Else Sheets("concordanceDesStocks").Visible = True

If [G33] = "NON" Then Sheets("variationDesStocks").Visible = False Else Sheets("variationDesStocks").Visible = True

If [G34] = "NON" Then Sheets("valorisationDesStocksMagasin").Visible = False Else Sheets("valorisationDesStocksMagasin").Visible = True

If [G35] = "NON" Then Sheets("valorisationDesStocksStation").Visible = False Else Sheets("valorisationDesStocksStation").Visible = True

If [G36] = "NON" Then Sheets("provisionPourDepreciation").Visible = False Else Sheets("provisionPourDepreciation").Visible = True

If [G37] = "NON" Then Sheets("coherenceStocks").Visible = False Else Sheets("coherenceStocks").Visible = True



If [G41] = "NON" Then Sheets("cadrageImmobilisations").Visible = False Else Sheets("cadrageImmobilisations").Visible = True

If [G42] = "NON" Then Sheets("acquisitions").Visible = False Else Sheets("acquisitions").Visible = True

If [G43] = "NON" Then Sheets("cessions").Visible = False Else Sheets("cessions").Visible = True

If [G44] = "NON" Then Sheets("amortissements").Visible = False Else Sheets("amortissements").Visible = True

Worksheets("methodeDuResultat2").Visible = b
Worksheets("methodeDuChiffreDAffaires2").Visible = b
Worksheets("methodeDeLaCapaciteDInvt2").Visible = b
Worksheets("evaluationSte2").Visible = b



If [G49] = "NON" Then Sheets("testDecaissement").Visible = False Else Sheets("testDecaissement").Visible = True

If [G50] = "NON" Then Sheets("comptesDeVirement").Visible = False Else Sheets("comptesDeVirement").Visible = True

If [G51] = "NON" Then Sheets("validationERB").Visible = False Else Sheets("validationERB").Visible = True

If [G52] = "NON" Then Sheets("validationCaisse").Visible = False Else Sheets("validationCaisse").Visible = True

If [G53] = "NON" Then Sheets("validationEmprunts").Visible = False Else Sheets("validationEmprunts").Visible = True

If [G54] = "NON" Then Sheets("validationVmp").Visible = False Else Sheets("validationVmp").Visible = True

If [G55] = "NON" Then Sheets("circularisationBanques").Visible = False Else Sheets("circularisationBanques").Visible = True



If [G59] = "NON" Then Sheets("mvmtImmoFi").Visible = False Else Sheets("mvmtImmoFi").Visible = True

Worksheets("methodeDuResultat").Visible = b
Worksheets("methodeDuChiffreDAffaires").Visible = b
Worksheets("methodeDeLaCapaciteDInvt").Visible = b
Worksheets("evaluationSociete").Visible = b




If [G64] = "NON" Then Sheets("contrôleFactAchat").Visible = False Else Sheets("contrôleFactAchat").Visible = True

If [G65] = "NON" Then Sheets("cadrageFournisseurs").Visible = False Else Sheets("cadrageFournisseurs").Visible = True

If [G66] = "NON" Then Sheets("revueAnalytiqueAace").Visible = False Else Sheets("revueAnalytiqueAace").Visible = True

If [G67] = "NON" Then Sheets("loyersImmo").Visible = False Else Sheets("loyersImmo").Visible = True

If [G68] = "NON" Then Sheets("fraisDeplacementDir").Visible = False Else Sheets("fraisDeplacementDir").Visible = True

If [G69] = "NON" Then Sheets("separationChImmo").Visible = False Else Sheets("separationChImmo").Visible = True

If [G70] = "NON" Then Sheets("variationComptesFournisseurs").Visible = False Else Sheets("variationComptesFournisseurs").Visible = True

If [G71] = "NON" Then Sheets("cca").Visible = False Else Sheets("cca").Visible = True

If [G72] = "NON" Then Sheets("par").Visible = False Else Sheets("par").Visible = True

If [G73] = "NON" Then Sheets("fnp").Visible = False Else Sheets("fnp").Visible = True

If [G74] = "NON" Then Sheets("cutOffFournisseurs").Visible = False Else Sheets("cutOffFournisseurs").Visible = True

If [G75] = "NON" Then Sheets("circularisationFournisseurs").Visible = False Else Sheets("circularisationFournisseurs").Visible = True



If [G79] = "NON" Then Sheets("cadrageSalaires").Visible = False Else Sheets("cadrageSalaires").Visible = True

If [G80] = "NON" Then Sheets("revueAnalytiqueChargesDePerso").Visible = False Else Sheets("revueAnalytiqueChargesDePerso").Visible = True

If [G81] = "NON" Then Sheets("remDirigeant").Visible = False Else Sheets("remDirigeant").Visible = True

If [G82] = "NON" Then Sheets("dettesSociales").Visible = False Else Sheets("dettesSociales").Visible = True



If [G86] = "NON" Then Sheets("capitauxPropres").Visible = False Else Sheets("capitauxPropres").Visible = True



If [G90] = "NON" Then Sheets("provLitige").Visible = False Else Sheets("provLitige").Visible = True



If [G94] = "NON" Then Sheets("revueAnalytiqueImpotsEtTaxes").Visible = False Else Sheets("revueAnalytiqueImpotsEtTaxes").Visible = True

If [G95] = "NON" Then Sheets("cadrageTva").Visible = False Else: Sheets("cadrageTva").Visible = True

If [G96] = "NON" Then Sheets("impotSte").Visible = False Else Sheets("impotSte").Visible = True



If [G100] = "NON" Then Sheets("autresDettesCreances").Visible = False Else Sheets("autresDettesCreances").Visible = True



If [G103] = "NON" Then Sheets("testBenford").Visible = False Else Sheets("testBenford").Visible = True

If [G104] = "NON" Then Sheets("modeleConanHolder").Visible = False Else Sheets("modeleConanHolder").Visible = True

If [G105] = "NON" Then Sheets("SIG").Visible = False Else Sheets("SIG").Visible = True

If [G106] = "NON" Then Sheets("CAF").Visible = False Else Sheets("CAF").Visible = True

If [G107] = "NON" Then Sheets("TFT").Visible = False Else Sheets("TFT").Visible = True



If [G111] = "NON" Then Sheets("actif").Visible = False Else Sheets("actif").Visible = True

If [G112] = "NON" Then Sheets("passif").Visible = False Else Sheets("passif").Visible = True

If [G113] = "NON" Then Sheets("cdr1").Visible = False Else Sheets("cdr1").Visible = True

If [G114] = "NON" Then Sheets("cdr2").Visible = False Else Sheets("cdr2").Visible = True



If [G117] = "NON" Then Sheets("listeAjustements").Visible = False Else Sheets("listeAjustements").Visible = True

If [G118] = "NON" Then Sheets("NoteDeSynthese").Visible = False Else Sheets("noteDeSynthese").Visible = True


End Sub
Messages postés
17549
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
24 septembre 2021
4 741
Re,

si tes onglets sont classés ou si tu prends soin de les classer dans un ordre chronologique on peut limiter le code à
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Not Intersect(Target, Range("G19:G118")) Is Nothing Then
Application.ScreenUpdating = False
For Each i In Array(19, 20, 21, 22, 23, 24,25,26,27,28,29,119)
If Cells(i, 7) = "NON" Then Worksheets(i - 17).Visible = False Else If Cells(i, 7) = "OUI" Then Worksheets(i - 17).Visible = True
Next i
Application.ScreenUpdating = True
End If
End Sub

A+
Mike-31

Je suis responsable de ce que je dis, pas de ce que tu comprends...
Messages postés
122
Date d'inscription
samedi 28 janvier 2017
Statut
Membre
Dernière intervention
25 mai 2021
2
Re,

je vois dans ton code "Range ("G19:G118")
En réalité il y a dans cet intervalle des cellules qu'il ne faut pas prendre en compte

Je préfère la première version
Messages postés
17549
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
24 septembre 2021
4 741
Re,

le pilotage de ces onglets me pose problème, à quel moment veux tu les afficher ou les masquer

methodeDuResultat2
methodeDuChiffreDAffaires2
methodeDeLaCapaciteDInvt2
evaluationSte2

hormis le problème de ces 4 onglets, teste ce code
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Union([G19], [G20,G27], [G31,G37], [G41,G43], [G49,G55], [G59], [G64,G75], [G79,G82], [G86], [G90], [G94,G96], [G100], [G103,G107], [G111,G114], [G117,G118])) Is Nothing Then

Application.ScreenUpdating = False
On Error Resume Next
If [G19] = "NON" Then Worksheets("procedureCaisse").Visible = False Else Worksheets("procedureCaisse").Visible = True
If [G20] = "NON" Then Worksheets("cadrageClients").Visible = False Else Worksheets("cadrageClients").Visible = True
If [G21] = "NON" Then Worksheets("cadrageChiffreDAffaires").Visible = False Else Worksheets("cadrageChiffreDAffaires").Visible = True
If [G22] = "NON" Then Worksheets("revueAnalytiqueChiffreDAffaires").Visible = False Else Worksheets("revueAnalytiqueChiffreDAffaires").Visible = True
If [G23] = "NON" Then Worksheets("margeParRayons").Visible = False Else Worksheets("margeParRayons").Visible = True
If [G24] = "NON" Then Worksheets("tvaSurVentes").Visible = False Else Worksheets("tvaSurVentes").Visible = True
If [G25] = "NON" Then Worksheets("remiseFidelite").Visible = False Else Worksheets("remiseFidelite").Visible = True
If [G26] = "NON" Then Worksheets("cutOffClients").Visible = False Else Worksheets("cutOffClients").Visible = True
If [G27] = "NON" Then Worksheets("circularisationClients").Visible = False Else Worksheets("circularisationClients").Visible = True

If [G31] = "NON" Then Sheets("assistanceInventairePhy").Visible = False Else Sheets("assistanceInventairePhy").Visible = True
If [G32] = "NON" Then Sheets("concordanceDesStocks").Visible = False Else Sheets("concordanceDesStocks").Visible = True
If [G33] = "NON" Then Sheets("variationDesStocks").Visible = False Else Sheets("variationDesStocks").Visible = True
If [G34] = "NON" Then Sheets("valorisationDesStocksMagasin").Visible = False Else Sheets("valorisationDesStocksMagasin").Visible = True
If [G35] = "NON" Then Sheets("valorisationDesStocksStation").Visible = False Else Sheets("valorisationDesStocksStation").Visible = True
If [G36] = "NON" Then Sheets("provisionPourDepreciation").Visible = False Else Sheets("provisionPourDepreciation").Visible = True
If [G37] = "NON" Then Sheets("coherenceStocks").Visible = False Else Sheets("coherenceStocks").Visible = True

If [G41] = "NON" Then Sheets("cadrageImmobilisations").Visible = False Else Sheets("cadrageImmobilisations").Visible = True
If [G42] = "NON" Then Sheets("acquisitions").Visible = False Else Sheets("acquisitions").Visible = True
If [G43] = "NON" Then Sheets("cessions").Visible = False Else Sheets("cessions").Visible = True
If [G43] = "NON" Then Sheets("amortissements").Visible = False Else Sheets("amortissements").Visible = True

If [G49] = "NON" Then Sheets("testDecaissement").Visible = False Else Sheets("testDecaissement").Visible = True
If [G50] = "NON" Then Sheets("comptesDeVirement").Visible = False Else Sheets("comptesDeVirement").Visible = True
If [G51] = "NON" Then Sheets("validationERB").Visible = False Else Sheets("validationERB").Visible = True
If [G52] = "NON" Then Sheets("validationCaisse").Visible = False Else Sheets("validationCaisse").Visible = True
If [G53] = "NON" Then Sheets("validationEmprunts").Visible = False Else Sheets("validationEmprunts").Visible = True
If [G54] = "NON" Then Sheets("validationVmp").Visible = False Else Sheets("validationVmp").Visible = True
If [G55] = "NON" Then Sheets("circularisationBanques").Visible = False Else Sheets("circularisationBanques").Visible = True

If [G59] = "NON" Then Sheets("mvmtImmoFi").Visible = False Else Sheets("mvmtImmoFi").Visible = True

If [G64] = "NON" Then Sheets("contrôleFactAchat").Visible = False Else Sheets("contrôleFactAchat").Visible = True
If [G65] = "NON" Then Sheets("cadrageFournisseurs").Visible = False Else Sheets("cadrageFournisseurs").Visible = True
If [G66] = "NON" Then Sheets("revueAnalytiqueAace").Visible = False Else Sheets("revueAnalytiqueAace").Visible = True
If [G67] = "NON" Then Sheets("loyersImmo").Visible = False Else Sheets("loyersImmo").Visible = True
If [G68] = "NON" Then Sheets("fraisDeplacementDir").Visible = False Else Sheets("fraisDeplacementDir").Visible = True
If [G69] = "NON" Then Sheets("separationChImmo").Visible = False Else Sheets("separationChImmo").Visible = True
If [G70] = "NON" Then Sheets("variationComptesFournisseurs").Visible = False Else Sheets("variationComptesFournisseurs").Visible = True
If [G71] = "NON" Then Sheets("cca").Visible = False Else Sheets("cca").Visible = True
If [G72] = "NON" Then Sheets("par").Visible = False Else Sheets("par").Visible = True
If [G73] = "NON" Then Sheets("fnp").Visible = False Else Sheets("fnp").Visible = True
If [G74] = "NON" Then Sheets("cutOffFournisseurs").Visible = False Else Sheets("cutOffFournisseurs").Visible = True
If [G75] = "NON" Then Sheets("circularisationFournisseurs").Visible = False Else Sheets("circularisationFournisseurs").Visible = True

If [G79] = "NON" Then Sheets("cadrageSalaires").Visible = False Else Sheets("cadrageSalaires").Visible = True
If [G80] = "NON" Then Sheets("revueAnalytiqueChargesDePerso").Visible = False Else Sheets("revueAnalytiqueChargesDePerso").Visible = True
If [G81] = "NON" Then Sheets("remDirigeant").Visible = False Else Sheets("remDirigeant").Visible = True
If [G82] = "NON" Then Sheets("dettesSociales").Visible = False Else Sheets("dettesSociales").Visible = True

If [G86] = "NON" Then Sheets("capitauxPropres").Visible = False Else Sheets("capitauxPropres").Visible = True

If [G90] = "NON" Then Sheets("provLitige").Visible = False Else Sheets("provLitige").Visible = True

If [G94] = "NON" Then Sheets("revueAnalytiqueImpotsEtTaxes").Visible = False Else Sheets("revueAnalytiqueImpotsEtTaxes").Visible = True
If [G95] = "NON" Then Sheets("cadrageTva").Visible = False Else: Sheets("cadrageTva").Visible = True
If [G96] = "NON" Then Sheets("impotSte").Visible = False Else Sheets("impotSte").Visible = True

If [G100] = "NON" Then Sheets("autresDettesCreances").Visible = False Else Sheets("autresDettesCreances").Visible = True

If [G103] = "NON" Then Sheets("testBenford").Visible = False Else Sheets("testBenford").Visible = True
If [G104] = "NON" Then Sheets("modeleConanHolder").Visible = False Else Sheets("modeleConanHolder").Visible = True
If [G105] = "NON" Then Sheets("SIG").Visible = False Else Sheets("SIG").Visible = True
If [G106] = "NON" Then Sheets("CAF").Visible = False Else Sheets("CAF").Visible = True
If [G107] = "NON" Then Sheets("TFT").Visible = False Else Sheets("TFT").Visible = True

If [G111] = "NON" Then Sheets("actif").Visible = False Else Sheets("actif").Visible = True
If [G112] = "NON" Then Sheets("passif").Visible = False Else Sheets("passif").Visible = True
If [G113] = "NON" Then Sheets("cdr1").Visible = False Else Sheets("cdr1").Visible = True
If [G114] = "NON" Then Sheets("cdr2").Visible = False Else Sheets("cdr2").Visible = True

If [G117] = "NON" Then Sheets("listeAjustements").Visible = False Else Sheets("listeAjustements").Visible = True
If [G118] = "NON" Then Sheets("NoteDeSynthese").Visible = False Else Sheets("noteDeSynthese").Visible = True
Application.ScreenUpdating = False
End If
End Sub

Messages postés
122
Date d'inscription
samedi 28 janvier 2017
Statut
Membre
Dernière intervention
25 mai 2021
2
Re,

Pour ces 4 onglets, je souhaite les afficher quand la cellule G45 est égale à "OUI" et les masquer si elle est égale à "NON" :

methodeDuResultat2
methodeDuChiffreDAffaires2
methodeDeLaCapaciteDInvt2
evaluationSte2

Et pour ces 4 onglets, je souhaite les afficher quand la cellule G60 est égale à "OUI" et les masquer si elle est égale à "NON" :

methodeDuResultat
methodeDuChiffreDAffaires
methodeDeLaCapaciteDInvt
evaluationSociete

[EDIT]
J'ai essayé ton code. Il me dit "erreur d'exécution 424 objet requis" sur cette ligne :
If Not Intersect(Target, Union([G19], [G20,G27], [G31,G37], [G41,G43], [G49,G55], [G59], [G64,G75], [G79,G82], [G86], [G90], [G94,G96], [G100], [G103,G107], [G111,G114], [G117,G118])) Is Nothing Then

Sachant que juste après ta première ligne et avant l'extrait ci-dessus j'ai rajouté :
Sub changer()
Messages postés
17549
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
24 septembre 2021
4 741
Re,
non Sub changer() ne sert à rien et génère l'erreur

teste mon code tel qu'il est

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

Dim sh As Variant
If Not Intersect(Target, Union([G19], [G20,G27], [G31,G37], [G41,G43], [G45], [G49,G55], [G59,G60], [G64,G75], [G79,G82], [G86], [G90], [G94,G96], [G100], [G103,G107], [G111,G114], [G117,G118])) Is Nothing Then

Application.ScreenUpdating = False
On Error Resume Next

If [G19] = "NON" Then Worksheets("procedureCaisse").Visible = False Else Worksheets("procedureCaisse").Visible = True
If [G20] = "NON" Then Worksheets("cadrageClients").Visible = False Else Worksheets("cadrageClients").Visible = True
If [G21] = "NON" Then Worksheets("cadrageChiffreDAffaires").Visible = False Else Worksheets("cadrageChiffreDAffaires").Visible = True
If [G22] = "NON" Then Worksheets("revueAnalytiqueChiffreDAffaires").Visible = False Else Worksheets("revueAnalytiqueChiffreDAffaires").Visible = True
If [G23] = "NON" Then Worksheets("margeParRayons").Visible = False Else Worksheets("margeParRayons").Visible = True
If [G24] = "NON" Then Worksheets("tvaSurVentes").Visible = False Else Worksheets("tvaSurVentes").Visible = True
If [G25] = "NON" Then Worksheets("remiseFidelite").Visible = False Else Worksheets("remiseFidelite").Visible = True
If [G26] = "NON" Then Worksheets("cutOffClients").Visible = False Else Worksheets("cutOffClients").Visible = True
If [G27] = "NON" Then Worksheets("circularisationClients").Visible = False Else Worksheets("circularisationClients").Visible = True

If [G31] = "NON" Then Sheets("assistanceInventairePhy").Visible = False Else Sheets("assistanceInventairePhy").Visible = True
If [G32] = "NON" Then Sheets("concordanceDesStocks").Visible = False Else Sheets("concordanceDesStocks").Visible = True
If [G33] = "NON" Then Sheets("variationDesStocks").Visible = False Else Sheets("variationDesStocks").Visible = True
If [G34] = "NON" Then Sheets("valorisationDesStocksMagasin").Visible = False Else Sheets("valorisationDesStocksMagasin").Visible = True
If [G35] = "NON" Then Sheets("valorisationDesStocksStation").Visible = False Else Sheets("valorisationDesStocksStation").Visible = True
If [G36] = "NON" Then Sheets("provisionPourDepreciation").Visible = False Else Sheets("provisionPourDepreciation").Visible = True
If [G37] = "NON" Then Sheets("coherenceStocks").Visible = False Else Sheets("coherenceStocks").Visible = True

If [G41] = "NON" Then Sheets("cadrageImmobilisations").Visible = False Else Sheets("cadrageImmobilisations").Visible = True
If [G42] = "NON" Then Sheets("acquisitions").Visible = False Else Sheets("acquisitions").Visible = True
If [G43] = "NON" Then Sheets("cessions").Visible = False Else Sheets("cessions").Visible = True
If [G43] = "NON" Then Sheets("amortissements").Visible = False Else Sheets("amortissements").Visible = True

For Each sh In Array("methodeDuResultat2", "methodeDuChiffreDAffaires2", "methodeDeLaCapaciteDInvt2", "evaluationSte2")
If [G45] = "NON" Then Sheets(sh).Visible = False Else Sheets(sh).Visible = True
Next sh

If [G49] = "NON" Then Sheets("testDecaissement").Visible = False Else Sheets("testDecaissement").Visible = True
If [G50] = "NON" Then Sheets("comptesDeVirement").Visible = False Else Sheets("comptesDeVirement").Visible = True
If [G51] = "NON" Then Sheets("validationERB").Visible = False Else Sheets("validationERB").Visible = True
If [G52] = "NON" Then Sheets("validationCaisse").Visible = False Else Sheets("validationCaisse").Visible = True
If [G53] = "NON" Then Sheets("validationEmprunts").Visible = False Else Sheets("validationEmprunts").Visible = True
If [G54] = "NON" Then Sheets("validationVmp").Visible = False Else Sheets("validationVmp").Visible = True
If [G55] = "NON" Then Sheets("circularisationBanques").Visible = False Else Sheets("circularisationBanques").Visible = True

If [G59] = "NON" Then Sheets("mvmtImmoFi").Visible = False Else Sheets("mvmtImmoFi").Visible = True

For Each sh In Array("methodeDuResultat", "methodeDuChiffreDAffaires", "methodeDeLaCapaciteDInvt", "evaluationSte")
If [G60] = "NON" Then Sheets(sh).Visible = False Else Sheets(sh).Visible = True
Next sh

If [G64] = "NON" Then Sheets("contrôleFactAchat").Visible = False Else Sheets("contrôleFactAchat").Visible = True
If [G65] = "NON" Then Sheets("cadrageFournisseurs").Visible = False Else Sheets("cadrageFournisseurs").Visible = True
If [G66] = "NON" Then Sheets("revueAnalytiqueAace").Visible = False Else Sheets("revueAnalytiqueAace").Visible = True
If [G67] = "NON" Then Sheets("loyersImmo").Visible = False Else Sheets("loyersImmo").Visible = True
If [G68] = "NON" Then Sheets("fraisDeplacementDir").Visible = False Else Sheets("fraisDeplacementDir").Visible = True
If [G69] = "NON" Then Sheets("separationChImmo").Visible = False Else Sheets("separationChImmo").Visible = True
If [G70] = "NON" Then Sheets("variationComptesFournisseurs").Visible = False Else Sheets("variationComptesFournisseurs").Visible = True
If [G71] = "NON" Then Sheets("cca").Visible = False Else Sheets("cca").Visible = True
If [G72] = "NON" Then Sheets("par").Visible = False Else Sheets("par").Visible = True
If [G73] = "NON" Then Sheets("fnp").Visible = False Else Sheets("fnp").Visible = True
If [G74] = "NON" Then Sheets("cutOffFournisseurs").Visible = False Else Sheets("cutOffFournisseurs").Visible = True
If [G75] = "NON" Then Sheets("circularisationFournisseurs").Visible = False Else Sheets("circularisationFournisseurs").Visible = True

If [G79] = "NON" Then Sheets("cadrageSalaires").Visible = False Else Sheets("cadrageSalaires").Visible = True
If [G80] = "NON" Then Sheets("revueAnalytiqueChargesDePerso").Visible = False Else Sheets("revueAnalytiqueChargesDePerso").Visible = True
If [G81] = "NON" Then Sheets("remDirigeant").Visible = False Else Sheets("remDirigeant").Visible = True
If [G82] = "NON" Then Sheets("dettesSociales").Visible = False Else Sheets("dettesSociales").Visible = True

If [G86] = "NON" Then Sheets("capitauxPropres").Visible = False Else Sheets("capitauxPropres").Visible = True

If [G90] = "NON" Then Sheets("provLitige").Visible = False Else Sheets("provLitige").Visible = True

If [G94] = "NON" Then Sheets("revueAnalytiqueImpotsEtTaxes").Visible = False Else Sheets("revueAnalytiqueImpotsEtTaxes").Visible = True
If [G95] = "NON" Then Sheets("cadrageTva").Visible = False Else: Sheets("cadrageTva").Visible = True
If [G96] = "NON" Then Sheets("impotSte").Visible = False Else Sheets("impotSte").Visible = True

If [G100] = "NON" Then Sheets("autresDettesCreances").Visible = False Else Sheets("autresDettesCreances").Visible = True

If [G103] = "NON" Then Sheets("testBenford").Visible = False Else Sheets("testBenford").Visible = True
If [G104] = "NON" Then Sheets("modeleConanHolder").Visible = False Else Sheets("modeleConanHolder").Visible = True
If [G105] = "NON" Then Sheets("SIG").Visible = False Else Sheets("SIG").Visible = True
If [G106] = "NON" Then Sheets("CAF").Visible = False Else Sheets("CAF").Visible = True
If [G107] = "NON" Then Sheets("TFT").Visible = False Else Sheets("TFT").Visible = True

If [G111] = "NON" Then Sheets("actif").Visible = False Else Sheets("actif").Visible = True
If [G112] = "NON" Then Sheets("passif").Visible = False Else Sheets("passif").Visible = True
If [G113] = "NON" Then Sheets("cdr1").Visible = False Else Sheets("cdr1").Visible = True
If [G114] = "NON" Then Sheets("cdr2").Visible = False Else Sheets("cdr2").Visible = True

If [G117] = "NON" Then Sheets("listeAjustements").Visible = False Else Sheets("listeAjustements").Visible = True
If [G118] = "NON" Then Sheets("NoteDeSynthese").Visible = False Else Sheets("noteDeSynthese").Visible = True
Application.ScreenUpdating = False
End If
End Sub

A+
Mike-31

Je suis responsable de ce que je dis, pas de ce que tu comprends...
Messages postés
122
Date d'inscription
samedi 28 janvier 2017
Statut
Membre
Dernière intervention
25 mai 2021
2
J'ai copié collé ton code
Quand j'exécute, Excel me dit qu'il est impossible d'exécuter car la macro n'est pas disponible dans ce classeur.

Effectivement, quand je vais dans
Développeur => Macro
Dans la liste des macros disponibles, je ne vois plus son nom ...
Messages postés
17549
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
24 septembre 2021
4 741
Re,

c'est normal le code macro est à coller dans les propriétés de ta feuille pilote et non dans un module, exemple si tes commandes ou plutôt tes cellule G19 etc ... sont sur la feuille nommée ex. Feuil1
clic droit sur l'onglet de cette feuille "Feuil1"/Visualiser le code et colle la totalité de mon code (attention il ne peut y avoir qu'un seul code dont la syntaxe est (Private Sub Worksheet_Change(ByVal Target As Range)).

Lorsque tu saisiras et sélectionneras OUI ou NON dans une des cellules pilotes colonne G les onglets correspondant se masqueront ou s'afficheront suivant ta sélection

A+
Mike-31

Je suis responsable de ce que je dis, pas de ce que tu comprends...
Messages postés
122
Date d'inscription
samedi 28 janvier 2017
Statut
Membre
Dernière intervention
25 mai 2021
2
d'accord j'ai fait ce que tu m'a dit

Mais après comment exécuter la macro ?
Dans "développeur" => "Macro" il n'y a plus le nom de la macro qui s'affiche

Et quand je met "OUI" ou "NON" dans les cellules de la colonne G ça n'affiche ou masque pas automatiquement

Je suis vraiment pas doué ...

[EDIT]
Je viens remarquer que ça se lance tout seul à un détail près :
La colonne G se remplit de OUI et NON via une formule. Je crois qu'il faut que je supprime les formules et que j'écrive OUI ou NON à la main sinon ça ne fonctionne pas.

Sinon le début du code est un peu chaud, je crois les intervalles sont pas géniales :
If Not Intersect(Target, Union([G19], [G20,G27], [G31,G37], [G41,G43], [G45], [G49,G55], [G59,G60], [G64,G75], [G79,G82], [G86], [G90], [G94,G96], [G100], [G103,G107], [G111,G114], [G117,G118])) Is Nothing Then


Par exemple si je mets OUI en G31 (ici intervalle [G31,G37]), ça affiche G31 mais dès G32 quand j'écris OUI, rien ne se passe, et de même jusque G37.
Du coup j'ai essayé ceci : [G31],[G32],[G33],[G34],[G35],[G36],[G37]
et ça fonctionne.
Messages postés
17549
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
24 septembre 2021
4 741
Re,

le code s'exécute automatiquement dès que tu changes ta valeur OUI ou NON dans les cellules colonne G Feuil1
regarde l'exemple avec ce lien, il manque à créer quelques onglets mais il fonctionne

https://www.cjoint.com/c/GGBokKbH5hj


Messages postés
122
Date d'inscription
samedi 28 janvier 2017
Statut
Membre
Dernière intervention
25 mai 2021
2
Est-ce que le fait que tu me l'ai transmis en .xls change qqch sur le bon fonctionnement ?
Moi ça ne fait rien ...
Messages postés
122
Date d'inscription
samedi 28 janvier 2017
Statut
Membre
Dernière intervention
25 mai 2021
2
Re,

Moi par exemple pour l'intervalle [G31,G37] ça va bien fonctionner pour les feuilles G31 et G37 mais pour celles du milieu, rien ne se passe.

[EDIT]
J'ai trouvé ! :)
Il faut écrire l'intervalle [G31:G37] et non [G31,G37]
Messages postés
17549
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
24 septembre 2021
4 741
Re,

Ah oui bien sur qu'il faut un double point, à faire plusieurs choses en même temps.
merci Paul bien vu

remplace ou modifie la ligne de code comme cela

If Not Intersect(Target, Union([G19], [G20:G27], [G31:G37], [G41:G43], [G45], [G49:G55], [G59:G60], [G64:G75], [G79:G82], [G86], [G90], [G94:G96], [G100], [G103:G107], [G111:G114], [G117:G118])) Is Nothing Then

avec le fichier modifié
https://www.cjoint.com/c/GGBpmW0vsej

A+
Mike-31

Je suis responsable de ce que je dis, pas de ce que tu comprends...
Messages postés
122
Date d'inscription
samedi 28 janvier 2017
Statut
Membre
Dernière intervention
25 mai 2021
2
Nickel ça fonctionne comme je voulais ! :)

Merci à tous pour votre contribution !

Je vais pouvoir mettre le sujet en résolu
Messages postés
17549
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
24 septembre 2021
4 741
Re,

tu as remarqué que vite fait je t'ai créé un bouton pour lister tes onglets visibles
Messages postés
122
Date d'inscription
samedi 28 janvier 2017
Statut
Membre
Dernière intervention
25 mai 2021
2
Re,

Oui effectivement ça peut être utile
Il faut que je vois où je peux l'intégrer

Merci :)
Toute amélioration est la bienvenue
Messages postés
17549
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
24 septembre 2021
4 741
Re,

dans le code du bouton tu as également la ligne de code pour lister les onglets qui eux sont masqués si tu veux
Messages postés
17549
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
24 septembre 2021
4 741
Bonjour,

Pour ma part je n'ai pas tout compris l'affichage de 10 onglets et sur quel critères
par contre tu peux simplifier ton code, exemple tu peux remplacer
If [G19] = "NON" Then
Worksheets("procedureCaisse").Visible = False
ElseIf [G19] = "OUI" Then
Worksheets("procedureCaisse").Visible = True
End If


par
If [G19] = "NON" Then Worksheets("procedureCaisse").Visible = False Else Worksheets("procedureCaisse").Visible = True


et idem pour les autres bouts, mais il serait préférable de faire une union ce qui simplifierai encore plus le code et supprimerait le risque d'erreur et plantage du code.
je reviens dans l'après midi avec un code
A+
Mike-31

Je suis responsable de ce que je dis, pas de ce que tu comprends...
Messages postés
122
Date d'inscription
samedi 28 janvier 2017
Statut
Membre
Dernière intervention
25 mai 2021
2
Bonjour, merci pour ta réponse.

J'ai une feuille sur laquelle de G19 à G118 je peux écrire "OUI" ou "NON".
Chaque cellule fait référence à un onglet du classeur.

Quand j'exécute la macro, Excel doit masquer tous les onglets où la cellule en question est écrit "NON" et afficher les onglets pour lesquelles la cellule en question est "OUI".
Messages postés
122
Date d'inscription
samedi 28 janvier 2017
Statut
Membre
Dernière intervention
25 mai 2021
2
J'ai essayé avec ton nouveau code et ça fonctionne merci ! :)

Par contre j'ai un autre soucis que je ne comprends pas. Quand j'exécute la macro, Excel m'emmène j'ai l'impression un peu au hasard sur le dernier ou l'avant dernier onglet qui s'est affiché.
J'aimerai rester sur l'onglet sur lequel j'ai le bouton avec la macro.

[EDIT]
Dernière question, si j'ai ce genre de code, si j'écris tout à la suite sur une seule ligne, j'ai une erreur qui s'affiche, comment y remédier ?

If [G45] = "NON" Then
Sheets("methodeDuResultat2").Visible = False
Sheets("methodeDuChiffreDAffaires2").Visible = False
Sheets("methodeDeLaCapaciteDInvt2").Visible = False
Sheets("evaluationSte2").Visible = False
ElseIf [G45] = "OUI" Then
Sheets("methodeDuResultat2").Visible = True
Sheets("methodeDuChiffreDAffaires2").Visible = True
Sheets("methodeDeLaCapaciteDInvt2").Visible = True
Sheets("evaluationSte2").Visible = True
End If
>
Messages postés
122
Date d'inscription
samedi 28 janvier 2017
Statut
Membre
Dernière intervention
25 mai 2021

 
Bonjour F60lebaladinverni,

1) Pour rester sur la même feuille de départ :
    a) En début de macro : Dim FX As Worksheet: FX = ActiveSheet
    b) En fin de macro : FX.Select

2) Ton code peut être simplifié ainsi :


  Dim b As Boolean: b = [G45] = "OUI"
  Worksheets("methodeDuResultat2").Visible = b
  Worksheets("methodeDuChiffreDAffaires2").Visible = b
  Worksheets("methodeDeLaCapaciteDInvt2").Visible = b
  Worksheets("evaluationSte2").Visible = b


Cordialement