Excel afficher masquer un onglet

Résolu/Fermé
F60lebaladinverni Messages postés 126 Date d'inscription samedi 28 janvier 2017 Statut Membre Dernière intervention 7 avril 2023 - Modifié le 26 juil. 2017 à 11:53
Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 - 27 juil. 2017 à 18:14
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
A voir également:

9 réponses

Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
Modifié le 26 juil. 2017 à 20:30
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
F60lebaladinverni Messages postés 126 Date d'inscription samedi 28 janvier 2017 Statut Membre Dernière intervention 7 avril 2023 2
26 juil. 2017 à 21:39
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
paul > F60lebaladinverni Messages postés 126 Date d'inscription samedi 28 janvier 2017 Statut Membre Dernière intervention 7 avril 2023
26 juil. 2017 à 21:45
Je crois que tu n'as pas vu mon message de 15:09.  ;)
0
F60lebaladinverni Messages postés 126 Date d'inscription samedi 28 janvier 2017 Statut Membre Dernière intervention 7 avril 2023 2
26 juil. 2017 à 21:53
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
paul > F60lebaladinverni Messages postés 126 Date d'inscription samedi 28 janvier 2017 Statut Membre Dernière intervention 7 avril 2023
26 juil. 2017 à 22:04
 
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
F60lebaladinverni Messages postés 126 Date d'inscription samedi 28 janvier 2017 Statut Membre Dernière intervention 7 avril 2023 2
Modifié le 26 juil. 2017 à 22:15
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
Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
Modifié le 26 juil. 2017 à 23:46
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
F60lebaladinverni Messages postés 126 Date d'inscription samedi 28 janvier 2017 Statut Membre Dernière intervention 7 avril 2023 2
26 juil. 2017 à 23:52
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
Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
27 juil. 2017 à 10:35
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
F60lebaladinverni Messages postés 126 Date d'inscription samedi 28 janvier 2017 Statut Membre Dernière intervention 7 avril 2023 2
Modifié le 27 juil. 2017 à 12:26
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
Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
Modifié le 27 juil. 2017 à 13:20
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
F60lebaladinverni Messages postés 126 Date d'inscription samedi 28 janvier 2017 Statut Membre Dernière intervention 7 avril 2023 2
27 juil. 2017 à 14:45
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
Modifié le 27 juil. 2017 à 15:18
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
F60lebaladinverni Messages postés 126 Date d'inscription samedi 28 janvier 2017 Statut Membre Dernière intervention 7 avril 2023 2
Modifié le 27 juil. 2017 à 15:58
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
Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
27 juil. 2017 à 16:12
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
F60lebaladinverni Messages postés 126 Date d'inscription samedi 28 janvier 2017 Statut Membre Dernière intervention 7 avril 2023 2
27 juil. 2017 à 16:47
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
F60lebaladinverni Messages postés 126 Date d'inscription samedi 28 janvier 2017 Statut Membre Dernière intervention 7 avril 2023 2
Modifié le 27 juil. 2017 à 16:59
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
Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
Modifié le 27 juil. 2017 à 17:13
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
F60lebaladinverni Messages postés 126 Date d'inscription samedi 28 janvier 2017 Statut Membre Dernière intervention 7 avril 2023 2
27 juil. 2017 à 17:15
Nickel ça fonctionne comme je voulais ! :)

Merci à tous pour votre contribution !

Je vais pouvoir mettre le sujet en résolu
0
Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
27 juil. 2017 à 17:18
Re,

tu as remarqué que vite fait je t'ai créé un bouton pour lister tes onglets visibles
0
F60lebaladinverni Messages postés 126 Date d'inscription samedi 28 janvier 2017 Statut Membre Dernière intervention 7 avril 2023 2
27 juil. 2017 à 17:52
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
Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
Modifié le 27 juil. 2017 à 18:24
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
Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
Modifié le 26 juil. 2017 à 12:13
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
F60lebaladinverni Messages postés 126 Date d'inscription samedi 28 janvier 2017 Statut Membre Dernière intervention 7 avril 2023 2
26 juil. 2017 à 14:20
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
F60lebaladinverni Messages postés 126 Date d'inscription samedi 28 janvier 2017 Statut Membre Dernière intervention 7 avril 2023 2
Modifié le 26 juil. 2017 à 14:45
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
paul > F60lebaladinverni Messages postés 126 Date d'inscription samedi 28 janvier 2017 Statut Membre Dernière intervention 7 avril 2023
Modifié le 26 juil. 2017 à 15:22
 
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