Macro sur classeur protegé

Salut chers membres du forum

J'ai un classeur dans lequel je protège les formules à l'ouverture.

Et dans ce classeur j'ai une macro qui, une fois lancée doit effectuée une action sur les feuilles . Le constat est que après exécution certaines feuilles ne sont pas traitées.

j'aimerais savoir quoi faire . Merci

bonjour

ma suggestion : supprimer toutes tes macros

Excel regorge de fonctionnalités qui permettent de tout faire

il faut apprendre Excel * avant de se lancer dans des macros

* tu en as pour 2 ou 3 ans intensifs

amitiés

Cher jmd

Vous aidez pas là.

Bonsoir KTM,

quand une macro doit travailler sur une feuille protégée (modifier des cellules verrouillées, insérer ou supprimer des lignes...) :

Sub Essai()

  Worksheets("Feuille X").Unprotect "loup"  'déprotège la feuille avant le job

  'ici le job de la sub qui marchait pas avant sur une feuille protégée
  'et qui fonctionnera ici car tu as déprotégé la feuille avec le bon
  'mot de passe "loup" (mets le tien, bien sûr !)

  Worksheets("Feuille X").Protect "loup" 'reprotège la feuille après le job

End Sub

si c'est une protection simple sans mot de passe, inutile de mettre "loup".


j'espère que ce post t'aidera au moins un peu plus que celui d'jmd.

sinon, j'irai manger un pot entier d'Nutella !


edit : ouppps ! j'avais oublié le « s » de Worksheets

c'est maint'nant corrigé.

dhany

Salut dhany

merci pour votre réponse mais il se trouve que c'est toutes les feuilles du classeur qui sont protégées

Si j'ai bien compris pourrais-je utiliser Workbook au lieu de WorkSheets ?

je n'ai pas utilisé Workbook, et c'est inutile de s'en servir puisque le job de la macro concerne le seul classeur actif.

ce que je t'ai indiqué dans mon post précédent est pour une seule feuille : Worksheets("Feuille X") ; pour faire le job pour toutes les feuilles du classeur, il suffit de mettre une boucle pour toutes les parcourir, et d'appliquer sur chacune d'elle : 2 exemples :

Sub Essai()
  Dim FX As Worksheet 'ici, c'est bien Worksheet au singulier, sans s final. ;)
  For Each FX in Worksheets
    FX.Unprotect "loup"
    'mettre ici le job de la sub, avec dépendance de feuille par rapport à FX :
    FX.[D5] = 10 'met 10 dans la cellule D5, même si elle est verrouillée
    FX.Protect "loup"
  Next FX
End Sub
Sub Essai()
  Dim i%
  For i = 1 To Worksheets.Count
    With Worksheets(i)
      .Unprotect "loup"
      'mettre ici le job de la sub, avec dépendance de feuille par rapport au With
      .[D5] = 10 'met 10 dans la cellule D5, même si elle est verrouillée
      .Protect "loup"
    End With
  Next FX
End Sub

bien sûr, ce code VBA suppose que toutes les feuilles du classeurs ont été protégées avec le même mot de passe !

mais si pour toutes les feuilles y'a une protection simple sans mot de passe, c'est encore plus simple car y'a pas d'mot de passe à indiquer !

dhany

Merci infiniment

Vous êtes un bon professeur

Cher jmd

Vous aidez pas là.

bien sûr que si

c'est le meilleur conseil à te donner.

je te préconise d'utiliser Excel et non VBA

ça te servira toute ta vie informatique

amitéis

jmd a écrit :

je te préconise d'utiliser Excel et non VBA

ça te servira toute ta vie informatique

toute une vie informatique sans VBA ? Mon D. quel horreur !!!

au secours, Ausecour ! j'viens d'faire un affreux cauchemar !!!

dhany

je ne suis pas pro mais je peux pas imaginer une vie informatique sans VBA. Juste mon petit point de vue

dhany a écrit :

toute une vie informatique sans VBA ? Mon D. quel horreur !!!

au secours, Ausecour ! j'viens d'faire un affreux cauchemar !!!

KTM a écrit :

je ne suis pas pro mais je peux pas imaginer une vie informatique sans VBA. Juste mon petit point de vue

merci KTM pour aller dans mon sens ! donc : vive VBA !!!

dhany

Rechercher des sujets similaires à "macro classeur protege"