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
A voir également:
- EXCEL - mon code VB est pourri, aidez moi !
- Code ascii - Guide
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Code puk bloqué - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
4 réponses
Salut,
je ne suis pas un pro en VBA mais je m'essaie ;)
Voilà :)
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à :)
Croquette
MErci Ricky c'est qd même pas mal pour un début, tu m'as qd meme appris un truc !
Bonsoir,
Un peu plus court :
mais pas dit que tes lenteurs se situaient sur cette partie vue que tu faisais bien le .ScreenUpdating...
eric
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 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 :
eric
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