Comment activer / désactiver des lignes dans Microsoft Office Excel 2013

J'ai une feuille de calcul Excel qui contient, disons simplement 3 colonnes (A, B, C).
les lignes de la colonne A sont désactivées jusqu'à ce que vous choisissiez quelque chose dans la colonne C.
La colonne C a 3 options, disons simplement BIRD , CAT et DOG .
Lorsque je choisirai un élément dans la colonne C, toutes les lignes de Col A seront activées.

Les lignes de la colonne B sont pour la validation de la longueur des lignes dans la colonne A.

Je fais cela parce qu'il existe une formule dans la colonne B qui valide la longueur de la colonne A. Par exemple, si je choisissez 'BIRD', la formule pour la colonne B aura une règle selon laquelle la longueur ne devrait être que égale à dire 5.

Dans la colonne C, il suffit de sélectionner n'importe quel élément de la list. J'espère que cela efface le scénario.

Comment puis-je faire cela?

Merci à vous les gars!

Capture d'écran: entrez la description de l'image ici

Au lieu de verrouiller et de déverrouiller la Column A , considérez simplement cacher la colonne en fonction de la sélection sur C Quoi qu'il en soit, vous devrez utiliser VBA, mais aller avec Hiding and Unhiding signifie less de code et facilite le travail en aval lorsque plus de logique entre dans la feuille.

Dans VBA, click la feuille de calcul dans laquelle se déroule. Dans ce cas, mettez ce qui suit:

 Private Sub Worksheet_Change(ByVal Target As Range) 'Check to see what changed. If it was "C1" then go ahead If Not (Intersect(Target, Range("C1")) Is Nothing) Then 'If the value in C1 is "Bird" then unhide Column A If Target.Value = "Bird" Then Range("A").Hidden = False 'Otherwise Hide column A Else Range("A").Hidden = True End If End If End Sub 

La seule partie déroutante ici est la ligne If Not(Intersect(Target... ). Ce qui se passe ici, c'est que chaque fois que cet onglet est modifié (comme si une cellule est modifiée sur l'onglet), cette macro triggersra. si la cellule qui a été changée est C1 … nous faisons cela avec la ligne confuse If Not(Intersect(Target... ) car les personnes qui écrivent VBA sont des sadistes.

Vous pourriez changer cela pour verrouiller / déverrouiller également la Column A Cela nécessiterait que vous supprimez la protection de l'onglet, débloquez la Column A , puis protégez l'onglet. Ou, dans le cas où il doit être verrouillé: Déprotégez l'onglet, verrouillez la Column A , puis reprochez l'onglet. Vous pouvez vous save en faisant cela avec l'enregistreur de macro pour voir le code, mais vous pouvez admettre que c'est un peu plus prononcé, puis simplement caché et en train de se dérouler.