Enlever message d'erreur modification cellule car feuille protéger

Bonjour le forum Excel pratique,

Est-il possible de supprimer les messages d'erreur sur un classeur Excel ? Par exemple, lorsque je double-clique sur une cellule que je ne peux pas modifier car la feuille est protégée, je ne souhaite pas voir s'afficher le message d'erreur suivant :

image

J'ai vérifié s'il n'y avait la possibilité de l'enlever directement dans les paramètres mais je ne trouve rien.

Cette demande fait suite car j'ai un code qui me permet d'ouvrir un UserForm lorsque l'on double click sur un cellule, cependant, lorsque l'on ferme le UserForm ce message apparait à chaque fois ce qui peut être dérangeant. Je suis obliger de protéger la feuille car je veux que l'utilisateur puisse remplir les cellules seulement via le UserForm.

Merci d'avance pour votre aide.

Salut,

J'avais posé la même question ! Je te laisse voir les différentes réponses reçues. Message d'erreur "La cellule .... se trouve sur une feuille protégée ....." (excel-pratique.com)

J'avais indiqué que celle de Dan resortait du lot.

Cordialement.

Bonjour à tous,

Peut-être en testant si la feuille est protégée, si oui on annule le double clic.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Me.ProtectContents = True Then
        Cancel = True
    End If
End Sub

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
    If Me.ProtectContents = True Then
        Cancel = True
    End If
End Sub

Bonjour à vous deux,

Merci pur vos réponse, j'ai essayer de modifier le code mais je n'y arrive malheureusement pas. Pouvez-vous directement modifier le code svp ? voici le code qui me permet d'ouvrir mon userform : (Il est dans "ThisWorkBook")

Private lastClickedCell As Range ' Ajout d'une variable globale pour stocker la dernière cellule cliquée

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
    Dim ws As Worksheet
    Dim baseWs As Worksheet
    Dim rng As Range
    Dim cell As Range
    Dim columnName As String

    ' Vérifier si la feuille sur laquelle le double-clic est effectué est différente de la feuille "Paramétre"
    If Sh.Name <> "Paramétre" Then
        Set baseWs = ThisWorkbook.Sheets("Base paramétrable")

        ' Vérifier si la cellule double-cliquée est dans les plages spécifiées
        If Not Intersect(Target, Union(Sh.Range("6:14"), Sh.Range("22:30"), Sh.Range("38:46"))) Is Nothing Then
            ' Récupérer le nom de la colonne de la cellule double-cliquée
            columnName = Split(Sh.Cells(5, Target.Column).Address, "$")(1)
            ' Vérifier si la valeur dans la cellule de la ligne 5 et dans la même colonne que la cellule double-cliquée est répertoriée dans la colonne Q à partir de la ligne 2 de la feuille "Base paramétrable"
            Set rng = baseWs.Range("Q2:Q" & baseWs.Cells(baseWs.Rows.Count, "Q").End(xlUp).Row)

            For Each cell In rng
                If cell.Value = Sh.Cells(5, Target.Column).Value Then
                    ' Mettre à jour la référence de la dernière cellule cliquée
                    Set lastClickedCell = Target
                    ' Ouvrir le Userform "Frm_Enregistrement"
                    Frm_Enregistrement.Show
                    Exit For
                End If
            Next cell
        End If
    End If
End Sub

Public Function GetLastClickedCell() As Range
    Set GetLastClickedCell = lastClickedCell
End Function

Merci infiniment pour votre soutien.

Le Chat de Mistral ma modifié le code pour qu'il m'enlève la protection lorsque j'ouvre le UserForm, voici la modification :

Private lastClickedCell As Range ' Ajout d'une variable globale pour stocker la dernière cellule cliquée

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
    On Error GoTo ErrorHandler
    Dim ws As Worksheet
    Dim baseWs As Worksheet
    Dim rng As Range
    Dim cell As Range
    Dim columnName As String

    ' Vérifier si la feuille sur laquelle le double-clic est effectué est différente de la feuille "Paramétre"
    If Sh.Name <> "Paramétre" Then
        Set baseWs = ThisWorkbook.Sheets("Base paramétrable")

        ' Vérifier si la cellule double-cliquée est dans les plages spécifiées
        If Not Intersect(Target, Union(Sh.Range("6:14"), Sh.Range("22:30"), Sh.Range("38:46"))) Is Nothing Then
            ' Récupérer le nom de la colonne de la cellule double-cliquée
            columnName = Split(Sh.Cells(5, Target.Column).Address, "$")(1)
            ' Vérifier si la valeur dans la cellule de la ligne 5 et dans la même colonne que la cellule double-cliquée est répertoriée dans la colonne Q à partir de la ligne 2 de la feuille "Base paramétrable"
            Set rng = baseWs.Range("Q2:Q" & baseWs.Cells(baseWs.Rows.Count, "Q").End(xlUp).Row)

            For Each cell In rng
                If cell.Value = Sh.Cells(5, Target.Column).Value Then
                    ' Désactiver temporairement la protection de la feuille
                    Sh.Unprotect
                    ' Mettre à jour la référence de la dernière cellule cliquée
                    Set lastClickedCell = Target
                    ' Ouvrir le Userform "Frm_Enregistrement"
                    Frm_Enregistrement.Show
                    Exit For
                End If
            Next cell
        End If
    End If

Exit Sub

ErrorHandler:
    ' Réactiver la protection de la feuille en cas d'erreur
    Sh.Protect
End Sub

Public Function GetLastClickedCell() As Range
    Set GetLastClickedCell = lastClickedCell
End Function

Cependant, il n'arrive pas à me trouver la solution pour remettre la protection lorsque je ferme le UserForm.

Re,

Peut-tu mettre un fichier sans données sensibles car là je vois des lignes de codes qui ne me plaisent pas trop.

En fait quel est le but recherché ? si c'est d'ouvrir un formulaire sur le clic dans des cellules il-y-a plus simple notamment en utilisant un tableau structuré.

lastClickedCell n'est pas utilisé. A quoi te sert-il ?

Re,

Oui, voici en pièce jointe le fichier.

Je suis actuellement confronté à un problème avec ce fichier. Lorsque je ferme le formulaire, un message d'erreur s'affiche. Je me demande s'il serait préférable de changer complètement de méthode, bien que j'aie déjà bien avancé avec celle-ci. J'appréhende de devoir tout recommencer simplement à cause de ce problème. Je pense que vous comprendrez mieux ma situation en examinant le fichier. Il faut ouvrir une nouvelle feuille via le calendrier, puis sélectionner une cellule dans la partie "Listes Incidents (temps en minutes)".

lastClickedCell est normalement utilisé pour enregistrer la cellule active, car je la renseigne dans le UserForm.

Re,

Déjà teste comme-cela :

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
    'Vérifier si la feuille sur laquelle le double-clic est effectué est différente de la feuille "Paramétre"
    If Sh.Name <> "Paramétre" Then
        Dim baseWs As Excel.Worksheet
        Set baseWs = ThisWorkbook.Sheets("Base paramétrable")

        ' Vérifier si la cellule double-cliquée est dans les plages spécifiées
        If Not Intersect(Target, Union(Sh.Range("6:14"), Sh.Range("22:30"), Sh.Range("38:46"))) Is Nothing Then
            ' Récupérer le nom de la colonne de la cellule double-cliquée
            Dim columnName As String
            columnName = Split(Sh.Cells(5, Target.Column).Address, "$")(1)
            ' Vérifier si la valeur dans la cellule de la ligne 5 et dans la même colonne que la cellule double-cliquée est répertoriée dans la colonne Q à partir de la ligne 2 de la feuille "Base paramétrable"
            Dim rng As Excel.Range
            Set rng = baseWs.Range("Q2:Q" & baseWs.Cells(baseWs.Rows.Count, "Q").End(xlUp).Row)

            Dim Cell As Excel.Range
            For Each Cell In rng
                If Cell.Value = Sh.Cells(5, Target.Column).Value Then
                    ' Mettre à jour la référence de la dernière cellule cliquée
                    Set lastClickedCell = Target
                    ' Ouvrir le Userform "Frm_Enregistrement"
                    'Frm_Enregistrement.Show
                    Exit For
                End If
            Next Cell
        Else
            If Target.Locked = True And Sh.ProtectContents = True Then
                Cancel = True
            End If
        End If
    End If
End Sub

Public Function GetLastClickedCell() As Range
    Set GetLastClickedCell = lastClickedCell

End Function

ton code fonctionne tout aussi bien, cependant lorsque je ferme le Userform via la crois, le bouton fermer, ou lors d'un enregistrement, il faudrait réactiver la protection de la feuille sans afficher le message d'erreur

image

Bonjour,

Je pense (voire plus...), qu'Yvouille t'avait très bien mis sur la voie...

Perso, je mettrais, juste après l'instruction .Show l'annulation de l'édition de la cellule double-cliquée ainsi :

....
....
Userformxxx.Show
Cancel = True
....
....

Bonne apm

Bonjour,

Je vous l'accord, cela fonctionne très bien. Merci.

Cordialement,

Rechercher des sujets similaires à "enlever message erreur modification feuille proteger"