EXCEL - mon code VB est pourri, aidez moi !
Croquette
-
Croquette -
Croquette -
Bonjour,
J'ai fais un code pour masquer des lignes entières en fonction d'une valeur d'une cellule qui s'incrémente ou qui diminue.
Le problème est qu'il est long à s'exécuter (1sec) et en plus il me parait vraiment neuneu... mais bon je sais pas faire autrement !
Auriez vous plus simple, plus intelligent et plus rapide???
Public Sub tab1()
Application.ScreenUpdating = False
If Range("j36") = 3 Then
Range("44:44").EntireRow.Hidden = True
Range("45:45").EntireRow.Hidden = True
Range("46:46").EntireRow.Hidden = True
Range("47:47").EntireRow.Hidden = True
Range("48:48").EntireRow.Hidden = True
Range("49:49").EntireRow.Hidden = True
Range("50:50").EntireRow.Hidden = True
Range("51:51").EntireRow.Hidden = True
Range("52:52").EntireRow.Hidden = True
Range("53:53").EntireRow.Hidden = True
Range("54:54").EntireRow.Hidden = True
Range("55:55").EntireRow.Hidden = True
End If
If Range("j36") = 4 Then
Range("44:44").EntireRow.Hidden = False
Range("45:45").EntireRow.Hidden = True
Range("46:46").EntireRow.Hidden = True
Range("47:47").EntireRow.Hidden = True
Range("48:48").EntireRow.Hidden = True
Range("49:49").EntireRow.Hidden = True
Range("50:50").EntireRow.Hidden = True
Range("51:51").EntireRow.Hidden = True
Range("52:52").EntireRow.Hidden = True
Range("53:53").EntireRow.Hidden = True
Range("54:54").EntireRow.Hidden = True
Range("55:55").EntireRow.Hidden = True
End If
If Range("j36") = 5 Then
Range("44:44").EntireRow.Hidden = False
Range("45:45").EntireRow.Hidden = False
Range("46:46").EntireRow.Hidden = True
Range("47:47").EntireRow.Hidden = True
Range("48:48").EntireRow.Hidden = True
Range("49:49").EntireRow.Hidden = True
Range("50:50").EntireRow.Hidden = True
Range("51:51").EntireRow.Hidden = True
Range("52:52").EntireRow.Hidden = True
Range("53:53").EntireRow.Hidden = True
Range("54:54").EntireRow.Hidden = True
Range("55:55").EntireRow.Hidden = True
End If
If Range("j36") = 6 Then
Range("44:44").EntireRow.Hidden = False
Range("45:45").EntireRow.Hidden = False
Range("46:46").EntireRow.Hidden = False
Range("47:47").EntireRow.Hidden = True
Range("48:48").EntireRow.Hidden = True
Range("49:49").EntireRow.Hidden = True
Range("50:50").EntireRow.Hidden = True
Range("51:51").EntireRow.Hidden = True
Range("52:52").EntireRow.Hidden = True
Range("53:53").EntireRow.Hidden = True
Range("54:54").EntireRow.Hidden = True
Range("55:55").EntireRow.Hidden = True
End If
If Range("j36") = 7 Then
Range("44:44").EntireRow.Hidden = False
Range("45:45").EntireRow.Hidden = False
Range("46:46").EntireRow.Hidden = False
Range("47:47").EntireRow.Hidden = False
Range("48:48").EntireRow.Hidden = True
Range("49:49").EntireRow.Hidden = True
Range("50:50").EntireRow.Hidden = True
Range("51:51").EntireRow.Hidden = True
Range("52:52").EntireRow.Hidden = True
Range("53:53").EntireRow.Hidden = True
Range("54:54").EntireRow.Hidden = True
Range("55:55").EntireRow.Hidden = True
End If
If Range("j36") = 8 Then
Range("44:44").EntireRow.Hidden = False
Range("45:45").EntireRow.Hidden = False
Range("46:46").EntireRow.Hidden = False
Range("47:47").EntireRow.Hidden = False
Range("48:48").EntireRow.Hidden = False
Range("49:49").EntireRow.Hidden = True
Range("50:50").EntireRow.Hidden = True
Range("51:51").EntireRow.Hidden = True
Range("52:52").EntireRow.Hidden = True
Range("53:53").EntireRow.Hidden = True
Range("54:54").EntireRow.Hidden = True
Range("55:55").EntireRow.Hidden = True
End If
If Range("j36") = 9 Then
Range("44:44").EntireRow.Hidden = False
Range("45:45").EntireRow.Hidden = False
Range("46:46").EntireRow.Hidden = False
Range("47:47").EntireRow.Hidden = False
Range("48:48").EntireRow.Hidden = False
Range("49:49").EntireRow.Hidden = False
Range("50:50").EntireRow.Hidden = True
Range("51:51").EntireRow.Hidden = True
Range("52:52").EntireRow.Hidden = True
Range("53:53").EntireRow.Hidden = True
Range("54:54").EntireRow.Hidden = True
Range("55:55").EntireRow.Hidden = True
End If
If Range("j36") = 10 Then
Range("44:44").EntireRow.Hidden = False
Range("45:45").EntireRow.Hidden = False
Range("46:46").EntireRow.Hidden = False
Range("47:47").EntireRow.Hidden = False
Range("48:48").EntireRow.Hidden = False
Range("49:49").EntireRow.Hidden = False
Range("50:50").EntireRow.Hidden = False
Range("51:51").EntireRow.Hidden = True
Range("52:52").EntireRow.Hidden = True
Range("53:53").EntireRow.Hidden = True
Range("54:54").EntireRow.Hidden = True
Range("55:55").EntireRow.Hidden = True
End If
If Range("j36") = 11 Then
Range("44:44").EntireRow.Hidden = False
Range("45:45").EntireRow.Hidden = False
Range("46:46").EntireRow.Hidden = False
Range("47:47").EntireRow.Hidden = False
Range("48:48").EntireRow.Hidden = False
Range("49:49").EntireRow.Hidden = False
Range("50:50").EntireRow.Hidden = False
Range("51:51").EntireRow.Hidden = False
Range("52:52").EntireRow.Hidden = True
Range("53:53").EntireRow.Hidden = True
Range("54:54").EntireRow.Hidden = True
Range("55:55").EntireRow.Hidden = True
End If
If Range("j36") = 12 Then
Range("44:44").EntireRow.Hidden = False
Range("45:45").EntireRow.Hidden = False
Range("46:46").EntireRow.Hidden = False
Range("47:47").EntireRow.Hidden = False
Range("48:48").EntireRow.Hidden = False
Range("49:49").EntireRow.Hidden = False
Range("50:50").EntireRow.Hidden = False
Range("51:51").EntireRow.Hidden = False
Range("52:52").EntireRow.Hidden = False
Range("53:53").EntireRow.Hidden = True
Range("54:54").EntireRow.Hidden = True
Range("55:55").EntireRow.Hidden = True
End If
If Range("j36") = 13 Then
Range("44:44").EntireRow.Hidden = False
Range("45:45").EntireRow.Hidden = False
Range("46:46").EntireRow.Hidden = False
Range("47:47").EntireRow.Hidden = False
Range("48:48").EntireRow.Hidden = False
Range("49:49").EntireRow.Hidden = False
Range("50:50").EntireRow.Hidden = False
Range("51:51").EntireRow.Hidden = False
Range("52:52").EntireRow.Hidden = False
Range("53:53").EntireRow.Hidden = False
Range("54:54").EntireRow.Hidden = True
Range("55:55").EntireRow.Hidden = True
End If
If Range("j36") = 14 Then
Range("44:44").EntireRow.Hidden = False
Range("45:45").EntireRow.Hidden = False
Range("46:46").EntireRow.Hidden = False
Range("47:47").EntireRow.Hidden = False
Range("48:48").EntireRow.Hidden = False
Range("49:49").EntireRow.Hidden = False
Range("50:50").EntireRow.Hidden = False
Range("51:51").EntireRow.Hidden = False
Range("52:52").EntireRow.Hidden = False
Range("53:53").EntireRow.Hidden = False
Range("54:54").EntireRow.Hidden = False
Range("55:55").EntireRow.Hidden = True
End If
If Range("j36") = 15 Then
Range("44:44").EntireRow.Hidden = False
Range("45:45").EntireRow.Hidden = False
Range("46:46").EntireRow.Hidden = False
Range("47:47").EntireRow.Hidden = False
Range("48:48").EntireRow.Hidden = False
Range("49:49").EntireRow.Hidden = False
Range("50:50").EntireRow.Hidden = False
Range("51:51").EntireRow.Hidden = False
Range("52:52").EntireRow.Hidden = False
Range("53:53").EntireRow.Hidden = False
Range("54:54").EntireRow.Hidden = False
Range("55:55").EntireRow.Hidden = False
End If
Application.ScreenUpdating = True
End Sub
J'ai fais un code pour masquer des lignes entières en fonction d'une valeur d'une cellule qui s'incrémente ou qui diminue.
Le problème est qu'il est long à s'exécuter (1sec) et en plus il me parait vraiment neuneu... mais bon je sais pas faire autrement !
Auriez vous plus simple, plus intelligent et plus rapide???
Public Sub tab1()
Application.ScreenUpdating = False
If Range("j36") = 3 Then
Range("44:44").EntireRow.Hidden = True
Range("45:45").EntireRow.Hidden = True
Range("46:46").EntireRow.Hidden = True
Range("47:47").EntireRow.Hidden = True
Range("48:48").EntireRow.Hidden = True
Range("49:49").EntireRow.Hidden = True
Range("50:50").EntireRow.Hidden = True
Range("51:51").EntireRow.Hidden = True
Range("52:52").EntireRow.Hidden = True
Range("53:53").EntireRow.Hidden = True
Range("54:54").EntireRow.Hidden = True
Range("55:55").EntireRow.Hidden = True
End If
If Range("j36") = 4 Then
Range("44:44").EntireRow.Hidden = False
Range("45:45").EntireRow.Hidden = True
Range("46:46").EntireRow.Hidden = True
Range("47:47").EntireRow.Hidden = True
Range("48:48").EntireRow.Hidden = True
Range("49:49").EntireRow.Hidden = True
Range("50:50").EntireRow.Hidden = True
Range("51:51").EntireRow.Hidden = True
Range("52:52").EntireRow.Hidden = True
Range("53:53").EntireRow.Hidden = True
Range("54:54").EntireRow.Hidden = True
Range("55:55").EntireRow.Hidden = True
End If
If Range("j36") = 5 Then
Range("44:44").EntireRow.Hidden = False
Range("45:45").EntireRow.Hidden = False
Range("46:46").EntireRow.Hidden = True
Range("47:47").EntireRow.Hidden = True
Range("48:48").EntireRow.Hidden = True
Range("49:49").EntireRow.Hidden = True
Range("50:50").EntireRow.Hidden = True
Range("51:51").EntireRow.Hidden = True
Range("52:52").EntireRow.Hidden = True
Range("53:53").EntireRow.Hidden = True
Range("54:54").EntireRow.Hidden = True
Range("55:55").EntireRow.Hidden = True
End If
If Range("j36") = 6 Then
Range("44:44").EntireRow.Hidden = False
Range("45:45").EntireRow.Hidden = False
Range("46:46").EntireRow.Hidden = False
Range("47:47").EntireRow.Hidden = True
Range("48:48").EntireRow.Hidden = True
Range("49:49").EntireRow.Hidden = True
Range("50:50").EntireRow.Hidden = True
Range("51:51").EntireRow.Hidden = True
Range("52:52").EntireRow.Hidden = True
Range("53:53").EntireRow.Hidden = True
Range("54:54").EntireRow.Hidden = True
Range("55:55").EntireRow.Hidden = True
End If
If Range("j36") = 7 Then
Range("44:44").EntireRow.Hidden = False
Range("45:45").EntireRow.Hidden = False
Range("46:46").EntireRow.Hidden = False
Range("47:47").EntireRow.Hidden = False
Range("48:48").EntireRow.Hidden = True
Range("49:49").EntireRow.Hidden = True
Range("50:50").EntireRow.Hidden = True
Range("51:51").EntireRow.Hidden = True
Range("52:52").EntireRow.Hidden = True
Range("53:53").EntireRow.Hidden = True
Range("54:54").EntireRow.Hidden = True
Range("55:55").EntireRow.Hidden = True
End If
If Range("j36") = 8 Then
Range("44:44").EntireRow.Hidden = False
Range("45:45").EntireRow.Hidden = False
Range("46:46").EntireRow.Hidden = False
Range("47:47").EntireRow.Hidden = False
Range("48:48").EntireRow.Hidden = False
Range("49:49").EntireRow.Hidden = True
Range("50:50").EntireRow.Hidden = True
Range("51:51").EntireRow.Hidden = True
Range("52:52").EntireRow.Hidden = True
Range("53:53").EntireRow.Hidden = True
Range("54:54").EntireRow.Hidden = True
Range("55:55").EntireRow.Hidden = True
End If
If Range("j36") = 9 Then
Range("44:44").EntireRow.Hidden = False
Range("45:45").EntireRow.Hidden = False
Range("46:46").EntireRow.Hidden = False
Range("47:47").EntireRow.Hidden = False
Range("48:48").EntireRow.Hidden = False
Range("49:49").EntireRow.Hidden = False
Range("50:50").EntireRow.Hidden = True
Range("51:51").EntireRow.Hidden = True
Range("52:52").EntireRow.Hidden = True
Range("53:53").EntireRow.Hidden = True
Range("54:54").EntireRow.Hidden = True
Range("55:55").EntireRow.Hidden = True
End If
If Range("j36") = 10 Then
Range("44:44").EntireRow.Hidden = False
Range("45:45").EntireRow.Hidden = False
Range("46:46").EntireRow.Hidden = False
Range("47:47").EntireRow.Hidden = False
Range("48:48").EntireRow.Hidden = False
Range("49:49").EntireRow.Hidden = False
Range("50:50").EntireRow.Hidden = False
Range("51:51").EntireRow.Hidden = True
Range("52:52").EntireRow.Hidden = True
Range("53:53").EntireRow.Hidden = True
Range("54:54").EntireRow.Hidden = True
Range("55:55").EntireRow.Hidden = True
End If
If Range("j36") = 11 Then
Range("44:44").EntireRow.Hidden = False
Range("45:45").EntireRow.Hidden = False
Range("46:46").EntireRow.Hidden = False
Range("47:47").EntireRow.Hidden = False
Range("48:48").EntireRow.Hidden = False
Range("49:49").EntireRow.Hidden = False
Range("50:50").EntireRow.Hidden = False
Range("51:51").EntireRow.Hidden = False
Range("52:52").EntireRow.Hidden = True
Range("53:53").EntireRow.Hidden = True
Range("54:54").EntireRow.Hidden = True
Range("55:55").EntireRow.Hidden = True
End If
If Range("j36") = 12 Then
Range("44:44").EntireRow.Hidden = False
Range("45:45").EntireRow.Hidden = False
Range("46:46").EntireRow.Hidden = False
Range("47:47").EntireRow.Hidden = False
Range("48:48").EntireRow.Hidden = False
Range("49:49").EntireRow.Hidden = False
Range("50:50").EntireRow.Hidden = False
Range("51:51").EntireRow.Hidden = False
Range("52:52").EntireRow.Hidden = False
Range("53:53").EntireRow.Hidden = True
Range("54:54").EntireRow.Hidden = True
Range("55:55").EntireRow.Hidden = True
End If
If Range("j36") = 13 Then
Range("44:44").EntireRow.Hidden = False
Range("45:45").EntireRow.Hidden = False
Range("46:46").EntireRow.Hidden = False
Range("47:47").EntireRow.Hidden = False
Range("48:48").EntireRow.Hidden = False
Range("49:49").EntireRow.Hidden = False
Range("50:50").EntireRow.Hidden = False
Range("51:51").EntireRow.Hidden = False
Range("52:52").EntireRow.Hidden = False
Range("53:53").EntireRow.Hidden = False
Range("54:54").EntireRow.Hidden = True
Range("55:55").EntireRow.Hidden = True
End If
If Range("j36") = 14 Then
Range("44:44").EntireRow.Hidden = False
Range("45:45").EntireRow.Hidden = False
Range("46:46").EntireRow.Hidden = False
Range("47:47").EntireRow.Hidden = False
Range("48:48").EntireRow.Hidden = False
Range("49:49").EntireRow.Hidden = False
Range("50:50").EntireRow.Hidden = False
Range("51:51").EntireRow.Hidden = False
Range("52:52").EntireRow.Hidden = False
Range("53:53").EntireRow.Hidden = False
Range("54:54").EntireRow.Hidden = False
Range("55:55").EntireRow.Hidden = True
End If
If Range("j36") = 15 Then
Range("44:44").EntireRow.Hidden = False
Range("45:45").EntireRow.Hidden = False
Range("46:46").EntireRow.Hidden = False
Range("47:47").EntireRow.Hidden = False
Range("48:48").EntireRow.Hidden = False
Range("49:49").EntireRow.Hidden = False
Range("50:50").EntireRow.Hidden = False
Range("51:51").EntireRow.Hidden = False
Range("52:52").EntireRow.Hidden = False
Range("53:53").EntireRow.Hidden = False
Range("54:54").EntireRow.Hidden = False
Range("55:55").EntireRow.Hidden = False
End If
Application.ScreenUpdating = True
End Sub
Configuration: Windows XP Safari 532.0
4 réponses
-
Salut,
je ne suis pas un pro en VBA mais je m'essaie ;)
Public Sub tab1() Application.ScreenUpdating = False If Range("j36") = 3 Then Range("44:55").EntireRow.Hidden = True End If If Range("j36") = 4 Then Range("44:44").EntireRow.Hidden = False Range("45:55").EntireRow.Hidden = True End If If Range("j36") = 5 Then Range("44:45").EntireRow.Hidden = False Range("46:55").EntireRow.Hidden = True End If If Range("j36") = 6 Then Range("44:46").EntireRow.Hidden = False Range("47:55").EntireRow.Hidden = True End If If Range("j36") = 7 Then Range("44:47").EntireRow.Hidden = False Range("48:55").EntireRow.Hidden = True End If If Range("j36") = 8 Then Range("44:48").EntireRow.Hidden = False Range("49:55").EntireRow.Hidden = True End If If Range("j36") = 9 Then Range("44:49").EntireRow.Hidden = False Range("50:55").EntireRow.Hidden = True End If If Range("j36") = 10 Then Range("44:50").EntireRow.Hidden = False Range("51:55").EntireRow.Hidden = True End If If Range("j36") = 11 Then Range("44:51").EntireRow.Hidden = False Range("52:52").EntireRow.Hidden = True End If If Range("j36") = 12 Then Range("44:52").EntireRow.Hidden = False Range("53:55").EntireRow.Hidden = True End If If Range("j36") = 13 Then Range("44:53").EntireRow.Hidden = False Range("54:55").EntireRow.Hidden = True End If If Range("j36") = 14 Then Range("44:54").EntireRow.Hidden = False Range("55:55").EntireRow.Hidden = True End If If Range("j36") = 15 Then Range("44:55").EntireRow.Hidden = False End If Application.ScreenUpdating = True End Sub
Voilà :) -
Bonsoir,
Un peu plus court :Public Sub tab1() Application.ScreenUpdating = False Select Case [J36] Case 3 Range("44:55").EntireRow.Hidden = True Case Is > 3, Is <= 15 Range("44:55").EntireRow.Hidden = True Range("44:44").Resize([J36] - 3).EntireRow.Hidden = False End Select Application.ScreenUpdating = True End Sub
mais pas dit que tes lenteurs se situaient sur cette partie vue que tu faisais bien le .ScreenUpdating...
eric-
-
- Pour être plus claire je remets tout mon code. Le problème est qu'avec le code d'eriiiiic, un clic sur mon bouton équivaut à +2 et 2 lignes sont en conséquence masquées ou affichées.
je ne vois pas ou est le souci dans le code...
Public Sub tab1()
Application.ScreenUpdating = False
Select Case [J36]
Case 3
Range("44:55").EntireRow.Hidden = True
Case Is > 3, Is <= 15
Range("44:55").EntireRow.Hidden = True
Range("44:44").Resize([J36] - 2).EntireRow.Hidden = False
End Select
Application.ScreenUpdating = True
End Sub
-------------------------------------------------------------------------------
Private Sub SpinButton1_SpinDown()
If Range("j36") > 3 Then
Range("j36").Value = Range("j36").Value - 1
tab1
Else
Exit Sub
End If
End Sub
-------------------------------------------------------------------------------
Private Sub SpinButton1_SpinUp()
If Range("j36") < 15 Then
Range("j36").Value = Range("j36").Value + 1
tab1
Else
Exit Sub
End If
End Sub
-
-
Je ne sais pas si c'est dû à ça mais de toute façon j'avais fait une erreur.
Essaie avec :Application.ScreenUpdating = False Select Case [J36] Case 3 Range("44:55").EntireRow.Hidden = True Case 4 To 15 Range("44:55").EntireRow.Hidden = True Range("44:44").Resize([J36] - 3).EntireRow.Hidden = False End Select Application.ScreenUpdating = True
eric -
A 1ère vue je ne vois rien qui provoquerait ça.
Sur mon exemple 1 seule ligne en plus ou en moins.
Peut-être as-tu un évènement change où tu as oublié cancel=true (?)
Pour ton SpinButton utilises ses propriétés linkedcell, min et max, ça fait toujours ça de lignes de codes en moins.
eric