Macro : comment protéger une feuille contenant des formules
Bonjour,
Je me permets de poster de solliciter une aide pour un problème de macro excel.
En effet, j'ai crée une classeur avec plusieurs onglets. Chaque onglet dispose d'un tableau identique qui contient parfois des colonnes avec des formules. En fait, la feuille doit être protégée afin qu'elle ne puisse pas etre saisissable sauf sur 2 colonnes dont 1 qui contient une formule dedans.
J'ai l'impression que la macro exécute bien le calcule mais ne protège pas le classeur et le fait planter. Ce code marche lorsque j'ai 1 seul onglet mais pas avec plusieurs onglet.. comment cela se fait il ??
Voici la macro que j'ai fait :
Sub Macro1()
Dim i As Integer 'premiere ligne
Dim j As Integer 'premiere colonne
ActiveSheet.Unprotect Password:=""
Sheets("Feuil1").Select
i = 1 'premiere ligne sur laquelle on commence dans le tableau
j = 0 'on initialise la premiere colonne
While Cells(i, 2) <> ""
'Total 1
Cells(i, 3).Locked = False
Cells(i, 3) = "=RC[-2]-RC[-1]"
Cells(i, 3).Locked = True
'Total 2
Cells(i, 5).Locked = False
Cells(i, 5) = "=RC[-2]+RC[-1]"
Cells(i, 5).Locked = True
'On passe à la ligne suivante
i = i + 1
Wend
Sheets("Feuil2").Select
i = 3
j = 0
While Cells(i, 2) <> ""
'Total 1
Cells(i, 3).Locked = False
Cells(i, 3) = "=RC[-2]-RC[-1]"
Cells(i, 3).Locked = True
'Total 2
Cells(i, 5).Locked = False
Cells(i, 5) = "=RC[-2]+RC[-1]"
Cells(i, 5).Locked = True
'On passe à la ligne suivante
i = i + 1
Wend
ActiveSheet.Protect Password:=""
End Sub
Si quelqu'un aurait une idée, merci d'avance pour la réponse
Salut le forum
Les balises code (merci de les employer)
Sub Macro1()
Dim i As Integer 'premiere ligne
Dim j As Integer 'premiere colonne
ActiveSheet.Unprotect Password:=""
Sheets("Feuil1").Select
i = 1 'premiere ligne sur laquelle on commence dans le tableau
j = 0 'on initialise la premiere colonne
While Cells(i, 2) <> ""
'Total 1
Cells(i, 3).Locked = False
Cells(i, 3) = "=RC[-2]-RC[-1]"
Cells(i, 3).Locked = True
'Total 2
Cells(i, 5).Locked = False
Cells(i, 5) = "=RC[-2]+RC[-1]"
Cells(i, 5).Locked = True
'On passe à la ligne suivante
i = i + 1
Wend
Sheets("Feuil2").Select
i = 3
j = 0
While Cells(i, 2) <> ""
'Total 1
Cells(i, 3).Locked = False
Cells(i, 3) = "=RC[-2]-RC[-1]"
Cells(i, 3).Locked = True
'Total 2
Cells(i, 5).Locked = False
Cells(i, 5) = "=RC[-2]+RC[-1]"
Cells(i, 5).Locked = True
'On passe à la ligne suivante
i = i + 1
Wend
ActiveSheet.Protect Password:=""
End Sub Tu déprotèges la feuille active et tu protèges la feuille 2...
La raison de ton Plantage.
A adapter
Sub Voyons()
Dim Feuille As Object
For Each Feuille In Sheets
Feuille.Unprotect Password:=""
Next Feuille
'Ton code de traitement
For Each Feuille In Sheets
Feuille.Protect Password:=""
Next Feuille
End SubMytå
Bonjour et merci pour la réponse rapide !
Par contre, j'ai un soucis lorsque je met ce code.. ca me sort "variable attendue", qu'est ce que cela signifie ?
On dirait que ca marche au final, merci beaucoup !!!