Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

simplifier code par Boucle

chaelie2015

XLDnaute Accro
Bonjour Forum
Je souhaite simplifier ce code par une boucle de A33=0 jusqu’à A33=20
Code:
Private Sub Worksheet_Change(ByVal Target As Range)

 
    Select Case [A33]
    Case 1
        Rows("13:13").Hidden = False 
        Rows("14:32").Hidden = True 
    Case 2 'cas 2
        Rows("13:14").Hidden = False 
        Rows("15:32").Hidden = True 
    Case 3
        Rows("13:15").Hidden = False 
        Rows("16:32").Hidden = True 
    Case 4
        Rows("13:16").Hidden = False 
        Rows("17:32").Hidden = True 
    Case 5 'cas 2
        Rows("13:17").Hidden = False 
        Rows("18:32").Hidden = True 
    Case 6
        Rows("13:18").Hidden = False
        Rows("19:32").Hidden = True
    Case Else 'autre cas
        Rows("13:32").Hidden = True 'Masquer toutes les lignes
End Select 'fin de l'action en fonction de...
End Sub
MERCI
 

pierrejean

XLDnaute Barbatruc
Re : simplifier code par Boucle

bonjour chaelie

A tester:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
ldeb = 13
coldeb = 12
   Rows("13:" & coldeb + [A33]).Hidden = False
   Rows(ldeb + [A33] & ":32").Hidden = True
   If [A33] > 20 Then Rows("13:32").Hidden = True
 End Sub
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : simplifier code par Boucle

Bonjoue Chaelie, bonjour le forum,

Tu peux te passer d'une boucle. Essaie comme ça :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$A$33" Then Exit Sub
If Not IsNumeric(Target.Value) Then Exit Sub
If Target.Value < 0 Or Target.Value > 20 Then Exit Sub

Rows("13:" & Target.Value + 13).Hidden = False: If Target.Value = 20 Then Exit Sub
Rows(Target.Value + 13 & ":32").Hidden = True
End Sub

[Édition]
Bonjour PierreJean nos posts se sont croisés...
 

Chris401

XLDnaute Accro
Re : simplifier code par Boucle

Bonjour à tous

A tester :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim x As Integer, Lig As Integer

If Target.Address = "$A$33" Then
For Lig = 13 To 32
        Cells(Lig, 1).Rows.Hidden = IIf(Lig < Target + 13, False, True)
      Next
End If
End Sub
Cordialement
Chris
 

Chris401

XLDnaute Accro
Re : simplifier code par Boucle

Re

Tu as 3 réponses qui vont dans le même sens mais qui "ne fonctionne pas correctement"
Peut-être qu'il nous manque une info que seul ton fichier pourrait nous indiquer ?

Cordialement
Chris
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : simplifier code par Boucle

Bonjour le fil, bonjour le forum,

Tu as raison Chaelie nos codes ne fonctionne que si l'on tape les valeurs de 0 à 20 à la suite mais dès que l'on tape directement une valeur intermédiaire, ça na fonctionne plus...
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : simplifier code par Boucle

Re,

Alors... Je laisse les spécialistes se dépatouiller avec.
Mais la prochaine fois pense à donner ce genre d'information dans ton premier post... Car l'événementielle adéquate n'est plus Change mais Calculate si je ne m'abuse...
 

Papou-net

XLDnaute Barbatruc
Re : simplifier code par Boucle

Bonjour à tous,

A ce que je sais, la modification de la valeur d'une cellule par sa formule ne déclenche pas l'événement Change.

Il faudrait envisager d'utiliser un autre événement mais sans autre précision, difficile à définir.

Cordialement.

Edit: il faudrait agir sur la cellule qui est à l'origine du calcul de la formule.
 
Dernière édition:

Si...

XLDnaute Barbatruc
Re : simplifier code par Boucle

salut

Comme je l’ai compris et avec la même réflexion que Papou-net

Si on cache, on ne peut plus toucher aux cellules correspondantes donc, à part les cellules affichées, c’est figé.

Pour passer en mode actif (toucher aux cellules intermédiaires comme le dit Robert , il faut le prévoir donc voir l’exemple joint avec un bouton bascule.
 

Pièces jointes

  • Afficher Cacher lignes Si.xlsm
    19.9 KB · Affichages: 48

Discussions similaires

Réponses
3
Affichages
248
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…