XL 2016 Erreur exécution Worksheet Macro Masquer/Démasquer

  • Initiateur de la discussion Initiateur de la discussion ALE37
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

ALE37

XLDnaute Junior
Bonsoir le forum, j'ai une macro qui me permet de masquer ou de démasquer les onglets
et celà fonctionne très bien en règle générale à l'exception de ce fichier (en PJ). J'obtiens toujours
la même erreur d'exécution 1004 et je n'arrive pas à comprendre ce qui ne permet pas le bon
déroulement de la procédure...Je masque (ou démasque) tous les onglets sauf "SOMMAIRE, ARCISE, ARGO".
Quelqu'un a t il une idée ? D'avance merci.
 

Pièces jointes

Solution
Bonjour à tous,

tu as des feuilles xlSheetVeryHidden (=2) et .Visible = Not 2 ça ne le fait pas.

Soit les masquées sont toutes xlSheetHidden et ton code devrait fonctionner, soit tu as vraiment besoin de xlSheetVeryHidden et il faut les traiter (et lister les feuilles concernées) différemment.
Le mieux est de travailler toujours avec les constantes xlSheetVisible, xlSheetHidden et xlSheetVeryHidden qui ont l'avantage d'auto-documenter ton code.
eric
Bonsoir le fil, ALE37

•>ALE37
On pouvait rester dans le fil initial...
 
Je l'ai testé également et j'ai le même problème sur ce fichier :

Sub Masquer_Demasquer_Feuilles()
Application.ScreenUpdating = False 'permet de réduire le temps de traitement
Dim f As Worksheet
For Each f In Worksheets
'il suffit de rajouter les onglets que l'on ne souhaite pas masquer
If InStr(1, "SOMMAIREARCISEARGO", f.Name, 1) = 0 Then
f.Visible = Not f.Visible
'On indique l'onglet sur lequel le curseur revient
Sheets("SOMMAIRE").Select
End If
Next
End Sub

J'ai bien entendu mis en application ce que nous avons vu ensemble mais j'ai souhaité tester une autre solution sur ce fichier au cas où!....mais la problèmatique reste la même😳
 
Re

Essaie cette adaptation qui fonctionne
(en tout cas, ce fut le cas lors de mon test)
A voir à l'usage en situation réelle.
VB:
Sub Masquer_Demasquer_Feuilles()
Dim f As Worksheet, Visibles, Check As Boolean
Application.ScreenUpdating = False
Visibles = Array("SOMMAIRE", "ARCISE", "ARGO")
For Each f In Worksheets
Check = IsError(Application.Match(f.Name, Visibles, 0))
f.Visible = Not Check = f.Visible
Next
End Sub
 
Bonjour à tous,

tu as des feuilles xlSheetVeryHidden (=2) et .Visible = Not 2 ça ne le fait pas.

Soit les masquées sont toutes xlSheetHidden et ton code devrait fonctionner, soit tu as vraiment besoin de xlSheetVeryHidden et il faut les traiter (et lister les feuilles concernées) différemment.
Le mieux est de travailler toujours avec les constantes xlSheetVisible, xlSheetHidden et xlSheetVeryHidden qui ont l'avantage d'auto-documenter ton code.
eric
 
Bonjour Staple,

oui et non ;-)
Non parce que c'est une façon de faire, pourquoi pas.
Et oui parce que s'il n'a aucune raison d'avoir une feuille xlsheetVeryHidden la remettre xlSheetHidden résout le pb.
Et s'il a une raison et bien il faut la remettre xlSheetVeryHidden et donc faire autrement.
Donc en fait un gros IUO 🙂
eric
 
Re

Désolé pour ce qui va suivre...😉

VB:
Sub Bingo()
Dim xOx, Gong, Flying_Teapot!
xOx = Split("1010011²1000101²1011001", "²")
ReDim Gong(UBound(xOx))
For Flying_Teapot = LBound(xOx) To UBound(xOx)
Gong(Flying_Teapot) = Chr(Application.Bin2Dec(xOx(Flying_Teapot)))
Next
Acces_Granted = Join(Gong, vbNullString)
MsgBox StrReverse(Acces_Granted) & "!", vbExclamation, "Le confinement a encore frappé!"
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour