Excel afficher masquer un onglet

Résolu
F60lebaladinverni Messages postés 125 Date d'inscription   Statut Membre Dernière intervention   -  
Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   -
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

  1. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    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...
    0
    1. F60lebaladinverni Messages postés 125 Date d'inscription   Statut Membre Dernière intervention   2
       
      Merci Mike-31

      J'essaye demain matin au boulot et je te tiens au courant
      Par contre je ne comprends pas la 3ème ligne :
      If Not Intersect(Target, Union([G19], [G20], [G21], [G22])) Is Nothing

      Il faut que je continue comme ça jusque "G118" !?
      0
    2. paul > F60lebaladinverni Messages postés 125 Date d'inscription   Statut Membre Dernière intervention  
       
      Je crois que tu n'as pas vu mon message de 15:09.  ;)
      0
    3. F60lebaladinverni Messages postés 125 Date d'inscription   Statut Membre Dernière intervention   2
       
      Bonjour Paul,

      Si je l'ai vu mais j'avoue ne pas avoir tout compris non plus (je suis vraiment novice en VBA ... :/)


      En gros je dois écrire par exemple (en n'écrivant que quelques lignes) :
      Sub changer()
      Dim FX As Worksheet: FX = ActiveSheet 
      
      If [G19] = "NON" Then Worksheets("procedureCaisse").Visible = False Else Worksheets("procedureCaisse").Visible = True 
      
      Dim b As Boolean: b = [G45] = "OUI"
      Worksheets("methodeDuResultat2").Visible = b
      Worksheets("methodeDuChiffreDAffaires2").Visible = b
      Worksheets("methodeDeLaCapaciteDInvt2").Visible = b
      Worksheets("evaluationSte2").Visible = b
      
      FX.Select 
      
      End Sub
      
      0
    4. paul > F60lebaladinverni Messages postés 125 Date d'inscription   Statut Membre Dernière intervention  
       
       
      Ton code VBA modifié :

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

      Merci de me donner ton avis.
       
      0
    5. F60lebaladinverni Messages postés 125 Date d'inscription   Statut Membre Dernière intervention   2
       
      J'essaye demain matin (le fichier est sur mon ordinateur professionnel) et je te tiens au courant.

      Merci :)

      [EDIT]
      Cette partie de ton code sert à quoi ?
      Application.ScreenUpdating = False
      0
  2. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    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...
    0
    1. F60lebaladinverni Messages postés 125 Date d'inscription   Statut Membre Dernière intervention   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
      0
  3. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    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

    0
    1. F60lebaladinverni Messages postés 125 Date d'inscription   Statut Membre Dernière intervention   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()
      0
  4. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    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...
    0
    1. F60lebaladinverni Messages postés 125 Date d'inscription   Statut Membre Dernière intervention   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 ...
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    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...
    0
    1. F60lebaladinverni Messages postés 125 Date d'inscription   Statut Membre Dernière intervention   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.
      0
  7. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    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

    0
    1. F60lebaladinverni Messages postés 125 Date d'inscription   Statut Membre Dernière intervention   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 ...
      0
    2. F60lebaladinverni Messages postés 125 Date d'inscription   Statut Membre Dernière intervention   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]
      0
  8. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    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...
    0
    1. F60lebaladinverni Messages postés 125 Date d'inscription   Statut Membre Dernière intervention   2
       
      Nickel ça fonctionne comme je voulais ! :)

      Merci à tous pour votre contribution !

      Je vais pouvoir mettre le sujet en résolu
      0
  9. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Re,

    tu as remarqué que vite fait je t'ai créé un bouton pour lister tes onglets visibles
    0
    1. F60lebaladinverni Messages postés 125 Date d'inscription   Statut Membre Dernière intervention   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
      0
    2. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
       
      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
      0
  10. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    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...
    -2
    1. F60lebaladinverni Messages postés 125 Date d'inscription   Statut Membre Dernière intervention   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".
      0
    2. F60lebaladinverni Messages postés 125 Date d'inscription   Statut Membre Dernière intervention   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
      0
      1. paul > F60lebaladinverni Messages postés 125 Date d'inscription   Statut Membre Dernière intervention  
         
         
        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
         
        0