Verrouiller des cellules à l'ouverture du classeur

Résolu
Caloow Messages postés 14 Date d'inscription   Statut Membre Dernière intervention   -  
Caloow Messages postés 14 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à tous,

J'ai un petit soucis, j'essaye de verrouiller les cellules non vide d'un tableau excel (dans une feuille appelée "Enregist_Fabrication") à l'ouverture du classeur excel.

J'ai trouver quelques lignes de code,

Pour sélectionner mes cellules non vide

Ainsi que pour verrouiller ma feuille

Mais je n'arrive pas a combiner les deux.

Voici le code :
Private Sub Workbook_Open()
With Worksheets("Enregist_Fabrication")

Selection.SpecialCells(xlCellTypeConstants).Select

SelectCells.Protect Password:="monmot2passe", DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFormattingCells:=True, AllowFormattingColumns:=True, _
AllowFormattingRows:=True, AllowInsertingColumns:=True, AllowInsertingRows _
:=True, AllowInsertingHyperlinks:=True, AllowDeletingColumns:=True, _
AllowDeletingRows:=True, AllowFiltering:=True

End With
End sub

Je fais donc appel à vous, si vous pouviez m'aider à résoudre ce petit problème...

Merci d'avance !


6 réponses

skk201 Messages postés 942 Date d'inscription   Statut Membre Dernière intervention   54
 
Bonjour

Pourquoi ne pas tout simplement laisser toutes les cellules qui on du contenu verrouillées ?

(Enfin je ne comprend pas l'intérêt de verrouiller les cellules à l'ouverture du classeur. Est-ce que vous pourriez nous donner plus d'explication ?)
0
Caloow Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour skk201,

Les cellules verrouiller seraient celle d'un tableau qui est mis à jour tout les jours, voire même plusieurs fois par jour. Le but est qu'à chaque ouverture ou fermeture, le fichier prenne en compte les modifications réalisées, et verrouille ainsi les nouvelles cellules.

Une fois que l'opérateur à rentrer les infos dans les cellules et qu'il ferme le fichier, il ne doit plus pouvoir modifier ces cellules. Seul la personne ayant le mot de passe pourra les modifier
0
skk201 Messages postés 942 Date d'inscription   Statut Membre Dernière intervention   54
 
Je comprend Donc a chaque "mise à jour" des données peuvent être ajoutées

L'"opérateur" c'est une personne ? un autre classeur excel ? un programe ?
0
Caloow Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
 
Exactement

L'opérateur est une personne
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Maurice
 
Bonjour
Je pense que cette macro doit aller

Sub Test()
With Sheets("Base")
.Select
.Unprotect
Cells.Locked = False
Selection.SpecialCells(xlCellTypeConstants).Locked = True
.Protect
End With
End Sub

a toi de mettre ton mots de passe

A+
Maurice
0
skk201 Messages postés 942 Date d'inscription   Statut Membre Dernière intervention   54
 
Je pense qu'il faut combiné nos idée :)

Sub Verrouillage()
Application.ScreenUpdating = False
Dim MDP as string
MDP = "motdepasse" 'Changer le mot de passe au besoin
For Sh = 1 To Sheets.Count
Sheets(Sh).Unprotect MPD
For C = 1 To Sheets(Sh).Cells.SpecialCells(xlCellTypeLastCell).Column
For L = 1 To Sheets(Sh).Cells.SpecialCells(xlCellTypeLastCell).Row
If Sheets(Sh).Cells(L, C).Value = "" Then
    Sheets(Sh).Cells(L, C).Locked = False
Else
    Sheets(Sh).Cells(L, C).Locked = True
End If
Next
Next
Sheets(Sh).Protect MDP
Next
End Sub


Comme dit Maurice, libre a toi de mettre un mot de passe ou non.

Si tu ne veux pas de mot de passe efface tout simplement le MDP après Sheets(Sh).Unprotectet Sheets(Sh).Protect

Si plus tard tu veux en mettre tu n'auras plus qu'a reajouter les MDP
0
Caloow Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
 
Super ça fonctionne, merci à vous deux !
0
skk201 Messages postés 942 Date d'inscription   Statut Membre Dernière intervention   54
 
Le problème avec ton idée c'est que si le tableau est grand alors ça risque de faire ralentir l'ouverture du fichier.

Le plus simple serait une macro qui verrouille les cellules comme celle-ci :

Sub Verrouillage()
Application.ScreenUpdating = False
For Sh = 1 To Sheets.Count
For C = 1 To Sheets(Sh).Cells.SpecialCells(xlCellTypeLastCell).Column
For L = 1 To Sheets(Sh).Cells.SpecialCells(xlCellTypeLastCell).Row
If Sheets(Sh).Cells(L, C).Value = "" Then
    Sheets(Sh).Cells(L, C).Locked = False
Else
    Sheets(Sh).Cells(L, C).Locked = True
End If
Next
Next
Next
End Sub


Mais qu'elle soit activée manuellement par la personne qui change les données dedans


(si jamais cette macro verrouille les cellules contenant un objet et déverouilles celles qui sont égale a "")

EDIT

J'ai améliorer le code, maintenant s'applique directement sur toutes les feuilles du classeur.
0