(RESOLU)Simplifier un code (afficher masquer les lignes)

chaelie2015

XLDnaute Accro
BONJOUR FORUM,
Je cherche un code qui soit plus simple a celui-ci
VB:
If Not Intersect(Rows(Target.Row), [M1]) Is Nothing Then
      Application.ScreenUpdating = False
      n = CInt([M1])
      Rows("4:13").Hidden = True
           
      Select Case n
        Case 1
            Rows("4:4").Hidden = False
        Case 2
            Rows("4:5").Hidden = False
        Case 3
            Rows("4:6").Hidden = False
        Case 4
            Rows("4:7").Hidden = False
        Case 5
            Rows("4:8").Hidden = False
        Case 6
            Rows("4:9").Hidden = False
        Case 7
            Rows("4:10").Hidden = False
        Case 8
            Rows("4:11").Hidden = False
        Case 9
            Rows("4:12").Hidden = False
        Case 10
            Rows("4:13").Hidden = False
      End Select
 End If
afficher les lignes de la ligne 4 a la ligne 13 selon le chiffre saisi dans la cellule M1
Salutation
 
Dernière édition:
C

Compte Supprimé 979

Guest
Re : Simplifier un code (afficher masquer les lignes)

Bonjour chaelie2015

Tout simplement
Code:
  If Not Intersect(Rows(Target.Row), [M1]) Is Nothing Then
    Application.ScreenUpdating = False
    n = CInt([M1])
    Rows("4:13").Hidden = True
    Rows("4:" & 3 + n).Hidden = False
  End If

A+
 

Paf

XLDnaute Barbatruc
Re : Simplifier un code (afficher masquer les lignes)

Bonjour chaelie2015, BrunoM45

ou bien

Code:
If Not Intersect(Rows(Target.Row), [M1]) Is Nothing Then
      Application.ScreenUpdating = False
      n = CInt([M1])
      Rows(4 + n & ":13").Hidden = True
End If

A+

Edit: Ah ben non ! ça ne marche qu'une fois et encore, pas pour toutes les valeurs.
 
Dernière édition:

chaelie2015

XLDnaute Accro
Re : Simplifier un code (afficher masquer les lignes)

Bonjour bruno, paf
merci pour vos réponses , c'est exactement ce que je cherchais, je souhaite encore développer ce code
avec d'autre lignes c a d
Code:
If Not Intersect(Rows(Target.Row), [M1]) Is Nothing Then
    Application.ScreenUpdating = False
    n = CInt([M1])
    Rows("4:13").Hidden = True
    Rows("4:" & 3 + n).Hidden = False
    End If

If Not Intersect(Rows(Target.Row), [V4]) Is Nothing Then    
Application.ScreenUpdating = False
    n1 = CInt([V4])
    Rows("16:77").Hidden = True
    Rows("16:" & 15 + n1).Hidden = False
End If
MAIS ça n'a pas marché
SALUTATIONS
 

chaelie2015

XLDnaute Accro
Re : Simplifier un code (afficher masquer les lignes)

Re
j'explique mon souci
le 1er code :
j'affiche nombre de ligne ( de 4-13) selon le chiffre saisié dans la cellule M1 ===> ça fonctionne
2eme code :
je souhaite concatener au code précédent ce code
j'affiche nombre de ligne (de 16 a 77) selon le chiffre saisié dans la cellule V4 ====> ça n'a pas fonctionné pour les deux code
SALUTATIONS
 

chaelie2015

XLDnaute Accro
Re : Simplifier un code (afficher masquer les lignes)

Re,


Ca ne peut pas être le même principe puisque de 4 à 13 ça fait 10 possibilités
et de 16 à 77 ça en fait 62 !?

Re
Désolé de ne pas etre tres clair, je suis entrain de vous explique mon sousci pour etre plus clair, mais si vous permettez selon votre réponse du poste 2, je n'arrive pas a comprendre ou est le lien entre le nombre de possibilité?
MERCI PAR AVANCE
 

chaelie2015

XLDnaute Accro
Re : Simplifier un code (afficher masquer les lignes)

Bonjour forum, Bruno
Je re explique mon souci avec un fichier rattaché
Je souhaite afficher ou masquer les lignes selon le nombre saisié dans la cellule
si je saisi dans la cellule M1 un chiffre ( exemple) 4 j’aurai les ligne de A4 a A7 affichées et les autres de A8 a A13 masqués et si je saisi mnt un chiffre dans la cellule V4 un chiffre (exemple) 5 j’aurais les lignes de A16 au A20 affichés et les autre masqués
Salutations
 

Pièces jointes

  • MASQUER AFFICHER LES LIGNES.xlsx
    8.4 KB · Affichages: 26

chaelie2015

XLDnaute Accro
Re : Simplifier un code (afficher masquer les lignes)

Re
ci joint le code proposé
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim n
Dim n1
 

 If Not Intersect(Rows(Target.Row), [M1]) Is Nothing Then
    Application.ScreenUpdating = False
    n = CInt([M1])
    Rows("4:13").Hidden = True
    Rows("3:" & 3 + n).Hidden = False
  Exit Sub
 End If
 
 

 If Not Intersect(Rows(Target.Row), [V4]) Is Nothing Then
    Application.ScreenUpdating = False
    n1 = CInt([V4])
   Rows("16:77").Hidden = True
    Rows("15:" & 15 + n1).Hidden = False
 Exit Sub
 End If
 
 
 
 
 End Sub
Mais ça n'a pas marché ....
Salutations
 
Dernière édition:

Si...

XLDnaute Barbatruc
Re : Simplifier un code (afficher masquer les lignes)

salut
à essayer (pas d'erreur, quelque soit le type saisi dans les 2 cellules)
VB:
Private Sub Worksheet_Change(ByVal R As Range)
  Application.EnableEvents = 0
  If R.Address = "$M$1" Then
    If Not IsNumeric(R) Or R = 0 Then
      R = "": Rows("4:13").Hidden = 0
    Else
      Rows("4:13").Hidden = 1: Rows("3:" & 3 + Int(R)).Hidden = 0
    End If
  End If
  If R.Address = "$V$4" Then
    If Not IsNumeric(R) Or R = 0 Then
      R = "": Rows("16:77").Hidden = 0
    Else
      Rows("16:77").Hidden = 1: Rows("15:" & 15 + Int(R)).Hidden = 0
    End If
  End If
  Application.EnableEvents = 1
End Sub
 

Pièces jointes

  • MASQUER AFFICHER LES LIGNES.xlsm
    16.7 KB · Affichages: 35

chaelie2015

XLDnaute Accro
Re : Simplifier un code (afficher masquer les lignes)

Bonjour SI, forum
Merci c’est excellent, mais je souhaite si les deux cellules (M1 et V4) sont vides masquer toutes les lignes
et dans le cas les deux cellules non vide alors afficher seulement les lignes saisie dans ces deux cellules.
NB : la cellule V4 est une formule.

Salutations
 

Pièces jointes

  • charlie budget V1.xlsm
    69.5 KB · Affichages: 29

Si...

XLDnaute Barbatruc
Re : Simplifier un code (afficher masquer les lignes)

re

si tu avais envoyé to fichier plus tôt ... Donc dernier essai avec celui-ci.
Nota : ce n'est pas la cellule contenant la formule dont on teste le changement de valeur mais celles qui interviennent dans le calcul.
 

Pièces jointes

  • Vu pas vu (lignes).xlsm
    68.2 KB · Affichages: 45

chaelie2015

XLDnaute Accro
Re : Simplifier un code (afficher masquer les lignes)

Bonjour si …., forum
Merci pour la réponse, c’est nickel, exactement ce que j’ai souhaité, donc je peux généraliser ton code avec plusieurs tableaux ;la dernier question comment faire pour commencer l’affichage quand je saisi 1 l’affichage du tableau débute de la 3 ligne
J’ai pu faire ça

VB:
'TAB1
  If Not Intersect(R, [C4:I4]) Is Nothing Then
    If [V4] = "" Then
      Rows("16:77").Hidden = 1
    Else
      Rows("16:77").Hidden = 1: Rows("16:" & 16 + Int([V4])).Hidden = 0  '<===== ça mais il affiche que deux ligne si je saise1???
    End If
  End If

mais il débute de 2eme ligne ???
MERCI
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 940
Membres
101 845
dernier inscrit
annesof