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
250

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 229
Messages
2 086 426
Membres
103 206
dernier inscrit
diambote