Masquer automatiquement des lignes en fonction d'une celulle

Résolu/Fermé
kikou93
Messages postés
417
Date d'inscription
mardi 4 février 2014
Statut
Membre
Dernière intervention
24 septembre 2018
- 4 févr. 2016 à 16:53
kikou93
Messages postés
417
Date d'inscription
mardi 4 février 2014
Statut
Membre
Dernière intervention
24 septembre 2018
- 6 févr. 2016 à 22:21
Bonjour,

J'ai un travail à faire et je voudrais demander votre aide pour le sujet suivant :

Je voudrais masquer automatiquement les lignes en fonction de la celulle G18 comme suite :

Si G18=0 ou G18 ="" ---> masquer les lignes de 31 jusqu'à 64;
Si G18=1 ="" ---> masquer les lignes de 37 jusqu'à 64;
Si G18=2 ="" ---> masquer les lignes de 39 jusqu'à 64;
Si G18=3 ="" ---> masquer les lignes de 41 jusqu'à 64;
Si G18=4 ="" ---> masquer les lignes de 43 jusqu'à 64;
Si G18=5 ="" ---> masquer les lignes de 45 jusqu'à 64;
Si G18=6 ="" ---> masquer les lignes de 47 jusqu'à 64;
Si G18=7 ="" ---> masquer les lignes de 49 jusqu'à 64;
Si G18=8 ="" ---> masquer les lignes de 51 jusqu'à 64;
Si G18=9 ="" ---> masquer les lignes de 53 jusqu'à 64;
Si G18=10 ="" ---> masquer les lignes de 55 jusqu'à 64;
Si G18=11 ="" ---> masquer les lignes de 57 jusqu'à 64;
Si G18=12 ="" ---> masquer les lignes de 59 jusqu'à 64;
Si G18=13 ="" ---> masquer les lignes de 60 jusqu'à 64;
Si G18=14 ="" ---> masquer les lignes de 62 jusqu'à 64;
Si G18>=15 ="" ---> ne rien masquer.

Aidez-moi s'il vous plaît

Merci d'avance

2 réponses

cs_Le Pivert
Messages postés
7803
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2022
714
4 févr. 2016 à 18:10
Bonjour,

A mettre dans la feuille concernée:

Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Range("G18")) Is Nothing Then
Select Case Target.Value
Case Is = ""
 Rows("30:65").EntireRow.Hidden = False 'affiché
 Rows("31:64").EntireRow.Hidden = True 'masqué
Case Is = 0
 Rows("30:65").EntireRow.Hidden = False
 Rows("31:64").EntireRow.Hidden = True
 Case Is = 1
 Rows("30:65").EntireRow.Hidden = False
 Rows("37:64").EntireRow.Hidden = True
  Case Is = 2
 Rows("30:65").EntireRow.Hidden = False
 Rows("39:64").EntireRow.Hidden = True
 'etc
 '********************
 '*************************
 'tu continues à remplir les manquants suivant les exemples
 
   Case Is = 14
 Rows("30:65").EntireRow.Hidden = False
 Rows("62:64").EntireRow.Hidden = True
    Case Is >= 15
 Rows("30:65").EntireRow.Hidden = False 'affiché
End Select
End If
End Sub



0
kikou93
Messages postés
417
Date d'inscription
mardi 4 février 2014
Statut
Membre
Dernière intervention
24 septembre 2018
1
Modifié par kikou93 le 4/02/2016 à 18:55
Désolé de te déranger encore mais ça n'a pas marché et je ne sais pas pourquoi, mon travail est loin d'être terminé mais voici un échantillon (peux-tu le modifier directement s'il te plaît) :

http://www.cjoint.com/c/FBer1HDKE8H

La valeur de G18 et dans la cellule M29
0
cs_Le Pivert
Messages postés
7803
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2022
714
4 févr. 2016 à 19:57
Désolé de te déranger encore mais ça n'a pas marché et je ne sais pas pourquoi,

Voilà l'exemple:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Range("G18")) Is Nothing Then


et voilà ce que tu as mis:

Private Sub Worksheet_Activate()
If Not Application.Intersect(Target, Range("G18")) Is Nothing Then


et il faut rectifier la cellule G18 par M29
0
kikou93
Messages postés
417
Date d'inscription
mardi 4 février 2014
Statut
Membre
Dernière intervention
24 septembre 2018
1 > cs_Le Pivert
Messages postés
7803
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2022

4 févr. 2016 à 21:02
J'ai fais comme tu as demandé mais toujours rien, désolé.

Peut-être que le problème ici :

Rows("30:65").EntireRow.Hidden = False

ça ne changera pas quelle que soit la valeur.

Voici le fichier modifié :

http://www.cjoint.com/c/FBeub4Zm52H
0
kikou93
Messages postés
417
Date d'inscription
mardi 4 février 2014
Statut
Membre
Dernière intervention
24 septembre 2018
1
4 févr. 2016 à 23:24
J'ai enlevé
Rows("30:65").EntireRow.Hidden = False
pour que ça marche.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Range("M29")) Is Nothing Then
Select Case Target.Value
Case Is = ""

Rows("31:64").EntireRow.Hidden = True 'masqué
Case Is = 0
Rows("31:64").EntireRow.Hidden = True
Case Is = 1
Rows("37:64").EntireRow.Hidden = True
Case Is = 2
Rows("39:64").EntireRow.Hidden = True
Case Is = 3
Rows("41:64").EntireRow.Hidden = True
Case Is = 4
Rows("43:64").EntireRow.Hidden = True
Case Is = 5
Rows("45:64").EntireRow.Hidden = True
Case Is = 6
Rows("47:64").EntireRow.Hidden = True
Case Is = 7
Rows("49:64").EntireRow.Hidden = True
Case Is = 8
Rows("51:64").EntireRow.Hidden = True
Case Is = 9
Rows("53:64").EntireRow.Hidden = True
Case Is = 10
Rows("55:64").EntireRow.Hidden = True
Case Is = 11
Rows("57:64").EntireRow.Hidden = True
Case Is = 12
Rows("59:64").EntireRow.Hidden = True
Case Is = 13
Rows("61:64").EntireRow.Hidden = True
Case Is = 14
Rows("63:64").EntireRow.Hidden = True
Case Is >= 15
Rows("30:65").EntireRow.Hidden = False 'affiché
End Select
End If
End Sub

Mais il faut que je reviens à la cellule M29 pour que le changement soit appliqué, aurait-t'il un moyen pour que le changement soit appliqué automatiquement sans avoir l'obligation de revenir à la cellule M29
0
cs_Le Pivert
Messages postés
7803
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2022
714
5 févr. 2016 à 08:04
Il faut cliquer sur n'importe quelle cellule pour le changement soit effectif.
0
cs_Le Pivert
Messages postés
7803
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2022
714
6 févr. 2016 à 17:39
J'ai été obligé de remettre:

  Rows("30:65").EntireRow.Hidden = False 'affiché


car les lignes ne se mettaient pas à jour!

j'ai aussi changé l'evenement de la feuille par celui-ci:

Private Sub Worksheet_Change(ByVal Target As Range)


Mets ceci à la place:

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("M29")) Is Nothing Then
Select Case Target.Value
Case Is = ""
 Rows("30:65").EntireRow.Hidden = False 'affiché
 Rows("31:64").EntireRow.Hidden = True 'masqué
Case Is = 0
 Rows("30:65").EntireRow.Hidden = False 'affiché
 Rows("31:64").EntireRow.Hidden = True
 Case Is = 1
  Rows("30:65").EntireRow.Hidden = False 'affiché
 Rows("37:64").EntireRow.Hidden = True
  Case Is = 2
   Rows("30:65").EntireRow.Hidden = False 'affiché
 Rows("39:64").EntireRow.Hidden = True
  Case Is = 3
   Rows("30:65").EntireRow.Hidden = False 'affiché
 Rows("41:64").EntireRow.Hidden = True
  Case Is = 4
   Rows("30:65").EntireRow.Hidden = False 'affiché
 Rows("43:64").EntireRow.Hidden = True
  Case Is = 5
   Rows("30:65").EntireRow.Hidden = False 'affiché
 Rows("45:64").EntireRow.Hidden = True
  Case Is = 6
   Rows("30:65").EntireRow.Hidden = False 'affiché
 Rows("47:64").EntireRow.Hidden = True
  Case Is = 7
   Rows("30:65").EntireRow.Hidden = False 'affiché
 Rows("49:64").EntireRow.Hidden = True
  Case Is = 8
   Rows("30:65").EntireRow.Hidden = False 'affiché
 Rows("51:64").EntireRow.Hidden = True
  Case Is = 9
   Rows("30:65").EntireRow.Hidden = False 'affiché
 Rows("53:64").EntireRow.Hidden = True
  Case Is = 10
   Rows("30:65").EntireRow.Hidden = False 'affiché
 Rows("55:64").EntireRow.Hidden = True
  Case Is = 11
   Rows("30:65").EntireRow.Hidden = False 'affiché
 Rows("57:64").EntireRow.Hidden = True
 MsgBox Target.Value
  Case Is = 12
   Rows("30:65").EntireRow.Hidden = False 'affiché
 Rows("59:64").EntireRow.Hidden = True
  Case Is = 13
   Rows("30:65").EntireRow.Hidden = False 'affiché
 Rows("61:64").EntireRow.Hidden = True
  Case Is = 14
   Rows("30:65").EntireRow.Hidden = False 'affiché
 Rows("63:64").EntireRow.Hidden = True
    Case Is >= 15
 Rows("30:65").EntireRow.Hidden = False 'affiché
End Select
Range("A1").Select
End If
End Sub

0
kikou93
Messages postés
417
Date d'inscription
mardi 4 février 2014
Statut
Membre
Dernière intervention
24 septembre 2018
1
6 févr. 2016 à 22:21
désolée j'ai pas vu ce poste, j'ai essayé le macro et ça marche très bien merci je te suis reconnaissance de m'avoir aidé
0