XL 2013 problème avec xlsheetveryhidden

yanthom

XLDnaute Nouveau
Salut, j'ai créé un code pour masquer les feuilles ou onglets de mon classeur en fonction du niveau d'accès des utilisateurs. Et j'y suis parvenu donc tout semblait ok jusqu'au moment où j'ai constaté que les feuilles sélectionnées étaient effectivement visibles, mais celles qui devaient rester masquer (veryhidden), en fait ne l'étaient pas. (hidden =>Click droit sur l'onglet =>Afficher...)
J'ai vérifié au niveau de l'éditeur de code VBA, dans les propriétés des feuilles masquées, et elles sont en xlsheetveryhidden🤔.(Ce qui ne réflète pas la réalité)
J'ai eu l'impression qu'on ne pouvait pas rendre visible certaines feuilles sans toutefois maintenir le niveau d'invisibilité des autres feuilles.
J'aimerais savoir si quelqu'un a déjà fait face ce problème, ou si possible pourrait m'apporter des éléments de réponse.
Je ne vois pas l'intérêt de masquer des feuilles si on peut facilement y avoir accès avec le click droit de la souris.
 
Solution
J'ai bien peur que vous ayez un souci avec votre XL :
20201201_141055.gif

Tentez un controle pour voir avec, Options/Ressources/Exécuter les diagnostics MS Office.
( Ca doit être différent sur 2013 mais ça doit ressembler )

yanthom

XLDnaute Nouveau
je pense que je l'avais également essayé, mais sans succès. Merci tout de même pour votre contribution, c'est sympa.
Je ne sais pas où ça beugge, mais le plus surprenant comme je l'ai dit plus tôt, c'est que les feuilles qui doivent être masquées en xlsheetveryhidden(2) une fois la macro éxécutée, le sont dans les propriétés de la feuille au niveau de l'éditeur VBA; mais pourtant elles sont accessibles en xlsheethidden(0) au niveau de la feuille excel.
Je vais peut être devoir reprendre mon fichier depuis le début, je ne sais pas encore... Je verrai demain
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour,
Alors c'est plus grave que prévu. Application.Caller est une fonction déjà présente sur XL2007.
Testez cette PJ.
Appui sur Masquer : Toutes les feuilles sont masquées, aucune n'est visible par Afficher. ( hormis Entête )
Appui sur Visible : Toutes les feuilles sont visible A,B,C,D
Si ça, ça ne marche pas alors j'ai bien peur que vous ayez un pb en votre XL.
VB:
Sub Cacher()
For Each Sh In Worksheets
    If Sh.Name <> "Entete" Then
        Sheets(Sh.Name).Visible = xlSheetVeryHidden
    End If
Next Sh
End Sub
Sub Montrer()
For Each Sh In Worksheets
    Sheets(Sh.Name).Visible = xlSheetVisible
Next Sh
End Sub
 

Pièces jointes

  • FeuilleInvisible2.xlsm
    17.1 KB · Affichages: 12

yanthom

XLDnaute Nouveau
Bonjour,
Alors c'est plus grave que prévu. Application.Caller est une fonction déjà présente sur XL2007.
Testez cette PJ.
Appui sur Masquer : Toutes les feuilles sont masquées, aucune n'est visible par Afficher. ( hormis Entête )
Appui sur Visible : Toutes les feuilles sont visible A,B,C,D
Si ça, ça ne marche pas alors j'ai bien peur que vous ayez un pb en votre XL.
VB:
Sub Cacher()
For Each Sh In Worksheets
    If Sh.Name <> "Entete" Then
        Sheets(Sh.Name).Visible = xlSheetVeryHidden
    End If
Next Sh
End Sub
Sub Montrer()
For Each Sh In Worksheets
    Sheets(Sh.Name).Visible = xlSheetVisible
Next Sh
End Sub
Pour votre code, pas de souci ça marche, il est simple et efficace.
Si je m'appuie sur votre exemple de "FeuilleInvisible2.xlsm", je souhaiterais dans mon fichier uniquement faire apparaitre certaines feuilles, par ex: A et B seulement et que les autres, à savoir C et D restent en xlsheetveryhidden. Mais au lieu de celà, les feuilles masquées se retrouvent en xlsheethidden.
Voilà principalement le problème, et c'est à ce niveau que je suis perdu.🤷‍♂️
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Alors allons y au plus simple, step by step :
Dans cette PJ, vous mettez un x pour toutes les feuilles que vous voulez voir puis vous cliquez sur le bouton.
Est ce que ça marche ?
VB:
Sub Cacher()
For Each Sh In Worksheets
    If Sh.Name <> "Entete" Then
        Sheets(Sh.Name).Visible = xlSheetVeryHidden
    End If
Next Sh
If [G6] <> "" Then Sheets("A").Visible = xlSheetVisible
If [G7] <> "" Then Sheets("B").Visible = xlSheetVisible
If [G8] <> "" Then Sheets("C").Visible = xlSheetVisible
If [G9] <> "" Then Sheets("D").Visible = xlSheetVisible
End Sub
 

Pièces jointes

  • FeuilleInvisible3.xlsm
    18 KB · Affichages: 5

yanthom

XLDnaute Nouveau
Alors allons y au plus simple, step by step :
Dans cette PJ, vous mettez un x pour toutes les feuilles que vous voulez voir puis vous cliquez sur le bouton.
Est ce que ça marche ?
VB:
Sub Cacher()
For Each Sh In Worksheets
    If Sh.Name <> "Entete" Then
        Sheets(Sh.Name).Visible = xlSheetVeryHidden
    End If
Next Sh
If [G6] <> "" Then Sheets("A").Visible = xlSheetVisible
If [G7] <> "" Then Sheets("B").Visible = xlSheetVisible
If [G8] <> "" Then Sheets("C").Visible = xlSheetVisible
If [G9] <> "" Then Sheets("D").Visible = xlSheetVisible
End Sub
Une fois de plus, votre code fonctionne correctement. J'ai juste remarqué par exemple que lorsqu'on coche toutes les cases, toutes les feuilles n'apparaissent pas, mais bon...
Je pense que mon fichier ou peut être mon XL2013 doit avoir un problème, que sais je....
 

yanthom

XLDnaute Nouveau
Salut,j'ai malheureusement du reprendre mon code du début à la fin, mais au moins cela m'a permis de trouver ce qui créait un beug dans l'éxécution de l'une de mes macros.
Comme quoi certaines macros ne doivent pas fonctionner au même moment au risque de créer des pertubations ou faire planter l'une d'entre elles.
J'ai créé une macro qui faisait défiler un texte de droite à gauche (Un peu comme un panneau publicitaire), et apparemment comme ça défilait chaque fois que la feuille était active, ça avait un impact sur la macro qui rend les feuilles visibles.
En bref le problème est résolu, et merci à toutes les personnes qui ont bien voulu contribuer.
 

Discussions similaires

Réponses
18
Affichages
1 K
Réponses
24
Affichages
2 K