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

Interdire de supprimer une ligne

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 !

criscris11

XLDnaute Accro
Bonsoir,
Comment peut-on empêcher la suppression d'une ligne si dans l'onglet X et dans la colonne Y le résultat d'une formule est égal à OUI (du style : vous n'êtes pas autorisé à supprimer ces données car...).
Petite particularité : il faut agir sur plusieurs onglets car quand l'utilisateur supprime la ligne, elle est supprimée dans plusieurs onglets en même temps (si besoin, je posterai le code qui agit sur les onglets).

Bonne soirée.
 
Re : Interdire de supprimer une ligne

Salut Criscris11,

Empêcher de supprimer une valeur, "facile", mais une ligne !?

Il n'y a pas d'évènement dans VBA excel qui permette de surveiller cet agissement.

En tout cas pas à ma connaissance (je ne connais pas tout, loin de là)

A+
 
Re : Interdire de supprimer une ligne

Bonjour Criscris11, Bruno, le forum

pour l'évenement, on peut le créer
le code ci dessous empèche la sélection d'une ligne entière sur des feuilles en sélection multiple dont l'une des feuilles comporte "oui" dans la colonne 8 de la sélection.

a placer dans thisworkbook

Cordialement, A+
Code:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    Dim Test As Boolean, Feuil_Ref As Worksheet, Cel_Ref As Range, Cel_Ref_Adresse As String, Colonne_a_Tester As Byte
    
    Colonne_a_Tester = 8
    
    If Not (Intersect(Target, Columns(Colonne_a_Tester)) Is Nothing) And Target.Columns.Count = 256 Then
        Test = False
        For Each Feuil_Ref In ThisWorkbook.Windows(1).SelectedSheets
            For Each Cel_Ref In Feuil_Ref.Range(Intersect(Target, Columns(Colonne_a_Tester)).Address)
                If Cel_Ref = "oui" Then Test = True: Cel_Ref_Adresse = Cel_Ref.Address
            Next Cel_Ref
        Next Feuil_Ref
        If Test = True Then ActiveSheet.Range(Cel_Ref_Adresse).Select
    End If
End Sub
 
Re : Interdire de supprimer une ligne

j'avais oublié le petit message d'explication

A+
Code:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    Dim Test As Boolean, Feuil_Ref As Worksheet, Cel_Ref As Range, Cel_Ref_Adresse As String, Colonne_a_Tester As Byte
 
    Colonne_a_Tester = 8
 
    If Not (Intersect(Target, Columns(Colonne_a_Tester)) Is Nothing) And Target.Columns.Count = 256 Then
        Test = False
        For Each Feuil_Ref In ThisWorkbook.Windows(1).SelectedSheets
            For Each Cel_Ref In Feuil_Ref.Range(Intersect(Target, Columns(Colonne_a_Tester)).Address)
                If Cel_Ref = "oui" Then Test = True: Cel_Ref_Adresse = Cel_Ref.Address
            Next Cel_Ref
        Next Feuil_Ref
        If Test = True Then ActiveSheet.Range(Cel_Ref_Adresse).Select: MsgBox "vous n'êtes pas autorisé à sélectionner cette ligne ", vbOKOnly + vbInformation
    End If
End Sub
 
Re : Interdire de supprimer une ligne

Miaou, Yeahou

Ca peut-être une solution, effectivement.

Saut que si on fait menu -> Edition -> Supprimer, ligne entière
Rien, absolument rien ne nous l'empêche 🙄

A+
 
Re : Interdire de supprimer une ligne

Bonjour

Je n'ai pas testé mais si version 2002 ou + :
en déverrouillant toutes les cellules,
en protégeant la feuille mais cochant toutes les permissions sauf suppression de ligne
en gérant la protection en userinterfaceonly dans le code

on peut peut-être y arriver.

A voir en fonction de ton cas réel
 
Re : Interdire de supprimer une ligne

yo chris

l'idée est bonne mais non adaptée au cas précis car on doit pouvoir supprimer les lignes ou pas en fonction d'une valeur dans une colonne. on peut le gérer mais beaucoup plus complexe que les solutions précitées.

A+
 
Re : Interdire de supprimer une ligne

Salut Yeahou, Bruno, Chris, le forum,
Merci pour vos réponses. Je vais tester le code de Yeahou pour voir si cela correspond à mon idée de départ. Cependant, je n'ai pas vu dans le code la syntaxe pour dire sur quel onglet se situe la colonne à tester mais bon je verrai bien quand le code sera en action.
Bonne soirée à tous.
 
Re : Interdire de supprimer une ligne

elle teste la colonne 8 sur tous les onglets sélectionnés, si l'un ou l'autre contient oui, cela bloque la sélection de la ligne entiere, c'était pas ça la question ?
 
Re : Interdire de supprimer une ligne

Re,
Oui en espérant que je n'ai pas deux colonnes 8 dans mes onglets qui contiennent OUI.
Sinon peut-on effectuer ton code en lui disant dans quel onglet le valeur OUI doit être trouvée par interdire la sélection ?
Merci pour ton intervention et bonne soirée.

Si tu veux je poste mon code qui me permet d'effectuer une modification ou suppression dans les onglets voulus.
 
Re : Interdire de supprimer une ligne

Bonjour

modifié pour ne tester qu'un seul onglet dans les feuilles sélectionnées

A+
Code:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    Dim Test As Boolean, Feuil_Ref As Worksheet, Cel_Ref As Range, Cel_Ref_Adresse As String, Colonne_a_Tester As Byte
    Dim Nom_Onglet As String
    
    Colonne_a_Tester = 8
    Nom_Onglet = "ongletàtester"
    
    If Not (Intersect(Target, Columns(Colonne_a_Tester)) Is Nothing) And Target.Columns.Count = 256 Then
        Test = False
        For Each Feuil_Ref In ThisWorkbook.Windows(1).SelectedSheets
            If Feuil_Ref.Name = Nom_Onglet Then
                For Each Cel_Ref In Feuil_Ref.Range(Intersect(Target, Columns(Colonne_a_Tester)).Address)
                    If Cel_Ref = "oui" Then Test = True: Cel_Ref_Adresse = Cel_Ref.Address: Exit For
                Next Cel_Ref
            End If
        Next Feuil_Ref
        If Test = True Then ActiveSheet.Range(Cel_Ref_Adresse).Select: MsgBox "vous n'êtes pas autorisé à sélectionner cette ligne ", vbOKOnly + vbInformation
    End If
End Sub
 
- 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

I
Réponses
2
Affichages
945
im_Guillaume
I
S
  • Résolu(e)
Réponses
6
Affichages
2 K
Serge6926
S
S
Réponses
5
Affichages
2 K
SCORP95
S
K
Réponses
38
Affichages
10 K
kinders59
K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…