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

Afficher/Masquer feuille.

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 !

ThorVince

XLDnaute Nouveau
Bonjour,

Voila je suis un grand débutant sur VBA et la programation excel, mais j'ai reussi en trouvant du code un peu partout à faire se que je voulais mais j'ai un souci sur la gestion d'erreur,

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("I8:I350")) Is Nothing Then
Cancel = True
Sheets(CStr(Target.Value)).Visible = -1
Sheets(CStr(Target.Value)).Select
End If
If Not Intersect(Target, Range("J8:J350")) Is Nothing Then
Cancel = True
Sheets(CStr(Target.Value)).Visible = 2
End If
End Sub

donc voila la premiere parti du code ouvre la feuille correspondant au nom par un click droit et la deuxieme ferme la feuille par un click droit egalement.
La question etant comment gerer les cas d'erreur car j'ai une erreur lorsque je fait un click droit sur un ligne ou sur une case faisant parti de la selection du code mais pas referencé par une feuille.

Je vous remercie d'avance pour votre aide précieuse, et je reste à votre disposition pour toutes précisions

Cordialement,
 
Re : Afficher/Masquer feuille.

Salut ThorVince et Bienvenue sur XLD, le Forum

Il faut faire une gestion d'erreur en testant si la feuille existe
dans un Module Standart
Code:
Option Explicit

Function FeuilExist(Nom As String) As Boolean 'myDearFriend!
    On Error Resume Next
    FeuilExist = Not Sheets(Nom) Is Nothing
End Function

Et dans le Module de la Feuille

Code:
Option Explicit

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("I8:I350")) Is Nothing Then
Cancel = True
    If Target.Count > 1 Then Exit Sub
    If Target = "" Then Exit Sub
    If Not FeuilExist(CStr(Target.Value)) Then
        MsgBox "Feuille inéxistante", vbCritical
        Exit Sub
            Else
        Sheets(CStr(Target.Value)).Visible = -1
        Sheets(CStr(Target.Value)).Select
    End If
End If
If Not Intersect(Target, Range("J8:J350")) Is Nothing Then
Cancel = True
    If Target = "" Then Exit Sub
    If Not FeuilExist(CStr(Target.Value)) Then
        MsgBox "Feuille inéxistante", vbCritical
        Exit Sub
        Else
    Sheets(CStr(Target.Value)).Visible = 2
    End If
End If
End Sub

EDITION: Gestion d'erreur supplémentaire au cas ou plusieurs cellules séléctionnées lors du Click Droit
A tester

Bonne Journée
 
Dernière édition:
Re : Afficher/Masquer feuille.

Salut Dull,

Merci pour la bienvenue, je trouve se forum vraiment excelent !

et merci pour le code, c'est exactement ce qu'il me fallait donc merci beaucoup !

Par contre il y a un cas que je n'arrive toujours pas à gérer c'est quand tu selectionne une ligne entiere pour faire une insertion ou autre il sort une erreur. je vois pas ce que le code comprend dans la selection d'une ligne ... !

Merci beaucoup en tout cas.

Cordialement,
 
- 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

Réponses
9
Affichages
404
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
1 K
  • Question Question
Microsoft 365 Probléme VBA
Réponses
8
Affichages
447
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…