Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2010 Problème vba lorsque la feuille est protegée

Linda42

XLDnaute Occasionnel
Bonjour,

J'ai un soucis avec l'exécution de deux boutons de contrôle qui indique une erreur 1004 quand je les exécute, et cela uniquement lorsque la feuille est protégée?
Lorsque j'ôte la protection, aucun message d'erreur.

Ci-dessous le code affecté à la feuille :
Code:
Option Explicit

Const lideb = 70            ' ligne de départ de la recherche de lignes vides
Const lifin = 178          ' dernière ligne --------------------------------
Const covid = "C"           ' colonne vide
Const ZoneI = "$B$5:$I$191" ' zone d'impression

' masque les lignes vides (colonne covid) entre lideb et lifin
Public Sub cacher_lignes_vides()
Dim li As Long, li1 As Long
li1 = lifin
' recherche premiere ligne vide
For li = lideb To lifin
  If Range(covid & li).Value = "" Then li1 = li: Exit For
Next li
If li1 <> lifin Then Rows(li1 & ":" & lifin).Hidden = True
' dessin afficher en premier plan
ActiveSheet.Shapes("afficher").ZOrder msoBringToFront
End Sub

Public Sub afficher_tout()
Rows(lideb & ":" & lifin).Hidden = False
' dessin masquer en premier plan
ActiveSheet.Shapes("masquer").ZOrder msoBringToFront
End Sub

' le dessin de l'imprimate a été nommé "imprimante"
Public Sub Imprimer()
Dim rep
Call cacher_lignes_vides
With ActiveSheet
  .PageSetup.PrintArea = ZoneI
  .PrintPreview
  rep = MsgBox("On imprime ?", vbYesNo, "Impression")
  If rep = vbYes Then .PrintOut
End With
Call afficher_tout
End Sub

Il y a un autre bouton de contrôle qui lui est affecté à une vba dans un module inséré. Aucun pb d'exécution même avec la feuille protégée.

Merci pour votre aide

Cdt
Merci pour
 
Solution
Bonjour Linda,

utilise ActiveSheet.Unprotect AVANT le job ... puis utilise
ActiveSheet.Protect APRÈS le job.

c'est par rapport à une protection simple, sans mot de passe ;
s'il y a un password, ajoute-le après, entre guillemets :


ActiveSheet.Unprotect "toto" ... puis :

ActiveSheet.Protect "toto"

soan

soan

XLDnaute Barbatruc
Inactif
Bonjour Linda,

utilise ActiveSheet.Unprotect AVANT le job ... puis utilise
ActiveSheet.Protect APRÈS le job.

c'est par rapport à une protection simple, sans mot de passe ;
s'il y a un password, ajoute-le après, entre guillemets :


ActiveSheet.Unprotect "toto" ... puis :

ActiveSheet.Protect "toto"

soan
 
Dernière édition:

Linda42

XLDnaute Occasionnel
Bonsoir Soan

Merci infiniment, tout fonctionne, il s'agissait d'une protection sans mot de passe.

Bonne soirée
Linda
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…