Macro RAZ avec masquage de feuille

Bonjour,

J'ai un fichier avec plusieurs feuilles qui restent affichées en permanence avec un premier onglet "PARAMETRAGE" qui va conditionner le reste du fichier (affichage des pages en fonction d'une cellule).

J'avais écris le code suivant pour la RAZ de la page :

Sub RAZParametrage()

' RAZ des cellules modifiées sur la feuille PARAMETRAGE avec message de confirmation

If MsgBox("Etes-vous sûr(e) de vouloir effectuer une RAZ de la page,", vbYesNo, "Demande de confirmation") = vbYes Then

Sheets("PARAMETRAGE").Range("C10:C12,C15,C19:C27,C30:C33,C36:C39,C46,B42:B45,B46,E42:E45,F46:F48").ClearContents

End If

End Sub

Jusque là, rien de sorcier.

Mais j'ai ensuite ajouté ma macro pour afficher les feuilles en fonction de la valeur de la cellule C15 dans mon onglet "PARAMETRAGE". Mon Code :

Sub AfficherFeuille()

If Sheets("PARAMETRAGE").Range("C15") = "Pau" Then

Sheets("Liste Acier").Visible = True

Sheets("Liste Cuivre").Visible = True

Sheets("Liste Divers 1").Visible = True

Sheets("Liste Divers 2").Visible = True

Sheets("Bordereau AQUITAINE").Visible = True

End If

If Sheets("PARAMETRAGE").Range("C15") = "Concarneau" Then

Sheets("Liste Matériel").Visible = True

Sheets("Bordereau DRO").Visible = True

End If

If Sheets("PARAMETRAGE").Range("C15") = "Biguglia" Then

Sheets("Liste Acier").Visible = True

Sheets("Liste Cuivre").Visible = True

Sheets("Liste Divers 1").Visible = True

Sheets("Liste Divers 2").Visible = True

Sheets("Bordereau CORSE CI").Visible = True

Sheets("Bordereau CORSE CM").Visible = True

End If

If Sheets("PARAMETRAGE").Range("C15") = "Aussonne" Or Sheets("PARAMETRAGE").Range("C15") = "Aussonne Client" Then

Sheets("Liste Acier").Visible = True

Sheets("Liste Cuivre").Visible = True

Sheets("Liste Divers 1").Visible = True

Sheets("Liste Divers 2").Visible = True

Sheets("Bordereau MIDI PY").Visible = True

End If

If Sheets("PARAMETRAGE").Range("C15") = "Villars" Then

Sheets("Liste Acier").Visible = True

Sheets("Liste Cuivre").Visible = True

Sheets("Liste Divers 1").Visible = True

Sheets("Liste Divers 2").Visible = True

Sheets("Bordereau RAB").Visible = True

End If

If Sheets("PARAMETRAGE").Range("C15") = "Marseille" Then

Sheets("Liste Acier").Visible = True

Sheets("Liste Cuivre").Visible = True

Sheets("Liste Divers 1").Visible = True

Sheets("Liste Divers 2").Visible = True

Sheets("Bordereau PACA").Visible = True

End If

End Sub

Code qui fonctionne très bien.

Mais ensuite quand j'ai fait ma RAZ, je me suis rendue compte que les pages affichées devaient aussi se masquer.

J'ai donc modifié ma macro RAZ :

Sub RAZParametrage()

' RAZ des cellules modifiées sur la feuille PARAMETRAGE avec message de confirmation

Dim Wsv As Worksheet

Dim Wsh As Worksheet

Set Wsv = Sheets(Array("PAGE DE GARDE", "COPRO", "ABAC", "PROJET TECHNIQUE", "CARNET DE BORD", "ANALYSE DE RISQUES", "AUTORISATION DE TRAVAUX", "FICHE DE CONTROLE"))

Set Wsh = Sheets(Array("Liste Acier", "Liste Cuivre", "Liste Divers 1", "Liste Divers 2", "Liste Matériel", "Bordereau AQUITAINE", "Bordereau DRO", "Bordereau CORSE CI", "Bordereau CORSE CM", "Bordereau MIDI PY", "Bordereau RAB", "Bordereau PACA"))

If MsgBox("Etes-vous sûr(e) de vouloir effectuer une RAZ de la page,", vbYesNo, "Demande de confirmation") = vbYes Then

Sheets("PARAMETRAGE").Range("C10:C12,C15,C19:C27,C30:C33,C36:C39,C46,B42:B45,B46,E42:E45,F46:F48").ClearContents

Wsv.Visible = True

Wsh.Visible = False

End If

End Sub

Là, j'ai un message d'erreur d'execution '9' :

L'indice n'appartient pas à la sélection

Pourriez vous m'aider svp?

29matrice-etudes.xlsm (797.44 Ko)

Bonjour Jensou, bonjour le forum,

L'onglet se nomme "PAGE DE GARDE " (avec un espace à la fin). Soit tu renommes l'onglet soit tu adaptes le code... Vérifie aussi les autres .

Bonjour à tous,

Quelques coquilles ...

  • PAGE DE GARDE > enlève l'espace à la fin du nom de l'onglet
  • Bordereau CORSE CI > enlève l'espace à la fin du nom de l'onglet
  • Un onglet se nomme ANALYSE DES RISQUES et dans le code c'est écrit ANALYSE DE RISQUES > il faudrait corriger le S afin que ces noms soient identiques.
Puis ...

Un essai ....

Sub RAZParametrage()
' RAZ des cellules modifiées sur la feuille PARAMETRAGE avec message de confirmation
Dim Wsv     'As Worksheet
Dim Wsh     'As Worksheet
Dim Sh As Worksheet

    Set Wsv = Sheets(Array("PAGE DE GARDE", "COPRO", "ABAC", "PROJET TECHNIQUE", "CARNET DE BORD", "ANALYSE DES RISQUES", "AUTORISATION DE TRAVAUX", "FICHE DE CONTROLE"))
    Set Wsh = Sheets(Array("Liste Acier", "Liste Cuivre", "Liste Divers 1", "Liste Divers 2", "Liste Matériel", "Bordereau AQUITAINE", "Bordereau DRO", "Bordereau CORSE CI", "Bordereau CORSE CM", "Bordereau MIDI PY", "Bordereau RAB", "Bordereau PACA"))

    If MsgBox("Etes-vous sûr(e) de vouloir effectuer une RAZ de la page,", vbYesNo, "Demande de confirmation") = vbYes Then
        Sheets("PARAMETRAGE").Range("C10:C12,C15,C19:C27,C30:C33,C36:C39,C46,B42:B45,B46,E42:E45,F46:F48").ClearContents

        For Each Sh In Wsv
            Sh.Visible = True
        Next Sh

        For Each Sh In Wsh
            Sh.Visible = False
        Next Sh
    End If
End Sub

ric

Bonjour Ric,

C'est parfait, ça fonctionne à merveille.

merci de ta rapidité.

Re,

On me l'avait dit... Ne prends pas ces pilules d'invisibilité tu le regretteras !...

Re,

Désolée ThauThème, merci aussi pour ton aide

Rechercher des sujets similaires à "macro raz masquage feuille"