Autres macro dispatch rajouter paotection des cellules automatique

abdernino1985

XLDnaute Junior
Bonjour, voila j'ai une macro dispatch selon un critère sur plusieurs onglets
Option Explicite
Dim fa as Worksheet, f as Worksheet, fm as Worksheet, Tablo
Dim i&&, der Ln&
Sub dispatcher()

Set fa = Feuil1
Set fm = Sheets("Modèle")
Application. Screen Updating = False Tablo = fa. Range("A1: M" & fa. Range("A" & Rows. Count).End(xl Up). Row)
For i = 6 To UBound(Tablo, 1)
On Error Résumé Next
Set f = Sheets(C. Str(Tablo(i, 3)))
If Err. Number > 0 Then fm. Visible = True fm. Copy after: =fa
Active Sheet .Nom = C. Str(Tablo(i, 3))
Set f = Active Sheet
End If der Ln = f. Range("A" & Rows. Count).End(xl Up)(2). Row fa. Range("A" & i & ": M" & i). Copy f. Range("A" & der Ln)
f.Range("A" & der Ln) = der Ln - 5
Next i fm. Visible = False

For each f In worksheets
If f. Nom > "Feuil1" And f. Nom > "Modèle" then der Ln = f. Range("A" & Rows. Count).End(xl Up)(2). Row
f.Range("I" & der Ln & ": J" & der Ln). FormulaR1C1 = "=SUM(R[" & --derLn + 6 & "]C: R[-1]C)"
End If
Next f
End Sub mais voila je voudrais verrouiller les cellules qui sont créées dans chaque onglet pour rendre impossible la suppersion et modification, moi j'ai trouvé ça Activesheet protect Password: ="Sophia"
mais mon problème que c'est toute la feuille est verrouillé
 

Pièces jointes

  • Envoi Email.xlsm
    52.4 KB · Affichages: 2
Solution
1- Il faut déverrouiller toute la page à la main : En cliquant sur l'ensemble de la page puis format protection décocher Verrouillée.
2- Comme il semble que vous travailler par zones, on peut verrouiller toute une zone par :
VB:
    Range("C7:C20").Select            ' Sélection d'une zone verticale
    Selection.Locked = True
    Selection.FormulaHidden = False
    
    Range("D4:J4").Select            ' Selection d'une zone horizontale
    Selection.Locked = True
    Selection.FormulaHidden = False
Ca risque d'être fastidieux s'il y a beaucoup de zones à traiter.
Mais je n'ai pas d'autre idée.
Peut être que quelqu'un vous proposera mieux.

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir abdernino,

Activesheet protect Password: ="Sophia" verrouille la feuille mais pas toute la feuille.
Il vous faut déverrouiller les cellules auquel vous voulez accéder lorsque la feuille est verrouillée.

Faite le test : Cliquer sur cellule C1, puis clic droit Format de cellule. Dernier onglet Protection et décochez Verrouillée.
Maintenant mettez un mot de passe sur la feuille ( clic droit sur le nom de la feuille et Protéger la feuille )
Maintenant plus aucune cellule n'est accessible ... hormis C1.

Par contre si par macro vous voulez écrire dans des cellules protégées il vous faut faire :
Activesheet unprotect Password: ="Sophia"
Modifs cellules
Activesheet protect Password: ="Sophia"
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
XL protège toute la feuille hormis les cellules déverrouillées. On ne verrouille pas des cellules ou des lignes.
C'est pour ça que la ligne : f.Range.Activate.Protect Password:="Sophia" pose problème.
Il faut changer de stratégie.
Pourquoi ne pas déverrouiller toutes les cellules par défault. ( tout sélectionner puis Format ... )
Puis ensuite mettre les cellules modifiées en verrouillées ( Selection.Locked = True )
Dans ce cas le mot de passe est actif nulle part sauf sur vos lignes lockées.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
1- Il faut déverrouiller toute la page à la main : En cliquant sur l'ensemble de la page puis format protection décocher Verrouillée.
2- Comme il semble que vous travailler par zones, on peut verrouiller toute une zone par :
VB:
    Range("C7:C20").Select            ' Sélection d'une zone verticale
    Selection.Locked = True
    Selection.FormulaHidden = False
    
    Range("D4:J4").Select            ' Selection d'une zone horizontale
    Selection.Locked = True
    Selection.FormulaHidden = False
Ca risque d'être fastidieux s'il y a beaucoup de zones à traiter.
Mais je n'ai pas d'autre idée.
Peut être que quelqu'un vous proposera mieux.
 

Discussions similaires

Réponses
12
Affichages
225
Réponses
1
Affichages
122