XL 2019 Macro protection ligne tableau

  • Initiateur de la discussion Initiateur de la discussion PIERRO1234
  • Date de début Date de début

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 !

PIERRO1234

XLDnaute Nouveau
Bonjour,
Ci-joint un fichier "personnel"
Est il possible d'avoir une macro du style:
Si la cellule de la colonne [STATUT] est "V" alors, la ligne n'est pas modifiable.
Merci
 

Pièces jointes

Solution
Bonjour le fil, bonjour le forum,

Une autre proposition. J'ai commencé par déverrouiller toutes les cellules du tableau structuré Tableau1. Ensuite le code :

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim TS As ListObject 'déclare la variable TS (Tableau Structuré)
Dim LR As Integer 'déclare la variable LR (Ligne de Référence)

If Target.Count > 1 Then Exit Sub 'si plusieurs cellules sélectionnées, sort de la procédure
If Target.ListObject Is Nothing Then Exit Sub 'si la cellule modifiée n'est pas dans un tableau structuré, sort de la procédure
Set TS = Target.ListObject 'définit le tableau structuré TS
Me.Unprotect "1234" 'déprotège l'onglet avec mot de passe = "1234"
'Si le changement a lieu ailleurs que...
Re, et Bonjour Robert ( tu viens d'apparaître au moment où j'écrivais. Ce n'est pas la 1ère fois et ça m'énerve un chouïa )

Dans son code, Robert avait oublié de reprotéger la feuille avant de quitter la procédure évènementielle. J'ai légèrement modifié et ça fonctionne. Il faut que la feuille soit protégée pour que la ligne du tableau le soit ! Donc mot de passe même "blanc" !!!!
Donc, dans ton classeur tu remplaces le code par celui joint
Pourquoi avoir mis Résolu ????
Claude alias Pounet95
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim TS  As ListObject    'déclare la variable TS (Tableau Structuré)
    Dim LR  As Integer       'déclare la variable LR (Ligne de Référence)

    If Target.Count > 1 Then Exit Sub 'si plusieurs cellules sélectionnées, sort de la procédure
    If Target.ListObject Is Nothing Then Exit Sub 'si la cellule modifiée n'est pas dans un tableau structuré, sort de la procédure
    Set TS = Target.ListObject 'définit le tableau structuré TS

    Me.Unprotect "1234" 'déprotège l'onglet avec mot de passe = "1234"
    'Si le changement a lieu ailleurs que dans la colonne "STATUT". sort de la procédure
    If Application.Intersect(Target, TS.ListColumns("STATUT").Range) Is Nothing Then
        Me.Protect "1234"
        Exit Sub
    End If
    Application.EnableEvents = False 'empêche les événementielles (pour éviter de boucler)
    Target.Value = UCase(Target.Value) 'remplace v par V le cas échéant (relance l'événementielle)
    Application.EnableEvents = True 'autorise les événementielles
    
    LR = Target.Row - TS.HeaderRowRange.Row     'définit la ligne de référence LR
    TS.ListRows(LR).Range.Locked = IIf(Target.Value = "V", True, False) 'vérouille la ligne de référence LR si "V"
    
    Me.Protect "1234" 'protège l'onglet avec mot de passe "1234"
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

Retour