VBA pour verrouiller/déverrouiller des cellules avec conditi

Bonjour a tous, je suis nouvelle ici et j'aimerais solliciter votre aide pour l’écriture d'un macro/VBA.

Je souhaiterais utiliser un macro pour verrouiller/déverrouiller un groupe de cellules (exemple X10:Y90) en basant sur la valeur d'une cellule X2 (qui est au fait X2 et Y2 fusionnées) . Je pourrais le faire pour cette exemple la avec un "if" mais dans mon cas l’itération doit se faire pour toute la rangee #2 i.e. Z2 avec le groupe de cellules "Z10:AA90" et AB2 avec le groupe de cellule "AB10:AC90" etc.

Donc a chaque fois qu'une cellule de la rangee 2 contient le mot "Received" les cellules par dessous s'auto-verrouillent avec un mot-de-passe mais tout en me permettant d'utiliser la fonction "Hide/Unhide" des colonnes.

J'attache l'excel pour référence

118exemple.zip (13.19 Ko)

. Vous verrez que j'ai inserre un macro qui utilise "hide/Unhide"

Je vous remercie a l'avance. Et n’hésitez pas a me contacter si vous avez des questions.

Mushka

Bonsoir Mushka,

Essaie ce code, c'est un début de piste :

Private Sub Worksheet_Change(ByVal Target As Range)
   If Target.Count = 1 And Target.Row = 2 Then
      ActiveSheet.Unprotect "toto"
      Select Case Target.Address(0, 0)
         Case "X2"
            If Target = "Received" Then Range("X10:Y90").Locked = True
         Case "Z2"
            If Target = "Received" Then Range("Z10:AA90").Locked = True
         Case "AB2"
            If Target = "Received" Then Range("AB10:AC90").Locked = True
      End Select
      ActiveSheet.Protect Password:="toto", Contents:=True, AllowFormattingCells:=True, AllowFormattingColumns:=True, AllowFormattingRows:=True
   End If
End Sub

A adapter selon ton besoin

Etant donné que le mot de passe est dans le projet VBA, il faut que tu protèges le projet, sinon un utilisateur pourrait découvrir ce mot de passe, notamment en cas de débogage.

Salut Benoit

Merci pour ton aide et ta reponse. Cependant j'ai un petit souci, j'ai un total de 60 colonnes auxquelles j'aimerais appliquer la condition et ton code ne marche que pour les trois premieres, celles que j'avais citées en exemple mais si tu ouvres l'attachement tu verras que le tableau comporte une 60aine de cases "condition". Désolée si je m'étais mal expliquée la première fois. . Y a t il un autre moyen qui soit plus court ou faudrait il que je copie le "case" pour les 57 autres cas?

Autre question: comment verouiller un prijet?

Merci beaucoup

Mushka

Bonjour Mushka,

Tu ne t'étais pas mal expliquée, je donnais juste une piste. En fonction du niveau de connaissance en VBA, cela permet à certains d'entre-vous d'adapter la solution proposée au besoin. Parfois, vous avez juste besoin que l'on réveille votre esprit de créativité et de réflexion.

Voici le code :

Private Sub Worksheet_Change(ByVal Target As Range)
   If Target.Count = 1 And Target.Row = 2 Then
      ActiveSheet.Unprotect "toto"
            If Target = "Received" Then
               Target.Offset(8, 0).Resize(81, 2).Locked = True
               Target.Offset(8, 0).Resize(81, 2).Interior.Color = 13434777
            End If
      ActiveSheet.Protect Password:="toto", Contents:=True, AllowFormattingCells:=True, AllowFormattingColumns:=True, AllowFormattingRows:=True
   End If
End Sub

La ligne surlignée te permets juste de voir la plage qui est protégée. Tu pourras ensuite la mettre en commentaire ou la supprimer.

Offset(l,c) crée un décalage par rapport à la cellule active (l=ligne et c=colonnne)

Resize(l,c) redimensionne la plage, donc tu sais ce qu'il te reste à faire si tu veux aller jusqu'à la ligne 92.

Pour protéger le projet, ouvre la fenêtre VBE (Visual Basic Edition), sur la partie de gauche normalement il y a la fenêtre projet. Fais un clic droit sur ton classeur VBAProject(Exemple.xls)/Propriétés/Protection, tu coches "Verrouiller le projet pour l'affichage" et tu indiques deux fois le mot de passe. Je te conseille d'avoir une bonne mémoire ou d'utiliser toujours les mêmes mots de passe quand tu protèges tes projets, sinon tu ne pourras plus les modifier.

You're awesome Benoit!

Je suis en train de lire sur les fonctions "target" et "offset" et devine quoi? je les aime bien ces deux la.

Merci pour l'explication et le coup de main. D'habitude les gens repondent sans trop expliquer leur code.

Passe une bonne fin de weekend.

Mushka ( )

Rechercher des sujets similaires à "vba verrouiller deverrouiller conditi"