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?
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.
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