simplification par boucle

  • Initiateur de la discussion Initiateur de la discussion ya_v_ka
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
16
Affichages
1 K
Retour