Créer macro pour masquer lignes à un partir d'une liste déroulante
Fermé
Enilorac29
Messages postés
12
Date d'inscription
mardi 9 juin 2020
Statut
Membre
Dernière intervention
11 juin 2020
-
Modifié le 9 juin 2020 à 17:34
Enilorac29 Messages postés 12 Date d'inscription mardi 9 juin 2020 Statut Membre Dernière intervention 11 juin 2020 - 9 juin 2020 à 20:39
Enilorac29 Messages postés 12 Date d'inscription mardi 9 juin 2020 Statut Membre Dernière intervention 11 juin 2020 - 9 juin 2020 à 20:39
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 compte gmail - Guide
7 réponses
Yoyo01000
Messages postés
1639
Date d'inscription
samedi 2 février 2019
Statut
Membre
Dernière intervention
7 mars 2022
167
Modifié le 9 juin 2020 à 17:51
Modifié le 9 juin 2020 à 17:51
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 !
Mike-31
Messages postés
18354
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
1 janvier 2025
5 110
Modifié le 9 juin 2020 à 18:29
Modifié le 9 juin 2020 à 18:29
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
Mike-31
Messages postés
18354
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
1 janvier 2025
5 110
>
Enilorac29
Modifié le 9 juin 2020 à 19:01
Modifié le 9 juin 2020 à 19:01
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 !
Enilorac29
Messages postés
12
Date d'inscription
mardi 9 juin 2020
Statut
Membre
Dernière intervention
11 juin 2020
>
Mike-31
Messages postés
18354
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
1 janvier 2025
9 juin 2020 à 19:05
9 juin 2020 à 19:05
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?
jordane45
Messages postés
38372
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
9 janvier 2025
4 722
9 juin 2020 à 17:47
9 juin 2020 à 17:47
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...
Mike-31
Messages postés
18354
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
1 janvier 2025
5 110
Modifié le 9 juin 2020 à 18:13
Modifié le 9 juin 2020 à 18:13
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.
Enilorac29
Messages postés
12
Date d'inscription
mardi 9 juin 2020
Statut
Membre
Dernière intervention
11 juin 2020
9 juin 2020 à 19:00
9 juin 2020 à 19:00
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Mike-31
Messages postés
18354
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
1 janvier 2025
5 110
Modifié le 9 juin 2020 à 19:44
Modifié le 9 juin 2020 à 19:44
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)
Enilorac29
Messages postés
12
Date d'inscription
mardi 9 juin 2020
Statut
Membre
Dernière intervention
11 juin 2020
9 juin 2020 à 19:17
9 juin 2020 à 19:17
Super ! Reste plus qu'à trouver comment enregistrer et je pense que ça devrait aller... J'ai un message d'erreur quand j'enregistre...
jordane45
Messages postés
38372
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
9 janvier 2025
4 722
9 juin 2020 à 19:26
9 juin 2020 à 19:26
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
Mike-31
Messages postés
18354
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
1 janvier 2025
5 110
9 juin 2020 à 19:21
9 juin 2020 à 19:21
Re,
quel type de message d'erreur !
quel type de message d'erreur !
Enilorac29
Messages postés
12
Date d'inscription
mardi 9 juin 2020
Statut
Membre
Dernière intervention
11 juin 2020
9 juin 2020 à 19:34
9 juin 2020 à 19:34
Erreur de compilation
Bloc if sans end if
Bloc if sans end if
Mike-31
Messages postés
18354
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
1 janvier 2025
5 110
>
Enilorac29
Messages postés
12
Date d'inscription
mardi 9 juin 2020
Statut
Membre
Dernière intervention
11 juin 2020
Modifié le 9 juin 2020 à 19:43
Modifié le 9 juin 2020 à 19:43
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)
Enilorac29
Messages postés
12
Date d'inscription
mardi 9 juin 2020
Statut
Membre
Dernière intervention
11 juin 2020
>
Enilorac29
Messages postés
12
Date d'inscription
mardi 9 juin 2020
Statut
Membre
Dernière intervention
11 juin 2020
9 juin 2020 à 19:41
9 juin 2020 à 19:41
C'est bon j'ai réussi à enregistrer mes toutes les lignes restent masquées tout le temps...
Mike-31
Messages postés
18354
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
1 janvier 2025
5 110
Modifié le 9 juin 2020 à 19:56
Modifié le 9 juin 2020 à 19:56
é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
Enilorac29
Messages postés
12
Date d'inscription
mardi 9 juin 2020
Statut
Membre
Dernière intervention
11 juin 2020
9 juin 2020 à 20:39
9 juin 2020 à 20:39
Merci Mike-31 je vais essayer je vous tiens informé ! Encore merci pour l'aide!
9 juin 2020 à 18:22
Disons que la liste déroulante est en ac1.
Merci
Cordialement