Erreurs VBA lorsque je protège mes feuilles

Bonjour à tous ,

J'ai des petits soucis lorsque je protège mes feuilles, mes scripts ne fonctionnent plus du tout !

Dans la case C1 (préalablement déverrouillée) j'ai 2 scripts. Un qui me permet d'afficher une liste déroulante avec le nom des feuilles dans le classeur et l'autre qui de part un double-clique me permet d'afficher la feuille précédemment vue.

De 1 : Le double-clique ne marche plus

De 2 : Un message d'erreur s'affiche lorsque je visionne une autre feuille "Erreur définie par l'application ou par l'objet"

Quelqu'un saurait-il m'aider ?

Dans ThisWorkBook :

Dim nomfeuille As String

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("C1")) Is Nothing Then
    Cancel = False
    Target.Value = nomfeuille
End If
Cancel = True
End Sub

Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
nomfeuille = Sh.Name
End Sub

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim choix
Dim f As Worksheet
choix = ""
For Each f In Worksheets
    If f.Name <> "Template" Then choix = choix & f.Name & ","
Next

With ActiveSheet.Range("C1").Validation
    .Delete
    .Add xlValidateList, Formula1:=choix
End With
End Sub
12recette-1.xlsm (37.03 Ko)

bonjour,

Voir une possibilité en pièce jointe.

Pour la question 2, je ne pense pas qu'on puisse faire "à ta manière" donc j'ai fait "à ma façon"...

Nota : Bien noter que UserInterfaceOnly est une fonction Volatile : A chaque fois que vous provoquez une erreur VBA "oublie" cette instruction. C'est pourquoi je fais une piqure de rappel à chaque Activate.

Quand on débute avec VBA on fait souvent de nombreuses erreurs. Dans ce cas, il peut parfois être nécessaire de réactiver cette fonction en faisant un aller-retour vers une autre feuille...

A+

7recette-vg.xlsm (40.99 Ko)

Bonsoir !

Je te remercie pour ta réponse

Malheureusement le fichier que tu m'as envoyé ne marche pas chez moi. Le double clique n'affiche pas la feuille précédente, je sais pas si c'est normal ou si j'ai zappé quelque chose à faire ?

Sorry... Enlever le

Cancel = False

A+

Hmmm cela ne marche toujours pas

Bonjour à tous,

Si le nom de la feuille précédente est déjà en C1 ... l'on a l'impression que le double clic ne fonctionne pas ... idem si la variable nomFeuille est vide ...

Un essai ...

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
    If Not Intersect(Target, Range("C1")) Is Nothing Then
        Cancel = True
        If nomFeuille = "" Then
            MsgBox " NomFeuille est vide ... changer de feuille et revenir ... !"
            Exit Sub
        End If
        If Target.Value = nomFeuille Then
            MsgBox " Le nom de la feuille précédent est déjà inscrit en C1 ... !"
            Exit Sub
        End If
        Target.Value = nomFeuille
    End If
End Sub

ric

ça ne marche toujours pas chez moi, dès que la feuille est protégé, cela n'affiche plus le nom lorsque l'on fait le double-clique.

Bonjour à tous,

Dans "ThisWorkbook" ... ajoute ceci ... Exécute-le ou ferme le fichier et rouvre-le ...

Private Sub Workbook_Open()
Dim Sh As Worksheet

For Each Sh In ThisWorkbook.Worksheets
    Sh.Protect , UserInterFaceOnly = True
Next Sh
End Sub

ric

Rechercher des sujets similaires à "erreurs vba lorsque protege mes feuilles"