simplification par boucle

Y

ya_v_ka

Guest
hello tout le monde

encore besoin de simplifier moi... mon code est actuellement fonctionnel comme tel:

If ActiveSheet.Name = "CG" Then
ActiveSheet.Unprotect password:="zaza"
Rows("9:22").EntireRow.Hidden = False
Rows("29:42").EntireRow.Hidden = True
If [C9] = " " And [E9] = " " And [G9] = " " Then
Rows("9:22").EntireRow.Hidden = True
Rows("29:42").EntireRow.Hidden = False
ElseIf [C10] = " " And [E10] = " " And [G10] = " " Then
Rows("10:22").EntireRow.Hidden = True
Rows("30:42").EntireRow.Hidden = False
ElseIf [C11] = " " And [E11] = " " And [G11] = " " Then
Rows("11:22").EntireRow.Hidden = True
Rows("31:42").EntireRow.Hidden = False
'........comme ca jusqu'à...
ElseIf [C21] = " " And [E21] = " " And [G21] = " " Then
Rows("21:22").EntireRow.Hidden = True
Rows("41:42").EntireRow.Hidden = False
ElseIf [C22] = " " And [E22] = " " And [G22] = " " Then
Rows("22:22").EntireRow.Hidden = True
Rows("42:42").EntireRow.Hidden = False
End If
ActiveSheet.Protect password:="zaza", DrawingObjects:=True, Contents:=True, Scenarios:=True
Range("A1").Select

je pense qu'avec une boucle ca simplifierais, mais je n'y arrive pas...

point 2 sur chacun de mes formulaires je dois commencer le code par activesheet.unprotect... et finir de même, existe-t-il une simplification qui me permette le jour ou je souhaite changer de mot de passe, de ne pas devoir passer sur chaque page...?

merci d'avance ;-)

ya'v
 
M

myDearFriend!

Guest
Bonsoir Ya'v, le Forum.


Je n'ai pas testé mais je pense que tu devrais pouvoir simplifier comme ça :

Dim L As Byte
If ActiveSheet.Name = "CG" Then
  ActiveSheet.Unprotect Password:="zaza"
  Rows("9:22").EntireRow.Hidden = False
  Rows("29:42").EntireRow.Hidden = True

  For L = 9 To 22
    If Cells(L, 3) = " " And Cells(L, 5) = " " And Cells(L, 7) Then
      Range(Cells(L, 1), Cells(22, 1)).EntireRow.Hidden = True
      Range(Cells(L + 20, 1), Cells(22 + 20, 1)).EntireRow.Hidden = False
    End If
  Next L

  ActiveSheet.Protect Password:="zaza", DrawingObjects:=True, Contents:=True, Scenarios:=True
End If
Range("A1").Select


Par ailleurs, à l'ouverture du classeur (évènement Workbook_Open), tu as la possibilité de protéger ta feuille à l'aide de l'argument UserInterfaceOnly:= True . Cela permet de protéger ta feuille des actions de l'utilisateur tout en laissant possible les modifications par macros VBA (voir l'aide VBA sur la méthode Protect).


Cordialement,
Didier_mDF

myDearFriend-3.gif
 

Discussions similaires

Statistiques des forums

Discussions
312 688
Messages
2 090 958
Membres
104 708
dernier inscrit
Mparzival