Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Sheets(1).Visible = Invisible pour l'éternité

  • Initiateur de la discussion Initiateur de la discussion no_comprendo
  • 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 !

N

no_comprendo

Guest
Bonjour à tous

Comment résoudre ceci:

Impossible de définir la propriété Visible de la classe Worksheet

( Ce message apparait comme je veux changer sur une feuille
la valeur xlHidden en xlVisible)

Donc je ne peux afficher la feuille

et ce même avec une macro VBA

Est-ce un bug d'Excel

Mon classeur est-il souffrant?

Merci
 
Une idée elle visible vient de me traverser l'esprit

Le fichier a été créer sous Excel 2002
et actuellement je travaille avec Excel 2000

Lien de cause à effet?


Ce message d'erreur est générer par Excel
donc selon ma logique à moi
c'est une erreur de syntaxe?

Lorsque je lance cette macro dans un nouveau classeur
Option Base 1
Sub ShowSomesheets()
Dim Ndx As Integer
Dim Arr() As String
Dim counter As Integer

counter = 1
For Ndx = 1 To Worksheets.Count Step 2
ReDim Preserve Arr(counter)
Arr(counter) = Worksheets(Ndx).Name
counter = counter + 1
Next Ndx
Worksheets(Arr).Visible = False 'ou True c'est pareil -> Erreur 1004
End Sub
bingo ca ne fonctionne pas
 
origine de la macro sus nommée
http://xlbysteph.free.fr/aideinformatique/news/feuillesmasquer.txt


Il me semble avoir lu quelque part qu'il était
possible de masquer toutes les feuilles d'un classeur

Mais moi c'est démasquer la feuille masquée à l'insu de son plein gré
 
Tiens, je viens de voir un truc:
Arr est un tableau contenant des String, n'est-ce pas?
Donc ne faut-il pas spécifier un index pour Worksheets(Arr)? Je verrais bien une boucle supplémentaire à la fin:

For Counter=Lbound(Arr) to Ubound(Arr)
Worksheets(Arr(counter)).visible=true
next counter

Sinon, j'ai du mal à comprendre la logique de la procédure et pourquoi passer par ce tableau.
Ceci n'aurait-il pas suffit:
Sub ShowSomesheets()
Dim Ndx As Integer

For Ndx = 1 To Worksheets.Count Step 2
Worksheets(Ndx).visible=true
Next Ndx

End Sub

Enfin, si c'est une procédure de Chip Pearson, il doit bien y avoir une excellente raison! Sans doute pour gagner du temps sur des classeurs contenant énormément de feuilles. Maintenant, j'ai toujours un doute sur la syntaxe Worksheets(Arr), Arr étant un tableau indexé contenant tout les noms des feuilles souhaitées.
 
Ici le masquage de toutes les feuilles semble possible
http://www.excelabo.net/xl/feuilles.php#invisiblesfeuilles

(je n'ai pas testé)

Quand un message de ce style est généré par Excel
Impossible --------de la classe Worksheet

C'est que l'erreur a été répertoriée non?
 
Bon, je viens de confirmer par un test ce que je disais tout à l'heure:

La procédure de Chip Pearson fonctionne pour masquer les feuilles, et une fois le tableau rempli avec tous les noms des feuilles que l'ont veut masquer, un simple Worksheets(Arr) masque d'un seul coup toutes ces feuilles.
En revanche, pour les afficher, cela ne fonctionne pas, et il faut remplacer Worksheets(arr) par une boucle:
For ndx=lbound(arr) tu Ubound(arr)
worksheets(arr(ndx)).visible=true
next ndx

Et donc pour réafficher, je ne pense pas que passer par un tableau soit utile.

Sans doute que l'appel de toutes les feuilles par un tableau contenant leur nom nécessite qu'elles soient visibles!

à plus.
 
Cette macro fonctionne avec un nouveau classeur


Mais mon classeur disfonctionnel lui garde ses feuilles invisibles
et même VBA ne peut les rendre visibles

Serait une macro invisible elle aussi qui ferait cela
Une macroXL4 par exemple.
 
Re : Sheets(1).Visible = Invisible pour l'éternité >> Une solution qui marche !

Bonjour au forum

Je rouvre un sujet vieux de plusieurs années mais peut-être que ma solution servira l'un ou l'une d'entre vous.
N'ayant pas vu de solution viable sur une quinzaine de forums...

J'en étais au point de me dire qu'il fallait créer un nouveau classeur et y introduire tous mes formulaires (une quarantaine), mes modules, mes modules de classe... Lorsque j'ai fini par essayer ceci :

Dans ThisWorkbook, lors de l'événement "Open" ou encore "Activate" par ex, il suffit de mettre :

ThisWorkbook.Unprotect

(Dans mon cas il n'y avait pas de mot de passe, sinon il faut mettre ThisWorkbook.Unprotect "ici le mot de passe") si à un moment ou un autre dans votre projet vous en avez mis un, en utilisant la ligne de code ThisWorkbook.protect...

Et là : miracle, on peut à nouveau afficher, supprimer, ajouter des feuilles, y compris celles présentes dans le projet VBA et qui ne s'affichaient plus dans la fenêtre Excel. 😎

Bonne journée au forum 😉
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
3
Affichages
599
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…