Note: The other languages of the website are Google-translated. Back to English

Comment masquer ou afficher des colonnes en fonction de la sélection de la liste déroulante dans Excel?

Lorsque vous utilisez Excel, vous pouvez masquer ou afficher des colonnes spécifiques en fonction de la sélection d'une liste déroulante. Par exemple, si vous sélectionnez Non dans la liste déroulante, la colonne C à I sera masquée, mais si vous sélectionnez Oui, les colonnes masquées C à I seront non masquées. Voir la capture d'écran ci-dessous.
Dans cet article, nous allons vous montrer une méthode VBA pour masquer ou afficher des colonnes en fonction de la sélection de la liste déroulante dans Excel.

Masquer ou afficher les colonnes en fonction de la sélection de la liste déroulante dans Excel


Masquer ou afficher les colonnes en fonction de la sélection de la liste déroulante dans Excel

Comme indiqué dans l'exemple ci-dessus, pour masquer ou afficher les colonnes C à I en fonction de la sélection de la liste déroulante, procédez comme suit.

1. Tout d'abord, créez votre liste déroulante avec Oui et Non dont vous avez besoin.

2. Appuyez ensuite sur autre + F11 ouvrir le Microsoft Visual Basic pour Application fenêtre.

3. Double-cliquez sur le nom de la feuille ouverte actuelle dans le VBAProjet section pour ouvrir l'éditeur de code.

4. Ensuite, copiez et collez sous le code VBA dans l'éditeur de code.

Code VBA: masquer ou afficher les colonnes en fonction de la sélection de la liste déroulante

Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20180822
    If Target.Column = 2 And Target.Row = 3 Then
        If Target.Value = "No" Then
            Application.Columns("C:I").Select
            Application.Selection.EntireColumn.Hidden = True
        ElseIf Target.Value = "Yes" Then
            Application.Columns("C:I").Select
            Application.Selection.EntireColumn.Hidden = False
        End If
    End If
End Sub

Notes: Dans le code ci-dessus, Column = 2 et Row = 3 est la référence de cellule de la liste déroulante, et la plage C: I est les colonnes que vous souhaitez masquer ou afficher, veuillez les modifier selon vos besoins.

5. presse autre + Q touches simultanément pour quitter Microsoft Visual Basic pour Application fenêtre.

À partir de maintenant, lorsque vous sélectionnez Non dans la liste déroulante, toutes les colonnes spécifiées sont masquées.

Mais si vous sélectionnez Oui dans la liste déroulante, toutes les colonnes masquées s'affichent immédiatement.


Articles Liés:


Les meilleurs outils de productivité de bureau

Kutools for Excel résout la plupart de vos problèmes et augmente votre productivité de 80%

  • Réutilisation: Insérer rapidement formules complexes, graphiques et tout ce que vous avez utilisé auparavant; Crypter les cellules avec mot de passe; Créer une liste de diffusion et envoyer des e-mails ...
  • Barre Super Formula (modifiez facilement plusieurs lignes de texte et de formule); Disposition de lecture (lire et modifier facilement un grand nombre de cellules); Coller dans la plage filtréeplus
  • Fusionner les cellules / lignes / colonnes sans perdre de données; Contenu des cellules divisées; Combiner des lignes / colonnes en double... Empêcher les cellules en double; Comparer les gammesplus
  • Sélectionnez Dupliquer ou Unique Lignes; Sélectionnez les lignes vides (toutes les cellules sont vides); Super Find et Fuzzy Find dans de nombreux classeurs; Sélection aléatoire ...
  • Copie exacte Plusieurs cellules sans changer la référence de formule; Créer automatiquement des références à plusieurs feuilles; Insérer des puces, Cases à cocher et plus encore ...
  • Extrait du texte, Ajouter du texte, Supprimer par position, Supprimer l'espace; Créer et imprimer des sous-totaux de pagination; Conversion entre le contenu et les commentaires des cellulesplus
  • Super filtre (enregistrer et appliquer des schémas de filtrage à d'autres feuilles); Tri avancé par mois / semaine / jour, fréquence et plus; Filtre spécial par gras, italique ...
  • Combiner des classeurs et des feuilles de travail; Fusionner les tableaux en fonction des colonnes clés; Diviser les données en plusieurs feuilles; Conversion par lots xls, xlsx et PDFplus
  • Plus de 300 fonctionnalités puissantes. Prend en charge Office / Excel 2007-2019 et 365. Prend en charge toutes les langues. Déploiement facile dans votre entreprise ou organisation. Essai gratuit de 30 jours. Garantie de remboursement de 60 jours.
onglet kte 201905

Office Tab apporte une interface à onglets à Office et simplifie considérablement votre travail

  • Activer l'édition et la lecture par onglets dans Word, Excel, PowerPoint, Publisher, Access, Visio et Project.
  • Ouvrez et créez plusieurs documents dans de nouveaux onglets de la même fenêtre, plutôt que dans de nouvelles fenêtres.
  • Augmente votre productivité de 50% et réduit des centaines de clics de souris chaque jour!
bas de cabine
Commentaires (78)
Noté 5 hors 5 · évaluations 1
Ce commentaire a été minimisé par le modérateur sur le site
Salut, j'ai un classeur et j'essaie de comprendre un code VBA. J'ai un code que si je sélectionne dans une page déroulante1, il affiche une feuille de calcul. Je recherche un code que je sélectionne la page 1 et sélectionne une plage de 3 à 5 dans une liste déroulante, il affiche une feuille de calcul et affiche 5 colonnes dans la feuille de calcul non masquée. Est-ce faisable ?
Ce commentaire a été minimisé par le modérateur sur le site
obtenir un code d'erreur lorsque vous supprimez le numéro d'entrée, puis-je obtenir de l'aide ?
Ce commentaire a été minimisé par le modérateur sur le site
Avoir modifié le code comme ceci



Private Sub Worksheet_Change (Cible ByVal en tant que plage)


Si Target.Column = 3 et Target.Row = 2 et Target.Value = "Non"

Ensuite


Application.Lignes("3:90").Sélectionnez


Application.Selection.EntireRow.Hidden=Vrai


autre


Application.Lignes("3:90").Sélectionnez


Application.Selection.EntireRow.Hidden=Faux


Si fin


End Sub




Mais le problème auquel je suis confronté est que je ne peux pas répondre au oui non : car toutes les lignes 3 à 90 sont sélectionnées ne me permettant pas de répondre aux questions suivantes
Ce commentaire a été minimisé par le modérateur sur le site
Cher harikumar,

Le code que vous avez fourni fonctionne bien pour moi. Lorsque vous sélectionnez Non dans la liste déroulante (qui se situe dans la cellule C2), la ligne 3:90 est masquée immédiatement. Et sélectionner Oui dans la liste déroulante les affichera tous en même temps. Désolé, je ne comprends pas ce que vous avez dit à propos de l'impossibilité de répondre au oui non.
Ce commentaire a été minimisé par le modérateur sur le site
Merci pour l'article utile.


J'aimerais pousser cette macro un peu plus loin : j'ai exactement besoin de cela, mais avec la mise en garde que les colonnes que je dois masquer ne sont pas nécessairement dans une plage contiguë et peuvent être identifiées par une ligne spécifique dans chaque colonne.

Ce que j'ai en tête, c'est quelque chose comme ça :
si refcell = "a", alors masquez toutes les colonnes avec "a" dans la ligne 7, sinon
si refcell = "b", alors masquez toutes les colonnes avec "b" dans la ligne 7, sinon
si refcell = "c", alors masquez toutes les colonnes avec "c" dans la ligne 7 sinon
afficher toutes les colonnes

Si cela est possible, à quoi ressemblerait le code VBA ?
Ce commentaire a été minimisé par le modérateur sur le site
Hey! Avez-vous trouvé une solution pour cela? Je cherche le même :D
Ce commentaire a été minimisé par le modérateur sur le site
Cher John,
Le code VBA suivant peut vous aider à résoudre le problème. Lorsque vous entrez "a" dans la cellule A1, toutes les colonnes avec "a" dans la ligne 7 seront masquées automatiquement. Cela fonctionne également lors de la saisie de b et c dans la cellule A1.

Private Sub Worksheet_Change (Cible ByVal en tant que plage)
Dim xRg As Range
Dim xRgRechercher comme plage
Dim xRgUni As Range
Dim xFirstAddress As String
On Error Resume Next
Application.ScreenUpdating = Faux
Lignes(7).EntireColumn.Hidden = False
Si Target.Address = Range("A1").Address Alors
Définir xRg = Intersection(ActiveSheet.UsedRange, Rows(7))
Set xRgFind = xRg.Find(Target.Value, , xlValues, xlWhole, , , True)
Si non xRgFind n'est rien alors
xFirstAddress = xRgFind.Address
Do
Définir xRgFind = xRg.FindNext(xRgFind)
Si xRgUni n'est rien alors
Fixer xRgUni = xRgChercher
autre
Définir xRgUni = Application.Union(xRgUni, xRgFind)
Si fin
Boucle pendant (pas xRgFind n'est rien) et (xRgFind.Address <> xFirstAddress)
Si fin
xRgUni.EntireColumn.Hidden=Vrai
Si fin
Application.ScreenUpdating = True
End Sub
Ce commentaire a été minimisé par le modérateur sur le site
Cher Ryan,
Veuillez essayer le code VBA suivant. Lorsque vous entrez "a" dans la cellule A1, toutes les colonnes avec "a" dans la ligne 7 seront masquées automatiquement. Cela fonctionne également lors de la saisie de b et c dans la cellule A1.

Private Sub Worksheet_Change (Cible ByVal en tant que plage)
Dim xRg As Range
Dim xRgRechercher comme plage
Dim xRgUni As Range
Dim xFirstAddress As String
On Error Resume Next
Application.ScreenUpdating = Faux
Lignes(7).EntireColumn.Hidden = False
Si Target.Address = Range("A1").Address Alors
Définir xRg = Intersection(ActiveSheet.UsedRange, Rows(7))
Set xRgFind = xRg.Find(Target.Value, , xlValues, xlWhole, , , True)
Si non xRgFind n'est rien alors
xFirstAddress = xRgFind.Address
Do
Définir xRgFind = xRg.FindNext(xRgFind)
Si xRgUni n'est rien alors
Fixer xRgUni = xRgChercher
autre
Définir xRgUni = Application.Union(xRgUni, xRgFind)
Si fin
Boucle pendant (pas xRgFind n'est rien) et (xRgFind.Address <> xFirstAddress)
Si fin
xRgUni.EntireColumn.Hidden=Vrai
Si fin
Application.ScreenUpdating = True
End Sub
Ce commentaire a été minimisé par le modérateur sur le site
Salut Crystal,
Je suis nouveau dans ce domaine. Je ne peux pas dire à partir de votre code comment vous définissez a, b et c comme valeurs dans la cellule A1. Je fais essentiellement ce que fait votre code, mais j'ai besoin que la valeur de A1 (ou de toute autre cellule que je souhaite utiliser) soit une chaîne.
Mise en situation :
J'ai un tableau (plage de cellules) qui contient 1 des 3 valeurs de la ligne 3. Les valeurs sont ("Actif", "Inactif" et "Fermé". J'aimerais que toutes les colonnes qui ont "Inactif" ou "Fermé " dans la ligne 3 à masquer. La valeur de la ligne 3 provient d'une fonction INDEX/MATCH qui extrait d'une autre feuille de mon classeur. Dans l'autre feuille, je sélectionne 1 des 3 valeurs dans une liste déroulante.

Comment modifier ce code pour rechercher "Inactif" ou "Fermé" dans la ligne 3 et masquer uniquement ces colonnes ?


Un grand merci à l'avance!

Eddie
Ce commentaire a été minimisé par le modérateur sur le site
Cher Eddy,
Désolé, je ne peux pas aider avec ça. Vous pouvez poser votre question sur notre forum : https://www.extendoffice.com/forum.html pour obtenir plus de soutien de notre professionnel Excel.
Ce commentaire a été minimisé par le modérateur sur le site
Je dois l'utiliser pour masquer 14 colonnes alternativement en fonction d'une valeur de cellule.
par exemple - Si A1 = CAT, alors masquez les colonnes J à V

Si A1 = BAT, alors masquez les colonnes I et K à V

Si A1 = HAT, alors masquez les colonnes I, J et L à P

Fondamentalement, mes données se trouvent dans les colonnes I à V et j'ai besoin de masquer les colonnes de cette plage, à l'exception de celle sélectionnée dans la cellule de référence. et tout afficher si "Tous" est sélectionné dans la cellule de référence.

J'ai essayé d'utiliser la même formule ci-dessus dans une boucle mais j'obtiens une "erreur de compilation - " Y ​​a-t-il une formule différente que je dois utiliser ?
Ce commentaire a été minimisé par le modérateur sur le site
Cher Ruchi,
Désolé, je ne comprends pas vraiment votre point de vue "En gros, mes données se trouvent dans les colonnes I à V et j'ai besoin de masquer les colonnes de cette plage, à l'exception de celle sélectionnée dans la cellule de référence. et tout afficher si "Tous" est sélectionné dans la cellule de référence. »
Ce commentaire a été minimisé par le modérateur sur le site
Quelqu'un peut-il aider:


Si j'entre la valeur dans la cellule A1 comme "Non", je veux que les colonnes D:E se cachent. et si j'entre la valeur "Oui", je veux que les colonnes D:E s'affichent et les colonnes F:G se cachent
Ce commentaire a été minimisé par le modérateur sur le site
Cher Anis,
Ce code VBA peut vous aider. Veuillez essayer. Merci pour votre commentaire.

Private Sub Worksheet_Change (Cible ByVal en tant que plage)
Dim xRg As Range
Définir xRg = Plage("A1")
Si xRg.Address = Target.Address And Target.Value = "No" Alors
Columns("D:E").EntireColumn.Hidden = True
ElseIf xRg.Address = Target.Address And Target.Value = "Oui" Alors
Columns("D:E").EntireColumn.Hidden = False
Columns("F:G").EntireColumn.Hidden = True
Si fin
End Sub
Ce commentaire a été minimisé par le modérateur sur le site
J'ai besoin d'aide avec une macro ou une formule Excel. Quelqu'un peut-il aider?
Ce commentaire a été minimisé par le modérateur sur le site
J'ai besoin d'aide avec une macro similaire mais pour des plages de cellules spécifiées, pas une colonne entière. Cela peut-il être fait?
Ce commentaire a été minimisé par le modérateur sur le site
Chère Kara,
Voulez-vous dire "masquer le contenu des plages de cellules spécifiées en fonction de la valeur de la cellule" ? Veuillez poster votre question avec des détails afin de nous aider à résoudre le problème.
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour à tous! J'ai une sélection de 10 éléments et j'essaie de n'afficher que les lignes 57 à 72 lorsque j'en sélectionne un. J'utilise le code suivant mais d'une manière ou d'une autre, cela ne fonctionne pas et mon tableau de bord ne change pas du tout. Cependant, lorsque je saisis quelque chose dans une cellule aléatoire, la page se recharge et les lignes 57:72 deviennent masquées. Mais ensuite, il reste le même dans toutes mes sélections et je ne peux pas l'afficher à nouveau via la sélection de la liste déroulante. Puis-je savoir si quelqu'un a une suggestion alternative? Merci d'avance!


Private Sub Worksheet_Change (Cible ByVal en tant que plage)

Si Target.Column = 2 et Target.Row = 3 et Target.Value = "1"

Alors Application.Rows("57:72").Select Application.Selection.EntireRow.Hidden = False

Sinon Application.Rows("57:72").Select Application.Selection.EntireRow.Hidden = True

Si fin

End Sub
Ce commentaire a été minimisé par le modérateur sur le site
Hi,
Merci pour le code, si je veux ajouter une troisième option, quelle est la syntaxe ?
Ce commentaire a été minimisé par le modérateur sur le site
J'ai modifié ce code pour masquer les lignes au lieu des colonnes, et cela fonctionne mais avec un problème mineur. J'ai plusieurs listes de validation de données sur la même feuille de calcul, et lorsque je sélectionne une valeur dans ces autres listes, toutes les lignes spécifiées dans mon code semblent s'afficher automatiquement même si la valeur de la cellule cible est définie sur "Non". Pourquoi cela se produit-il et comment puis-je y remédier ?
Ce commentaire a été minimisé par le modérateur sur le site
Chère Janice,
Désolé pour l'erreur, veuillez essayer le nouveau code ci-dessous. Merci pour votre commentaire.

Private Sub Worksheet_Change (Cible ByVal en tant que plage)
Si Target.Column = 2 et Target.Row = 3 alors
Si Target.Value = "Non" Alors
Application.Colonnes("C:I").Sélectionnez
Application.Selection.EntireColumn.Hidden=Vrai
ElseIf Target.Value = "Oui" Alors
Application.Colonnes("C:I").Sélectionnez
Application.Selection.EntireColumn.Hidden=Faux
Si fin
Si fin
End Sub
Ce commentaire a été minimisé par le modérateur sur le site
C'est exactement ce que je dois faire, mais je ne veux pas que la colonne soit mise en surbrillance lorsque je masque/affiche. Comment puis-je construire dans le code pour aller à la cellule suivante ?
Ce commentaire a été minimisé par le modérateur sur le site
Merci pour l'article utile. J'aimerais pousser cette macro un peu plus loin : j'ai exactement besoin de cela, mais les colonnes que j'ai besoin de masquer/afficher ne sont pas nécessairement dans une plage continue. Mes colonnes vont de C à NC. Ce que je veux, c'est que si je sélectionne la valeur cible 1, elle masque AH en NC et affiche C en AG, et lorsque je sélectionne la valeur cible 2, elle masque C en AG et également BJ en NC, et affiche AH en BI et ainsi de suite sous réserve de la valeur cible.
Ce commentaire a été minimisé par le modérateur sur le site
Fondamentalement, j'ai besoin de savoir comment faire référence à plusieurs plages à la fois. J'ai essayé mais ça donne une erreur. Voici un aperçu
Private Sub Worksheet_Change (Cible ByVal en tant que plage)
Si Target.Column = 2 et Target.Row = 4 alors
Si Target.Value = "Janvier" Alors
Application.Columns("AH:NC").Select
Application.Selection.EntireColumn.Hidden=Vrai
ElseIf Target.Value = " Janvier " Alors
Application.Colonnes("C:AG").Sélectionnez
Application.Selection.EntireColumn.Hidden=Faux

ElseIf Target.Value = "Février" Alors
Application.Columns("C:AG, BJ:NC").Select
Application.Selection.EntireColumn.Hidden=Vrai
ElseIf Target.Value = " Février " Alors
Application.Colonnes("AH:BI").Sélectionnez
Application.Selection.EntireColumn.Hidden=Faux

Si fin
Si fin
End Sub

Remarque : Cela fonctionne pour Target.Value = "Janvier", mais pour Target.Value = "Février", il met en évidence l'erreur sur cette ligne => Application.Columns("C:AG, BJ:NC").Select

De plus, une fois masqué lors de la sélection d'une valeur cible, il ne s'affiche pas lors de la sélection d'une autre valeur cible.
Ce commentaire a été minimisé par le modérateur sur le site
Salut Maria,
Votre code a été optimisé. Veuillez essayer. J'espère que je peux aider.

Private Sub Worksheet_Change (Cible ByVal en tant que plage)
Dim xRG As Range
Dim xHRow As Integer
Définir xRG = Plage("B4")
Si non l'intersection (cible, xRG) n'est rien alors
Si Target.Value = "Janvier" Alors
Application.Columns("AH:NC").Hidden = True
Application.Columns("C:AG").Hidden = False
ElseIf Target.Value = "Février" Alors
Application.Columns("C:AG").Hidden = True
Application.Columns("BJ:NC").Hidden = True
Application.Columns("AH:BI").Hidden = False
Si fin
Si fin
End Sub
Ce commentaire a été minimisé par le modérateur sur le site
Mon menu déroulant est sur la cellule B23. Si oui, affichez et si non, masquez la ligne 29. Voici le code que j'utilise :

Private Sub Worksheet_Change (Cible ByVal en tant que plage)
'Mis à jour par Extendoffice 20180822
Si Target.Column = 2 et Target.Row = 23 alors
Si Target.Value = "non" Alors
Application.Ligne(29).Sélectionnez
Application.Selection.EntireRow.Hidden=Vrai
ElseIf Target.Value = "oui" Alors
Application.Ligne(29).Sélectionnez
Application.Selection.EntireRow.Hidden=Faux
Si fin
Si fin
End Sub

Mais je me retrouve avec une erreur d'exécution 438 - L'objet ne prend pas en charge cette propriété ou cette méthode. Pourquoi? Est-ce que quelque chose ne va pas dans le code ci-dessus?

Merci d'avance pour l'aide.
Ce commentaire a été minimisé par le modérateur sur le site
Salut Guinther,
Le code VBA ci-dessous peut vous aider à résoudre le problème. Veuillez essayer. Merci pour votre commentaire.

Private Sub Worksheet_Change (Cible ByVal en tant que plage)
Dim xRG As Range
Dim xHRow As Integer
Définir xRG = Plage("B23")
xHRang = 29
Si non l'intersection (cible, xRG) n'est rien alors
Si Target.Value = "Non" Alors
Application.Rows(xHRow).Select
Application.Selection.EntireRow.Hidden=Vrai
ElseIf Target.Value = "Oui" Alors
Application.Rows(xHRow).Select
Application.Selection.EntireRow.Hidden=Faux
Si fin
Si fin
End Sub
Ce commentaire a été minimisé par le modérateur sur le site
Salut Crystal,


J'espère que vous pourrez m'aider à masquer/afficher plusieurs lignes. Je voudrais afficher les lignes 63 à 73 lorsque OUI est sélectionné dans la cellule D51. J'utilise ce qui suit -


Private Sub Worksheet_Change (Cible ByVal en tant que plage)
Dim xRG As Range
Dim xHRow As Integer
Définir xRG = Plage("D51")
xHRow = ("63:73")
Si non l'intersection (cible, xRG) n'est rien alors
Si Target.Value = "Non" Alors
Application.Rows(xHRow).Select
Application.Selection.EntireRow.Hidden=Vrai
ElseIf Target.Value = "Oui" Alors
Application.Rows(xHRow).Select
Application.Selection.EntireRow.Hidden=Faux
Si fin
Si fin
End Sub



Merci !
Ce commentaire a été minimisé par le modérateur sur le site
Salut Gab,
Veuillez appliquer le code VBA ci-dessous. Merci pour votre commentaire.

Private Sub Worksheet_Change (Cible ByVal en tant que plage)
Dim xRG As Range
Dim xHRow As String
Définir xRG = Plage("D51")
xHRow = "63:73"
Si non l'intersection (cible, xRG) n'est rien alors
Si Target.Value = "Non" Alors
Application.Rows(xHRow).Select
Application.Selection.EntireRow.Hidden=Vrai
ElseIf Target.Value = "Oui" Alors
Application.Rows(xHRow).Select
Application.Selection.EntireRow.Hidden=Faux
Si fin
Si fin
End Sub
Ce commentaire a été minimisé par le modérateur sur le site
Le code donné pour masquer/afficher les colonnes en fonction de la valeur sélectionnée dans la liste déroulante d'une autre colonne fonctionne très bien. Merci. Mais cela ne fonctionne que pour une seule ligne.
Comment appliquer cela pour le reste du nombre de lignes sélectionné dans la feuille de calcul. Je comprends que nous devrons peut-être définir une variable pour le numéro de ligne et dans une boucle l'incrémenter. Mais je n'en connais pas la syntaxe. Quelqu'un pourrait-il aider avec cela s'il vous plaît?
Ce commentaire a été minimisé par le modérateur sur le site
Hi,
Veuillez essayer le code VBA ci-dessous. J'espère que cela peut aider.
Veuillez modifier la plage selon vos besoins.

Private Sub Worksheet_Change (Cible ByVal en tant que plage)
Dim xRG As Range
Définir xRG = Plage("B3:B30")
Si non l'intersection (cible, xRG) n'est rien alors
Si Target.Value = "Non" Alors
Application.Colonnes("C:I").Sélectionnez
Application.Selection.EntireColumn.Hidden=Vrai
ElseIf Target.Value = "Oui" Alors
Application.Colonnes("C:I").Sélectionnez
Application.Selection.EntireColumn.Hidden=Faux
Si fin
Si fin
End Sub
Ce commentaire a été minimisé par le modérateur sur le site
Merci. J'ai utilisé le code et cela fonctionne très bien, mais lorsque je tape dans une cellule ci-dessous et que j'appuie sur Entrée, le curseur revient automatiquement à la zone cible. Existe-t-il un moyen de contourner ce problème ?
Ce commentaire a été minimisé par le modérateur sur le site
Salut Grant,
J'ai essayé comme vous l'avez mentionné, mais je n'ai pas trouvé le même problème. Pouvez-vous me dire votre version d'Excel? Merci d'avoir commenté.
Ce commentaire a été minimisé par le modérateur sur le site
Chaque colonne correspond à un élève différent ( 2 dans cet exemple A et B). J'ai deux listes déroulantes (sur A1 et B1). Chacun a "Réussi", "Échec" et "Sélectionner un" en option. Maintenant, j'ai réussi à le faire fonctionner en sélectionnant une seule liste déroulante (soit A1, soit B1). Je veux pouvoir afficher les champs masqués par A1 chaque fois que je sélectionne quelque chose sur B1. Le but est de sélectionner une option sur A1 et de remplir les rangées qui restent. Sélectionnez ensuite B1 et remplissez les lignes restantes (indépendamment de la sélection A1.

Merci !

Private Sub Worksheet_Change (Cible ByVal en tant que plage)

Si Intersect(Target, Range("A1:B2")) n'est rien ou Target.Cells.Count > 1 alors
Exit Sub

ElseIf Range("A1").Value = "Select One" Then
Rows("2:15").EntireRow.Hidden = False

ElseIf Range("A1").Value = "Passé" Alors
Rows("7").EntireRow.Hidden = False
Rows("8:15").EntireRow.Hidden = True

ElseIf Range("A1").Value = "Échec" Alors
Rows("7").EntireRow.Hidden = True
Rows("8:15").EntireRow.Hidden = False

ElseIf Range("B1").Value = "Select One" Then
Rows("2:15").EntireRow.Hidden = False

ElseIf Range("B1").Value = "Réussi" Alors
Rows("7").EntireRow.Hidden = False
Rows("8:15").EntireRow.Hidden = True

ElseIf Range("B1").Value = "Échec" Alors
Rows("7").EntireRow.Hidden = True
Rows("8:15").EntireRow.Hidden = False

Si fin

End Sub
Ce commentaire a été minimisé par le modérateur sur le site
Good Day,
Désolé, je ne peux pas vous aider. Merci pour votre commentaire.
Ce commentaire a été minimisé par le modérateur sur le site
J'obtiens une erreur à xHRow = (14:24")

J'essaie de masquer ou d'afficher plusieurs lignes en fonction de ma sélection C4. Pouvez-vous aider avec ce que j'ai mal?

Private Sub Worksheet_Change (Cible ByVal en tant que plage)
Dim xRG As Range
Dim xHRow As Range
Définir xRG = Plage("C4")
xHRow = ("14:24")
Si non l'intersection (cible, xRG) n'est rien alors
Si Target.Value = "Pulled" Alors
Application.Rows(xHRow).Select
Application.Selection.EntireRow.Hidden=Vrai
ElseIf Target.Value = "Remplacé" Alors
Application.Rows(xHRow).Select
Application.Selection.EntireRow.Hidden=Faux
Si fin
Si fin
End Sub
Ce commentaire a été minimisé par le modérateur sur le site
L'erreur est : Erreur d'exécution '91' :
Variable objet ou avec variable de bloc non définie
Ce commentaire a été minimisé par le modérateur sur le site
J'ai besoin d'aide. Pourquoi, alors que j'ai déjà copié cette formule dans mon VBA et que j'ai essayé de la jouer, toute la table est masquée, pas seulement la colonne partielle que je souhaite masquer?
Merci beaucoup pour votre aide.
Ce commentaire a été minimisé par le modérateur sur le site
Salut Reza G.
Le code fonctionne bien dans mon cas. Cela vous dérange-t-il de joindre une capture d'écran de votre plage de tables et du code VBA après modification ? Merci pour votre commentaire.
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour, j'ai le même problème...

Voici mon code VBA modifié :

Private Sub Worksheet_Change (Cible ByVal en tant que plage)
Si Target.Column = 3 And Target.Row = 3 And Target.Value = "Gestion" Alors
Application.Colonnes("D:E").Sélectionnez
Application.Selection.EntireColumn.Hidden=Vrai

autre

Si Target.Value = "Affaire nouvelle" Alors
Application.Colonnes("D:E").Sélectionnez
Application.Selection.EntireColumn.Hidden=Faux

autre

Si Target.Value = "Avenant" Alors
Application.Colonnes("D:E").Sélectionnez
Application.Selection.EntireColumn.Hidden=Faux
Si fin
Si fin
Si fin
End Sub
Ce commentaire a été minimisé par le modérateur sur le site
J'ai utilisé le code pour travailler très bien. Merci. Mais lorsque j'ai sélectionné dans la liste déroulante, il est actif pour le dernier code ou passe aux données de la dernière colonne. Comment sélectionner la liste déroulante à chaque fois (Column = 13 And Target.Row = 3 then) ne pas bouger et peut enregistrer des données dans la colonne suivante ?
Thank you.
Exemple : Private Sub Worksheet_Change (ByVal Target As Range)
'Mis à jour par Extendoffice 20180822
' Si Target.Column = 13 et Target.Row = 3 Alors
Si Target.Column = 13 Then
Si Target.Value = "1 : Oui" Alors
Application.Colonnes("N:O").Sélectionnez
Application.Selection.EntireColumn.Hidden=Faux
Application.Colonnes("P:S").Sélectionnez
Application.Selection.EntireColumn.Hidden=Vrai
Application.Colonnes("V:Z").Sélectionnez
Application.Selection.EntireColumn.Hidden=Vrai
Application.Colonnes("X:Z").Sélectionnez
Application.Selection.EntireColumn.Hidden=Vrai
Application.Colonnes("AB:AK").Sélectionnez
Application.Selection.EntireColumn.Hidden=Vrai
Application.Colonnes("AL").Sélectionnez
Application.Selection.EntireColumn.Hidden=Faux
Application.Columns("AM").Select
Application.Selection.EntireColumn.Hidden=Vrai
ElseIf Target.Value = "2 : Non" Alors
Application.Colonnes("N").Sélectionnez
Application.Selection.EntireColumn.Hidden=Vrai
Application.Colonnes("O:Z").Sélectionnez
Application.Selection.EntireColumn.Hidden=Faux
Application.Colonnes("AB:AK").Sélectionnez
Application.Selection.EntireColumn.Hidden=Vrai
Application.Colonnes("AL").Sélectionnez
Application.Selection.EntireColumn.Hidden=Vrai
Application.Columns("AM").Select
Application.Selection.EntireColumn.Hidden=Faux
ElseIf Target.Value = "" Alors
Application.Colonnes("N:AN").Sélectionnez
Application.Selection.EntireColumn.Hidden=Faux
Si fin
Si fin
'Si Target.Column = 16 et Target.Row = 3 alors
Si Target.Column = 16 Then
Si Target.Value = "Chat" Alors
Application.Colonnes("V:W").Sélectionnez
Application.Selection.EntireColumn.Hidden=Vrai
ElseIf Target.Value = "Chien" Alors
Application.Colonnes("V:W").Sélectionnez
Application.Selection.EntireColumn.Hidden=Faux
Si fin
Si fin
End Sub
Il n'y a pas encore de commentaires postés ici
TÉLÉCHARGER PLUS
Laisser vos commentaires
Publier en tant qu'invité
×
Évaluez cet article:
0   Personnages
Emplacements suggérés