Bonjour,
Merci pour la réponse,
Mais par manque d'expérience, je m'imaginais que pour verrouiller ou pour masquer des cellules, la méthode était plus simple, et je n'ai pas donné les bonnes informations,
Mon souhait est:
Pour des feuilles nommées "calendrier", "calcul mois","sem 1 cal", "sem 2 cal", "sem 3 cal", "sem 4 cal", "sem 5 cal", les masquer, et laisser les calculs se réaliser
Pour une feuille nommée "atelier", laisser la plage de cellules b5 à c30 modifiables et verrouiller le reste
Pour des feuilles nommées "sem 1", "sem 2", "sem 3", "sem 4", "sem 5", appliquer la méthode que j'ai décri dans le dernier fichier joint
Masquer toutes les formules, verrouiller les cellules de A 1 à IV 110, en laissant certaines plages modifiables, laisser les calculs se réaliser, et la macro s'exécuter,
Et éventuellement empêcher la copie de ce fichier excel.
Cordialement
Merci pour votre aide,
timili
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
michdenis
Bonjour,
Dans un module standard de ton projetVBA, copie ce qui suit. Tu dois enlever tous les mots de passe sur tes feuilles protégées Pour toutes les feuilles, il y aura un mot de passe appelé "MotDePasse" que tu peux modifier pour un autre. Conserve le même MotDePasse pour toutes les feuilles.
Tu enregistres ton fichier. à chaque ouverture de fichier, la macro "Auto_Open" se déclenchera et appellera la macro Traitement.
IMPORTANT : Ici c'est un forum d'entraide. La participation du demandeur est requise. Il se peut que tu aies moins de chance les prochaines fois si tu te contentes d'énumérer le cahier de charge que tu voudrais voir accomplir par des bénévoles pour ton application !
'---------------------------------- Sub Auto_Open() On Error Resume Next Call traitement End Sub '---------------------------------- Sub traitement() Dim Arr(), ArrFeuille(), ArrSem(), DerLig As Long Dim B As Long, Elt As Variant, Plg As Variant
'liste des feuille à masquer et non protéger ArrFeuille = Array("calendrier", "calcul mois", "sem 1 cal", _ "sem 2 cal", "sem 3 cal", "sem 4 cal", "sem 5 cal")
'Liste des feuille semaine ArrSem = Array("sem 1", "sem 2", "sem 3", "sem 4", "sem 5") 'Un tableau pour les plages d'adresses Arr = Array("C:AJ", "BC:CJ", "DC:EJ", "FC:GJ", "HC:IJ")
'Rend non visible la liste des feuilles For Each Elt In ArrFeuille Sheets(Elt).Visible = xlSheetHidden 'xlSheetHidden : permet d'afficher une feuille 'par le menu de la feuille de calcul 'xlVeryHidden : La feuille devient inaccessible 'par une commande de la feuille de calcul. 'doit utiliser une ligne de code Next
'Seule la plage B5:C30 est accessible manuellement 'Les macros sur la feuille peuvent s'exécuter. '"MotDePasse" est le mot de passe de protection de la feuille With Sheets("Atelier") .Unprotect "MotDePasse" .Cells.Locked = True .Range("B5:C30").Locked = False .Protect "MotDePasse", True, True, True, True End With
'pour toutes les feuilles SEM, '- Les formules ne sont pas visibles '-Plages mentionnées accessibles manuellement '-La feuille est accessible par macro '- Seules les cellules non protégées sont sélectionnables. For Each Elt In ArrSem With Worksheets(Elt) .Unprotect "MotDePasse" .Cells.Locked = True .UsedRange.SpecialCells(xlCellTypeFormulas).FormulaHidden = True For Each Plg In Arr 'Dernière cellule occupée dans la plage DerLig = .Range(Elt).Find(What:="*", _ LookIn:=xlFormulas, _ SearchOrder:=xlByRows, _ SearchDirection:=xlPrevious).Row For a = 24 To DerLig Step 4 .Range(Plg).Rows(a).Locked = False Next Next .Protect "MotDePasse", True, True, True, True End With Next End Sub '----------------------------------
"timili" a écrit dans le message de groupe de discussion :
Bonjour, Merci pour la réponse, Mais par manque d'expérience, je m'imaginais que pour verrouiller ou pour masquer des cellules, la méthode était plus simple, et je n'ai pas donné les bonnes informations, Mon souhait est: Pour des feuilles nommées "calendrier", "calcul mois","sem 1 cal", "sem 2 cal", "sem 3 cal", "sem 4 cal", "sem 5 cal", les masquer, et laisser les calculs se réaliser
Pour une feuille nommée "atelier", laisser la plage de cellules b5 à c30 modifiables et verrouiller le reste
Pour des feuilles nommées "sem 1", "sem 2", "sem 3", "sem 4", "sem 5", appliquer la méthode que j'ai décri dans le dernier fichier joint
Masquer toutes les formules, verrouiller les cellules de A 1 à IV 110, en laissant certaines plages modifiables, laisser les calculs se réaliser, et la macro s'exécuter,
Et éventuellement empêcher la copie de ce fichier excel. Cordialement Merci pour votre aide, timili
Bonjour,
Dans un module standard de ton projetVBA, copie ce qui suit.
Tu dois enlever tous les mots de passe sur tes feuilles protégées
Pour toutes les feuilles, il y aura un mot de passe appelé "MotDePasse"
que tu peux modifier pour un autre. Conserve le même MotDePasse
pour toutes les feuilles.
Tu enregistres ton fichier.
à chaque ouverture de fichier, la macro "Auto_Open" se déclenchera et
appellera la macro Traitement.
IMPORTANT : Ici c'est un forum d'entraide. La participation du
demandeur est requise. Il se peut que tu aies moins de chance les
prochaines fois si tu te contentes d'énumérer le cahier de charge
que tu voudrais voir accomplir par des bénévoles pour ton application !
'----------------------------------
Sub Auto_Open()
On Error Resume Next
Call traitement
End Sub
'----------------------------------
Sub traitement()
Dim Arr(), ArrFeuille(), ArrSem(), DerLig As Long
Dim B As Long, Elt As Variant, Plg As Variant
'liste des feuille à masquer et non protéger
ArrFeuille = Array("calendrier", "calcul mois", "sem 1 cal", _
"sem 2 cal", "sem 3 cal", "sem 4 cal", "sem 5 cal")
'Liste des feuille semaine
ArrSem = Array("sem 1", "sem 2", "sem 3", "sem 4", "sem 5")
'Un tableau pour les plages d'adresses
Arr = Array("C:AJ", "BC:CJ", "DC:EJ", "FC:GJ", "HC:IJ")
'Rend non visible la liste des feuilles
For Each Elt In ArrFeuille
Sheets(Elt).Visible = xlSheetHidden
'xlSheetHidden : permet d'afficher une feuille
'par le menu de la feuille de calcul
'xlVeryHidden : La feuille devient inaccessible
'par une commande de la feuille de calcul.
'doit utiliser une ligne de code
Next
'Seule la plage B5:C30 est accessible manuellement
'Les macros sur la feuille peuvent s'exécuter.
'"MotDePasse" est le mot de passe de protection de la feuille
With Sheets("Atelier")
.Unprotect "MotDePasse"
.Cells.Locked = True
.Range("B5:C30").Locked = False
.Protect "MotDePasse", True, True, True, True
End With
'pour toutes les feuilles SEM,
'- Les formules ne sont pas visibles
'-Plages mentionnées accessibles manuellement
'-La feuille est accessible par macro
'- Seules les cellules non protégées sont sélectionnables.
For Each Elt In ArrSem
With Worksheets(Elt)
.Unprotect "MotDePasse"
.Cells.Locked = True
.UsedRange.SpecialCells(xlCellTypeFormulas).FormulaHidden = True
For Each Plg In Arr
'Dernière cellule occupée dans la plage
DerLig = .Range(Elt).Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
For a = 24 To DerLig Step 4
.Range(Plg).Rows(a).Locked = False
Next
Next
.Protect "MotDePasse", True, True, True, True
End With
Next
End Sub
'----------------------------------
"timili" <nospam_r.e.michel@free.fr> a écrit dans le message de groupe de discussion :
gsmdnTFBvp__Vj3WRVn_vwA@giganews.com...
Bonjour,
Merci pour la réponse,
Mais par manque d'expérience, je m'imaginais que pour verrouiller ou pour
masquer des cellules, la méthode était plus simple, et je n'ai pas donné les
bonnes informations,
Mon souhait est:
Pour des feuilles nommées "calendrier", "calcul mois","sem 1 cal", "sem 2 cal",
"sem 3 cal", "sem 4 cal", "sem 5 cal", les masquer, et laisser les calculs se
réaliser
Pour une feuille nommée "atelier", laisser la plage de cellules b5 à c30
modifiables et verrouiller le reste
Pour des feuilles nommées "sem 1", "sem 2", "sem 3", "sem 4", "sem 5",
appliquer la méthode que j'ai décri dans le dernier fichier joint
Masquer toutes les formules, verrouiller les cellules de A 1 à IV 110, en
laissant certaines plages modifiables, laisser les calculs se réaliser, et la
macro s'exécuter,
Et éventuellement empêcher la copie de ce fichier excel.
Cordialement
Merci pour votre aide,
timili
Dans un module standard de ton projetVBA, copie ce qui suit. Tu dois enlever tous les mots de passe sur tes feuilles protégées Pour toutes les feuilles, il y aura un mot de passe appelé "MotDePasse" que tu peux modifier pour un autre. Conserve le même MotDePasse pour toutes les feuilles.
Tu enregistres ton fichier. à chaque ouverture de fichier, la macro "Auto_Open" se déclenchera et appellera la macro Traitement.
IMPORTANT : Ici c'est un forum d'entraide. La participation du demandeur est requise. Il se peut que tu aies moins de chance les prochaines fois si tu te contentes d'énumérer le cahier de charge que tu voudrais voir accomplir par des bénévoles pour ton application !
'---------------------------------- Sub Auto_Open() On Error Resume Next Call traitement End Sub '---------------------------------- Sub traitement() Dim Arr(), ArrFeuille(), ArrSem(), DerLig As Long Dim B As Long, Elt As Variant, Plg As Variant
'liste des feuille à masquer et non protéger ArrFeuille = Array("calendrier", "calcul mois", "sem 1 cal", _ "sem 2 cal", "sem 3 cal", "sem 4 cal", "sem 5 cal")
'Liste des feuille semaine ArrSem = Array("sem 1", "sem 2", "sem 3", "sem 4", "sem 5") 'Un tableau pour les plages d'adresses Arr = Array("C:AJ", "BC:CJ", "DC:EJ", "FC:GJ", "HC:IJ")
'Rend non visible la liste des feuilles For Each Elt In ArrFeuille Sheets(Elt).Visible = xlSheetHidden 'xlSheetHidden : permet d'afficher une feuille 'par le menu de la feuille de calcul 'xlVeryHidden : La feuille devient inaccessible 'par une commande de la feuille de calcul. 'doit utiliser une ligne de code Next
'Seule la plage B5:C30 est accessible manuellement 'Les macros sur la feuille peuvent s'exécuter. '"MotDePasse" est le mot de passe de protection de la feuille With Sheets("Atelier") .Unprotect "MotDePasse" .Cells.Locked = True .Range("B5:C30").Locked = False .Protect "MotDePasse", True, True, True, True End With
'pour toutes les feuilles SEM, '- Les formules ne sont pas visibles '-Plages mentionnées accessibles manuellement '-La feuille est accessible par macro '- Seules les cellules non protégées sont sélectionnables. For Each Elt In ArrSem With Worksheets(Elt) .Unprotect "MotDePasse" .Cells.Locked = True .UsedRange.SpecialCells(xlCellTypeFormulas).FormulaHidden = True For Each Plg In Arr 'Dernière cellule occupée dans la plage DerLig = .Range(Elt).Find(What:="*", _ LookIn:=xlFormulas, _ SearchOrder:=xlByRows, _ SearchDirection:=xlPrevious).Row For a = 24 To DerLig Step 4 .Range(Plg).Rows(a).Locked = False Next Next .Protect "MotDePasse", True, True, True, True End With Next End Sub '----------------------------------
"timili" a écrit dans le message de groupe de discussion :
Bonjour, Merci pour la réponse, Mais par manque d'expérience, je m'imaginais que pour verrouiller ou pour masquer des cellules, la méthode était plus simple, et je n'ai pas donné les bonnes informations, Mon souhait est: Pour des feuilles nommées "calendrier", "calcul mois","sem 1 cal", "sem 2 cal", "sem 3 cal", "sem 4 cal", "sem 5 cal", les masquer, et laisser les calculs se réaliser
Pour une feuille nommée "atelier", laisser la plage de cellules b5 à c30 modifiables et verrouiller le reste
Pour des feuilles nommées "sem 1", "sem 2", "sem 3", "sem 4", "sem 5", appliquer la méthode que j'ai décri dans le dernier fichier joint
Masquer toutes les formules, verrouiller les cellules de A 1 à IV 110, en laissant certaines plages modifiables, laisser les calculs se réaliser, et la macro s'exécuter,
Et éventuellement empêcher la copie de ce fichier excel. Cordialement Merci pour votre aide, timili