Aide pour optimisation de code (routine)
t
Bonjour,
J'ai créé un code qui me permet de cacher un ensemble de lignes en fonction de la valeur de C15.
Ce code est basique et peut être optimisé via création de routine. Mais je n'arrive pas à en créer une qui fonctionne... Pouvez vous m'aider svp?
Extrait de la macro correspondant à la feuille "Design" :
If Range("C15") = 1 Then 'Si valeur cellule C15 égal 1
With Rows("45:240") 'Sélection des lignes 45 à 240
If .Hidden Then .Hidden = True Else .Hidden = True 'Si sélection est cachée, alors on cache. sinon on cache
End With
End If
If Range("C15") = 2 Then 'Si valeur cellule C15 égal 2
With Rows("45:64") 'Sélection des lignes 45 à 64
If Not .Hidden Then .Hidden = False Else .Hidden = False 'Si sélection n'est pas cachée, alors on ne cache pas. sinon on ne cache pas
End With
With Rows("67:240") 'Sélection des lignes 67 à 240
If Not .Hidden Then .Hidden = True Else .Hidden = True 'Si sélection n'est pas cachée, alors on cache. sinon on cache
End With
End If
If Range("C15") = 3 Then
With Rows("45:240")
If .Hidden Then .Hidden = False Else .Hidden = False
End With
With Rows("89:240")
If Not .Hidden Then .Hidden = True Else .Hidden = True
End With
End If
Un grand merci !
Bonjour,
Le plus court que je peux faire avec mes connaissances ...
Private Sub Worksheet_Change(ByVal Target As Range)
Dim X As Integer
Dim Z As Integer
If Not Application.Intersect(Target, Range("C15")) Is Nothing Then
X = Range("C15").Value
Select Case X
Case 1, Is >= 10
If Range("C15") = X Then 'Si veleur cellule C15 égal 1
With Rows("45:240") 'Sélection des lignes 45 à 240
If .Hidden Then .Hidden = True Else .Hidden = True 'Si sélection est cachée, alors on cache. sinon on cache
End With
End If
Case 2
If Range("C15") = 2 Then 'Si veleur cellule C15 égal 2
With Rows("45:64") 'Sélection des lignes 45 à 64
If Not .Hidden Then .Hidden = False Else .Hidden = False 'Si sélection n'est pas cachée, alors on ne cache pas. sinon on ne cache pas
End With
With Rows("67:240") 'Sélection des lignes 67 à 240
If Not .Hidden Then .Hidden = True Else .Hidden = True 'Si sélection n'est pas cachée, alors on cache. sinon on cache
End With
End If
Case 3, 4, 5, 6, 7, 8, 9
If Range("C15") = X Then
With Rows("45:240")
If .Hidden Then .Hidden = False Else .Hidden = False
End With
Z = (X * 22) + 23
With Rows(Z & ":240")
If Not .Hidden Then .Hidden = True Else .Hidden = True
End With
End If
End Select
End Sub
Gelinotte
boubenMembre impliqué
- Messages
- 1'794
- Excel
- 2010
- Inscrit
- 25/08/2014
- Emploi
- Consultant VB6 / SQL / VBA / Excel / Access
Bonsoir,
Ci-joint une autre proposition (hello Gelinotte, croisement de messages ...) en quelques lignes, à tester.
Fonctionne si les espacements sont réguliers, comme dans le fichier fourni en exemple.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim iLig As Integer
If Not Application.Intersect(Target, Range("C15")) Is Nothing Then
iLig = 22 * Int(Range("C15").Value + 1)
Rows("23:" & iLig).Hidden = False
Rows(iLig + 1 & ":" & 243).Hidden = True
End If
End Sub
Bonne soirée
Bouben
t
Bonjour,
Merci à vous deux. Ça fonctionne parfaitement bien !
Au plaisir de vous recroiser sur ce super forum.
Alex