VBA - Message d'alerte indésirable

Bonjour,

J’avais posé une question assez similaire il y a peu, mais je n’arrive pas à appliquer la solution reçue à mon problème actuel.

Dans le fichier ci-joint, des ‘’x’’ sont placés sur la plage G7:BZxxx. Si je clique sur l’un deux et qu’il n’y en a qu’un seul sur cette ligne (le nombre de ‘’x’’ est indiqué en colonne C), la ligne entière doit disparaitre. Par contre s’il y a plusieurs ‘’x’’ sur cette ligne, le ‘’x’’ double-cliqué doit être effacé et le nombre de la colonne C adapté.

Tout ceci fonctionne assez bien, mais il y a toujours un message d’erreur indésirable à la fin qui m’indique que la feuille est protégée, bien que la modification voulue ait été exécutée.

Savez-vous comment empêcher l’apparition de ce message ?

14demo-11-02.zip (16.31 Ko)

bonjour,

je ne suis pas expert en VBA mais essaye de rajouter la phrase

Application.DisplayAlerts = False
ton code
Application.DisplayAlerts = True

PS : Et comme je débute et que je n'ai pas réfléchi, j'avais pas regardé ton fichier et vu que mon post ne sert à rien à priori

Bonsoir,

Essaie ainsi :

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim i As Integer, DerLig As Integer

    Application.ScreenUpdating = False
    Application.DisplayAlerts = False

    ActiveSheet.Unprotect

    If Not Application.Intersect(Target, Range("G7:BZ" & Target.Row)) Is Nothing Then

       [Surligner] Cancel = True[/Surligner]

        DerLig = Range("A" & Rows.Count).End(xlUp).Row

        If Range("C" & Target.Row) = 1 And Target = "x" Then
        ElseIf Target = "x" Then
            Target = ""
            Range("C" & Target.Row) = Range("C" & Target.Row) - 1
        End If

    End If

    ActiveSheet.Protect
    Application.DisplayAlerts = True

End Sub

Merci pour vos réponses.

@ Arno

Ces instructions étaient déjà dans mon code (fourni dans mon fichier).

@Jean-Eric

Avec ta proposition, ça joue si on ne doit qu'effacer un ''x'' et réactualiser la colonne C, mais il ne se passe rien si un ligne devrait être effacée complètement.

D'autres idées ?

Bonjour,

et si tout simplement du déprotégeait ton tableau dans le format de cellule de "G" à "BZ".

Salut Luve,

Merci pour ton idée, mais non, je veux garder cette protection de base, juste permettre le double-clic à certaines conditions.

C'est encore moi ; en fait, je n'avais pas remarqué que Jean-Eric avait effacé une ligne de mon code et que c'est à cause de cela que sa proposition ne fonctionnait pas entièrement.

Mais maintenant que j'ai rajouté l'instruction Rows(Target.Row).Delete Shift:=xlUp, tout fonctionne à la perfection.

Le code final :

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim i As Integer, DerLig As Integer

    Application.ScreenUpdating = False
    Application.DisplayAlerts = False

    ActiveSheet.Unprotect

    If Not Application.Intersect(Target, Range("G7:BZ" & Target.Row)) Is Nothing Then

        Cancel = True

        DerLig = Range("A" & Rows.Count).End(xlUp).Row

        If Range("C" & Target.Row) = 1 And Target = "x" Then
            Rows(Target.Row).Delete Shift:=xlUp
        ElseIf Target = "x" Then
            Target = ""
            Range("C" & Target.Row) = Range("C" & Target.Row) - 1
        End If

    End If

    ActiveSheet.Protect
    Application.DisplayAlerts = True

End Sub

Mon fichier définitif :

Merci infiniment à vous tous pour votre aide.

Rechercher des sujets similaires à "vba message alerte indesirable"