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 
  • Puis-je exécuter cette macro plus rapidement?
  • Comment remplacer le texte dans le corps d'un message entrant avec un lien hypertexte dans Outlook 2010?
  • Trouver et remplacer plusieurs valeurs dans les cellules sélectionnées
  • Attribuer le code déclenché à plusieurs images - Excel VBA
  • Comment Excel peut-il prendre deux cellules séparées avec des données séparées par des virgules et les associer?
  • Comment sélectionner des boutons radio par valeur de cellule dans Excel?
  • Ajout de l'option de pièce jointe au script vba de courrier électronique planifié
  • Comment supprimer ou modifier les remplissages d'arrière-plan dans toutes les tables dans un document Microsoft Word
  • Comment transposer les données en colonnes en lignes?
  • VBA Excel 2007 aide à accélérer le code pour masquer les lignes
  • Comment créer un menu personnalisé "Formes" dans Powerpoint
  • Soyons le génie de l'ordinateur et du réseau.