Afficher ou masquer les lignes dans une feuille excel soumise à la valeur d'une cellule particulière (Excel 2007 et Windows 7)

J'ai fait une feuille de calcul pour spécifier des sélections de décoration à partir d'une gamme d'options standard.

Il existe cinq gammes distinctes, donc c'est la première sélection puis, dans chaque gamme, il existe des sélections supplémentaires.

Donc, au début de ma feuille, j'ai utilisé un «cadre» et cinq «boutons radio» et j'ai lié cette sélection à la cellule P1 .

Donc, une fois cette sélection effectuée, je souhaite cacher différentes lignes et afficher uniquement les sélections pertinentes à cette première sélection (lignes 10-19 pertinentes pour la plage 1, lignes 20-29 pertinentes à la plage 2, etc.).

Voici mon «code», mais il ne fait rien lorsque je change les sélections de boutons radio (je peux voir la valeur dans la cellule P1 changer comme prévu).

 Sub HideShow() ' ' HideShow Macro ' Show only the selection pane assocated to the Design line selection If Range("P1").Value = 1 Then 'Decoration Range A Rows("10:19").Select Selection.EntireRow.Hidden = False Rows("20:59").Select Selection.EntireRow.Hidden = True ElseIf Range("P1").Value = 2 Then 'Decoration Range B Rows("10:19").Select Selection.EntireRow.Hidden = True Rows("20:29").Select Selection.EntireRow.Hidden = False Rows("30:59").Select Selection.EntireRow.Hidden = False ElseIf Range("P1").Value = 3 Then 'Decoration Range C Rows("10:29").Select Selection.EntireRow.Hidden = True Rows("30:39").Select Selection.EntireRow.Hidden = False Rows("40:59").Select Selection.EntireRow.Hidden = False ElseIf Range("P1").Value = 4 Then 'Decoration Range D Rows("10:39").Select Selection.EntireRow.Hidden = True Rows("40:49").Select Selection.EntireRow.Hidden = False Rows("50:59").Select Selection.EntireRow.Hidden = False ElseIf Range("P1").Value = 5 Then 'Decoration Range E Rows("10:49").Select Selection.EntireRow.Hidden = True Rows("50:59").Select Selection.EntireRow.Hidden = False End If End Sub 

Je sais que je n'ai vraiment pas besoin de la sélection finale (si ce n'est pas A, B, C ou D, il ne peut être que E), mais je l'ai simplement mis pour la propreté.

J'ai également essayé avec la valeur de la cellule en tant que texte, c'est-à-dire ElseIf Range("P1").Value = "5" Then... mais pas de joie là aussi.

Des conseils ont été appréciés.

One Solution collect form web for “Afficher ou masquer les lignes dans une feuille excel soumise à la valeur d'une cellule particulière (Excel 2007 et Windows 7)”

Si vous souhaitez que votre code s'exécute sur une sélection de bouton radio, vous devez appuyer sur la macro avec le bouton radio ou vous devez avoir la macro sous-feuille de travail () pour exécuter sur les modifications de la feuille de calcul.

Le code lui-même fonctionne bien. Il existe de meilleures façons de le faire, mais il n'y a rien de mal avec votre code.

Mettez ceci dans la VBA pour la feuille avec laquelle vous travaillez:

 Private Sub worksheet_change(ByVal Target As Range) ' ' HideShow Macro ' Show only the selection pane assocated to the Design line selection If Not Intersect(Target, Cells(1, 16)) Is Nothing Then If Range("P1").Value = 1 Then 'Decoration Range A Rows("10:19").Select Selection.EntireRow.Hidden = False Rows("20:59").Select Selection.EntireRow.Hidden = True ElseIf Range("P1").Value = 2 Then 'Decoration Range B Rows("10:19").Select Selection.EntireRow.Hidden = True Rows("20:29").Select Selection.EntireRow.Hidden = False Rows("30:59").Select Selection.EntireRow.Hidden = False ElseIf Range("P1").Value = 3 Then 'Decoration Range C Rows("10:29").Select Selection.EntireRow.Hidden = True Rows("30:39").Select Selection.EntireRow.Hidden = False Rows("40:59").Select Selection.EntireRow.Hidden = False ElseIf Range("P1").Value = 4 Then 'Decoration Range D Rows("10:39").Select Selection.EntireRow.Hidden = True Rows("40:49").Select Selection.EntireRow.Hidden = False Rows("50:59").Select Selection.EntireRow.Hidden = False ElseIf Range("P1").Value = 5 Then 'Decoration Range E Rows("10:49").Select Selection.EntireRow.Hidden = True Rows("50:59").Select Selection.EntireRow.Hidden = False End If End If End Sub 

Mais, je le ferais comme ceci:

 Private Sub worksheet_change(ByVal Target As Range) ' ' HideShow Macro ' Show only the selection pane assocated to the Design line selection If Not Intersect(Target, Range("p1")) Is Nothing Then On Error Resume Next ActiveSheet.Cells.EntireRow.Hidden = False If Range("P1") = 1 Then 'Decoration Range A Rows("20:59").Hidden = True ElseIf Range("P1") = 2 Then 'Decoration Range B Rows("10:19").Hidden = True ElseIf Range("P1") = 3 Then 'Decoration Range C Rows("10:29").Hidden = True ElseIf Range("P1") = 4 Then 'Decoration Range D Rows("10:39").Hidden = True ElseIf Range("P1") = 5 Then 'Decoration Range E Rows("10:49").Hidden = True End If End If End Sub 
  • Impossible d'utiliser Data-Time Picker in Office 2013
  • Masquer le formulaire d'utilisateur sur le classeur non actif?
  • Excel ajoute automatiquement une ligne supplémentaire avec des formules pour le nombre d'années inputed
  • Déplacer automatiquement les éléments Outlook supprimés pour archiver le dossier après deux semaines
  • Une manière intelligente de connecter plusieurs images à la macro en-clic - VAB Excel
  • Convertir un texte brut en lien hypertexte dans Outlook
  • Formule Excel pour comparer une valeur unique dans une cellule avec plusieurs valeurs dans une autre cellule
  • Formule de division excel
  • Comment Excel peut-il prendre deux cellules séparées avec des données séparées par des virgules et les associer?
  • Comment puis-je ajouter VBA dans MS Office?
  • Ajout de l'option de pièce jointe au script vba de courrier électronique planifié
  • Soyons le génie de l'ordinateur et du réseau.