Créer macro pour masquer lignes à un partir d'une liste déroulante
Enilorac29
Messages postés
12
Date d'inscription
Statut
Membre
Dernière intervention
-
Enilorac29 Messages postés 12 Date d'inscription Statut Membre Dernière intervention -
Enilorac29 Messages postés 12 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je souhaite créer une macro pour masquer certaines lignes d'un fichier selon la sélection effectuée dans un liste déroulante en cellule ac15.
Selon la sélection effectuée les lignes à masquer diffère. Je ne connais pas du tout les macros et souhaiterais obtenir un coup de main urgent si possible.
Ex : liste déroulante choix A -B - C
Si A est sélectionné masquer les lignes 10 à 12 et 15 à 20
Si B est sélectionné masquer les lignes 13 à 14 et 21 à 25
Si C est sélectionné masquer les lignes 10 à 25
Merci de votre retour rapide!
Cordialement !
Je souhaite créer une macro pour masquer certaines lignes d'un fichier selon la sélection effectuée dans un liste déroulante en cellule ac15.
Selon la sélection effectuée les lignes à masquer diffère. Je ne connais pas du tout les macros et souhaiterais obtenir un coup de main urgent si possible.
Ex : liste déroulante choix A -B - C
Si A est sélectionné masquer les lignes 10 à 12 et 15 à 20
Si B est sélectionné masquer les lignes 13 à 14 et 21 à 25
Si C est sélectionné masquer les lignes 10 à 25
Merci de votre retour rapide!
Cordialement !
A voir également:
- Créer macro pour masquer lignes à un partir d'une liste déroulante
- Liste déroulante excel - Guide
- Creer un groupe whatsapp a partir d'un autre groupe - Guide
- Liste déroulante en cascade - Guide
- Créer un compte google - Guide
- Créer un lien pour partager des photos - Guide
7 réponses
Bonjour, pour partager votre fichier, c'est par ici :
https://www.cjoint.com/
Déjà qq chose n'ira pas : si les lignes 15 à 20 sont masquées, il n'y aura plus de menu déroulant !
Suivant comment sera écrit la macro, si on lui dit "regarde" la valeur en AC15 pour masquer les lignes concernées, il va y avoir un bug !
https://www.cjoint.com/
Déjà qq chose n'ira pas : si les lignes 15 à 20 sont masquées, il n'y aura plus de menu déroulant !
Suivant comment sera écrit la macro, si on lui dit "regarde" la valeur en AC15 pour masquer les lignes concernées, il va y avoir un bug !
Bonjour,
le problème dans ton cas est que la cellule de commande AC15 se trouve parmis les lignes masquées dans deux cas, si en AC15 tu as A ou C
et après ces deux cas impossible d'avoir accès à AC15
peux tu déplacer la liste de validation !
autrement un code très simple en changeant AC15
Edit: ajout des balises de code
le problème dans ton cas est que la cellule de commande AC15 se trouve parmis les lignes masquées dans deux cas, si en AC15 tu as A ou C
et après ces deux cas impossible d'avoir accès à AC15
peux tu déplacer la liste de validation !
autrement un code très simple en changeant AC15
Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next If Not Intersect(Target, [AC15]) Is Nothing Then Range("10:25").EntireRow.Hidden = False If Target = "A" Then Range("10:12,15:20").EntireRow.Hidden = True If Target = "B" Then Range("13:14,21:25").EntireRow.Hidden = True If Target = "C" Then Range("10:25").EntireRow.Hidden = True End If End Sub
Edit: ajout des balises de code
Re,
pour mon code,
clic droit sur l'onglet de la feuille concernée/Visualiser le code et coller mon code
par contre en regardant tes réponses "si dans la première partie je souhaite que les lignes restent masquées tant aucune de mes options de la liste déroulante n'est pas sélectionnée"
que veux tu exactement, que toutes tes lignes citées soient masquées et si dans la cellule cible tu as A que faut il masquer et afficher !
pour mon code,
clic droit sur l'onglet de la feuille concernée/Visualiser le code et coller mon code
par contre en regardant tes réponses "si dans la première partie je souhaite que les lignes restent masquées tant aucune de mes options de la liste déroulante n'est pas sélectionnée"
que veux tu exactement, que toutes tes lignes citées soient masquées et si dans la cellule cible tu as A que faut il masquer et afficher !
Bonjour
En gros j'ai une liste dans la cellule ac15. Toutes les lignes à partir de 17 jusqu'à 375 doivent être masquées jusqu'à la sélection dans la liste déroulante.
Si la sélection est A ça doit masquer ou faire apparaître certaines de ces lignes.
En exemple les lignes 17 à 22 puis 32 à 375
Si B ça doit masquer 17 à 31 puis 38 à 375...
Etc.
C'est mieux?
En gros j'ai une liste dans la cellule ac15. Toutes les lignes à partir de 17 jusqu'à 375 doivent être masquées jusqu'à la sélection dans la liste déroulante.
Si la sélection est A ça doit masquer ou faire apparaître certaines de ces lignes.
En exemple les lignes 17 à 22 puis 32 à 375
Si B ça doit masquer 17 à 31 puis 38 à 375...
Etc.
C'est mieux?
Bonjour,
ça devrait donner un truc du genre
A noter que la cellule AC15 .. se trouvant sur une des lignes à masquer... ta liste ne sera plus visible...
ça devrait donner un truc du genre
Private Sub Worksheet_Change(ByVal Target As Range) 'Si la valeur modifiée se trouve bien dans la cellule AC15 If Not Application.Intersect(Target, Range("AC15")) Is Nothing Then 'on réaffiche toutes les lignes Rows("10:25").EntireRow.Hidden = False 'On masque en fonction de la valeur de ta liste Select Case Target.Value Case "A" Rows("10:12").EntireRow.Hidden = True Rows("15:20").EntireRow.Hidden = True Case "B" Rows("13:14").EntireRow.Hidden = True Rows("21:25").EntireRow.Hidden = True Case "C" Rows("10:25").EntireRow.Hidden = True End Select End If End Sub
A noter que la cellule AC15 .. se trouvant sur une des lignes à masquer... ta liste ne sera plus visible...
Re,
Vous avez dit URGENT, comme c'est bizarre en 15 minutes 3 réponses et toujours pas de retour !
il n'y a rien d'urgent que des gens pressés.
Vous avez dit URGENT, comme c'est bizarre en 15 minutes 3 réponses et toujours pas de retour !
il n'y a rien d'urgent que des gens pressés.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Re,
EDIT : Correction des balises de code. ( Ajout du langage pour avoir la coloration syntaxique et l'indentation)
Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next If Not Intersect(Target, [AC15]) Is Nothing Then Range("17:375").EntireRow.Hidden = True If Target = "A" Then Range("17:22,32:375").EntireRow.Hidden = False If Target = "B" Then Range("17:31,38:375").EntireRow.Hidden = False 'etc ... End If End Sub
EDIT : Correction des balises de code. ( Ajout du langage pour avoir la coloration syntaxique et l'indentation)
Bonsoir Mike-31,
Quand tu postes du code, merci d'utiliser les BALISES DE CODE.
Explications ( à lire entièrement....) disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
En tant que contributeur, je pensais que tu avais déjà connaissance de ce mécanisme.
Merci de l'appliquer dans tes prochains messages
Quand tu postes du code, merci d'utiliser les BALISES DE CODE.
Explications ( à lire entièrement....) disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
En tant que contributeur, je pensais que tu avais déjà connaissance de ce mécanisme.
Merci de l'appliquer dans tes prochains messages
Re,
quel type de message d'erreur !
quel type de message d'erreur !
Re,
non si tu écris le code comme je te l'ai écrit post 12 il n'y a pas de problème, ce bout de code est bien sur deux lignes
par contre
cette ligne comme les suivantes sont sur une ligne
EDIT : Correction des balises de code. ( Ajout du langage pour avoir la coloration syntaxique et l'indentation)
non si tu écris le code comme je te l'ai écrit post 12 il n'y a pas de problème, ce bout de code est bien sur deux lignes
If Not Intersect(Target, [AC15]) Is Nothing Then Range("17:375").EntireRow.Hidden = True
par contre
cette ligne comme les suivantes sont sur une ligne
If Target = "A" Then Range("17:22,32:375").EntireRow.Hidden = False
EDIT : Correction des balises de code. ( Ajout du langage pour avoir la coloration syntaxique et l'indentation)
écrit le code comme cela, j'étais resté sur le code initial avec toute les lignes affichées
Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next If Not Intersect(Target, [AC15]) Is Nothing Then Range("17:375").EntireRow.Hidden = False If Target = "A" Then Range("17:22,32:375").EntireRow.Hidden = True If Target = "B" Then Range("17:31,38:375").EntireRow.Hidden = True If Target = "C" Then Range("17:375").EntireRow.Hidden = False End If End Sub
Disons que la liste déroulante est en ac1.
Merci
Cordialement