Afficher/Masquer feuille.

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,
 

Dull

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

ThorVince

XLDnaute Nouveau
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,
 

Discussions similaires

Statistiques des forums

Discussions
312 321
Messages
2 087 266
Membres
103 501
dernier inscrit
talebafia