Vba et protection de feuille

Résolu
marckherv Messages postés 87 Statut Membre -  
gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Je rencontre un problème lors de la mise sous protection de ma feuille excel qui dispose de vba.

Ci-dessous le message:


Ci-dessous le fichier excel en question
https://www.cjoint.com/c/GKyiRHkKj8j

Merci pour votre aide

3 réponses

  1. thev Messages postés 2010 Date d'inscription   Statut Membre Dernière intervention   723
     
    Bonjour,

    La propriété "Hidden" ne peut pas s'appliquer à une plage standard. La plage doit être composée soit de colonnes, soit de lignes.
    0
    1. marckherv Messages postés 87 Statut Membre
       
      Merci

      C'est-à-dire?

      Que dois-je faire?
      0
    2. thev Messages postés 2010 Date d'inscription   Statut Membre Dernière intervention   723 > marckherv Messages postés 87 Statut Membre
       
      Corriger cette instruction
      Rows("16:16").EntireRow.Hidden
      correction
      Rows(16).Hidden
      ou
      Range("16:16").Hidden
      0
    3. marckherv Messages postés 87 Statut Membre
       
      Merci

      Sur quelle ligne?

      Sub Zonecombinée1_QuandChangement()
      If Range("C12") = 2 Then Rows("16:16").EntireRow.Hidden = True: ActiveSheet.Shapes("ComboBox1").Visible = False: Rows("17:17").EntireRow.Hidden = True: Rows("19:19").EntireRow.Hidden = True: Rows("14:14").EntireRow.Hidden = False: Rows("41:41").EntireRow.Hidden = True: Rows("43:43").EntireRow.Hidden = True: Rows("39:39").EntireRow.Hidden = False
      If Range("C12") = 3 Then Rows("14:14").EntireRow.Hidden = True: Rows("19:19").EntireRow.Hidden = True: Rows("16:16").EntireRow.Hidden = False: ActiveSheet.Shapes("ComboBox1").Top = 250: ActiveSheet.Shapes("ComboBox1").Visible = True: Rows("17:17").EntireRow.Hidden = False: Rows("39:39").EntireRow.Hidden = True: Rows("43:43").EntireRow.Hidden = True: Rows("41:41").EntireRow.Hidden = False
      If Range("C12") = 4 Then Rows("16:16").EntireRow.Hidden = True: ActiveSheet.Shapes("ComboBox1").Visible = False: Rows("17:17").EntireRow.Hidden = True: Rows("14:14").EntireRow.Hidden = True: Rows("19:19").EntireRow.Hidden = False: Rows("39:39").EntireRow.Hidden = True: Rows("41:41").EntireRow.Hidden = True: Rows("43:43").EntireRow.Hidden = False
      End Sub
      0
    4. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744 > thev Messages postés 2010 Date d'inscription   Statut Membre Dernière intervention  
       
      Bonsoir thev,

      Les 3 lignes que tu as mis sont toutes 3 fonctionnelles
      Rows("16:16").EntireRow.Hidden = True
      Rows(16).Hidden = True
      Range("16:16").Hidden = True

      VBA autorise bien des approximations !
      Le problème de marckherv n'est dû qu'à la protection de la feuille qui interdit le masquage de lignes : il suffit de l'autoriser lors de la protection de la feuille sans toucher le code.
      0
    5. thev Messages postés 2010 Date d'inscription   Statut Membre Dernière intervention   723 > gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention  
       
      Bonsoir gbinforme,

      Effectivement. J'avais lu trop rapidement et j'ai fait une nouvelle réponse il y a une 1/2 heure..
      0
  2. thev Messages postés 2010 Date d'inscription   Statut Membre Dernière intervention   723
     
    Sur toutes les lignes du même type, ce qui simplifiera votre code.
    1- la propriété Rows s'utilise normalement avec le numéro de ligne
    Rows(16) Rows(17) .....
    2- la propriété EntireRow est inutile car Rows(i) correspond déjà à une ligne entière.

    Il serait bon de préciser la feuille à laquelle est rattaché votre code
    ci-dessous code de votre procédure simplifié et indenté

    Sub Zonecombinée1_QuandChangement()

    With Sheets("AVANCE")
    If .Range("C12") = 2 Then
    .Shapes("ComboBox1").Visible = False
    .Rows(16).Hidden = True: .Rows(17).Hidden = True: .Rows(19).Hidden = True: .Rows(41).Hidden = True: .Rows(43).Hidden = True
    .Rows(14).Hidden = False: .Rows(39).Hidden = False
    End If
    If .Range("C12") = 3 Then
    .Shapes("ComboBox1").Top = 250: .Shapes("ComboBox1").Visible = True
    .Rows(14).Hidden = True: .Rows(19).Hidden = True: .Rows(39).Hidden = True: .Rows(43).Hidden = True
    .Rows(16).Hidden = False: .Rows(17).Hidden = False: .Rows(41).Hidden = False
    End If
    If .Range("C12") = 4 Then
    .Shapes("ComboBox1").Visible = False
    .Rows(16).Hidden = True: .Rows(17).Hidden = True: .Rows(14).Hidden = True: .Rows(39).Hidden = True: .Rows(41).Hidden = True
    .Rows(19).Hidden = False: .Rows(43).Hidden = False
    End If
    End With

    End Sub
    0
  3. thev Messages postés 2010 Date d'inscription   Statut Membre Dernière intervention   723
     
    Bonsoir,

    En parcourant à nouveau le sujet, je m'aperçois avoir oublié de traiter l'aspect protection de la feuille.
    En supposant que le mot de passe est à blanc (voir constante mot_de_passe)
    Sub Zonecombinée1_QuandChangement()
    Const mot_de_passe As String = ""

    With Sheets("AVANCE")
    .Unprotect mot_de_passe

    If .Range("C12") = 2 Then
    .Shapes("ComboBox1").Visible = False
    .Rows(16).Hidden = True: .Rows(17).Hidden = True: .Rows(19).Hidden = True: .Rows(41).Hidden = True: .Rows(43).Hidden = True
    .Rows(14).Hidden = False: .Rows(39).Hidden = False
    End If
    If .Range("C12") = 3 Then
    .Shapes("ComboBox1").Top = 250: .Shapes("ComboBox1").Visible = True
    .Rows(14).Hidden = True: .Rows(19).Hidden = True: .Rows(39).Hidden = True: .Rows(43).Hidden = True
    .Rows(16).Hidden = False: .Rows(17).Hidden = False: .Rows(41).Hidden = False
    End If
    If .Range("C12") = 4 Then
    .Shapes("ComboBox1").Visible = False
    .Rows(16).Hidden = True: .Rows(17).Hidden = True: .Rows(14).Hidden = True: .Rows(39).Hidden = True: .Rows(41).Hidden = True
    .Rows(19).Hidden = False: .Rows(43).Hidden = False
    End If

    .Protect mot_de_passe
    End With

    End Sub
    0
    1. marckherv Messages postés 87 Statut Membre
       
      Bonjour,

      Parfait, un grand merci
      0