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

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

  • LIASSE RESULTATS TEST.xlsm
    531.3 KB · Affichages: 9
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

Staple1600

XLDnaute Barbatruc
Bonsoir le fil, ALE37

•>ALE37
On pouvait rester dans le fil initial...
 

ALE37

XLDnaute Junior
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:oops:
 

Staple1600

XLDnaute Barbatruc
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
 

eriiic

XLDnaute Barbatruc
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
 

eriiic

XLDnaute Barbatruc
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
 

Staple1600

XLDnaute Barbatruc
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
 

Statistiques des forums

Discussions
312 192
Messages
2 086 056
Membres
103 110
dernier inscrit
Privé