Protection feuille sauf bouton

  • Initiateur de la discussion Initiateur de la discussion sim
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

sim

XLDnaute Occasionnel
Bonjour le Forum,

Grace vous tous, j'arrive dans la derniere phase de mon projet. Je m'interroge notamment a la protection de l'application.

Sauriez vous comment proteger une feuille, sauf l'utilisation des bouton et des chexkboxs?

Faut il que je le fasse par macro? ou directement dans excel?

Merci d'avance.

Sim

Edit avec piece jointe....ca sera peut mieux 🙄

Merci....
 

Pièces jointes

Dernière édition:
Re : Protection feuille sauf bouton

Bonjour,

l'utilisation des boutons ne devrait pas poser de problème, c'est les actions déclenchées par ces boutons, si elles entrainent des modifications sur la feuille en question qui vont coincer.... pour que vba puisse intervenir sur feuille protégée, il faut protéger cette feuille avec le code en utilisant l'argument "userinterfaceonly", code ci-dessous à placer dans le module "thisworkbook", se déclenche à l'ouverture du classeur...
Code:
Option Explicit
Private Sub Workbook_Open()
Feuil1.Protect "toto", userinterfaceonly:=True
End Sub
bon parès midi
@+
 
Re : Protection feuille sauf bouton

Pierrot!🙂, le forum,

Les bouton sur cette feuille ne change rien sur la feuille elle meme, mais si tu clique sur show details (checkbox) tu verra en rouge ce que font les boutons.

Donc je comprend bien ton post, mais pauvre debutant que je suis en excel et encore plus au sujet de protection je fais.

Outil/ Protection/ Proteger feuille

Apres cela, je ne peux plus appuyer sur ces fameux boutons..

J'ai essaye d'autoriser l'acces au bouton, mais je ne peux pas les selectionner. Apres tout peut etre que c'est normal puisqu'a la base c'est pour autoriser des zone de cellule......

@ Pierrot Je voudrai pas trop d'embeter avec tout ca alors si tu as un lien pour m'aider afaire tout ca je suis preneur ( comme tu me suis depuis le debut tu sais qu'il n'y a pas qu'une feuille a proteger......)

Merci d'avance.

Sim
 
Re : Protection feuille sauf bouton

Re bonjour Hyppo,

as tu essayé avec le code proposé ? sinon celui-ci boucle sur toutes les feuilles du classeur, deplus autorise la modification des objets :
Code:
Option Explicit
Private Sub Workbook_Open()
Dim ws As Worksheet
For Each ws In Worksheets
    ws.Protect "toto", DrawingObjects:=False, userinterfaceonly:=True
Next ws
End Sub

@+
 
Re : Protection feuille sauf bouton

Re,

Ca fonctionne parfaitement merci.....a part peut etre ma checkbox (qui affiche des commentaire) qui pose probleme apparament

le debugueur s'arrete sur

Selection.Font.ColorIndex = 3

dans:

Code:
Private Sub CheckBox1_Click()
Application.ScreenUpdating = False
Range("E25").Select
Range("E41").Select
Selection.Font.ColorIndex = 3
If CheckBox1.Value = True Then
[e25] = "This button will delete FX, and empty GMRB_Raw_Data."
Else
[e25] = ""
End If
If CheckBox1.Value = True Then
[e41] = "This button will create a new FX with the new datas just pasted."
Else
[e41] = ""
End If
Range("A3").Select
End Sub

Il y a til un moyen de contourner ceci??

Merci bcp..

Sim
 
Re : Protection feuille sauf bouton

Re,
Ta feuille ne s'appelle pas Feuil1 mais Sheet4
Dans le code de Pierrot (post #2), remplace Feuil1 par Sheet4 ou Sheets("Home")
A+

Edit : précisé le post concerné
 
Dernière édition:
Re : Protection feuille sauf bouton

Oulalalalala,

encore plus fatigue que ce que je pensais, j'ai utilise le second code donc pas de probleme de
de nom de feuille......


Du coup toujours mon probleme de checkbox


Merci....

apres ca j'arrete excel jusqu'a lundi.......🙄
 
Re : Protection feuille sauf bouton

Re,

vois pas de code de protection dans ton classeur... en positionnant ceci dans "thisworkbook", pas de souci chez moi....
Code:
Option Explicit
Private Sub Workbook_Open()
Dim ws As Worksheet
For Each ws In Worksheets
    ws.Protect "toto", DrawingObjects:=False, userinterfaceonly:=True
Next ws
End Sub
 
Re : Protection feuille sauf bouton

Re,

je crois que c'est la le soucy......

pour le moment je n'ai proteger que la feuille Home! et par Outils/protection/proteger Feuille

Et j'ai l'impression (qui doit etre fausse.......parce que ca n'aurait pas de sens) que le code que tu m'as donne enleve la protection..........de la feuille.

Test effectue:

Protection de la feuille (comme je le dis plus haut)
Fermeture du fichier en enregistrant
Ouverture du fichier.....et la la feuille est toujours protegee...puis que quand je fais outil/protection il me propose de deproteger la feuille......mais parcontre je peut faire exactement ce que je veux avec la feuille, supprimer des cellule, deplacer des cellules...etc

Il y a quelque chose que j'ai du manquer quelque part.....

Merci..

Sim
 
Re : Protection feuille sauf bouton

Re,

la protecttion doit se faire uniquement par le code et ce à l'ouverture du classeur, si ensuite tu peux modifier les cellules vérifies si ces dernières ne sont pas déverouillées... tu peux également modifier le code ainsi :
Code:
Option Explicit
Private Sub Workbook_Open()
Dim ws As Worksheet
For Each ws In Worksheets
    ws.Protect "toto", contents:=True, userinterfaceonly:=True
Next ws
End Sub
 
Re : Protection feuille sauf bouton

Re,
Sans vouloir insister lourdement, essaie le premier code de Pierrot mis à niveau pour le nom de feuille, ça marche
Code:
Option Explicit
Private Sub Workbook_Open()
Sheet4.Protect "toto", userinterfaceonly:=True
End Sub
A+
 
Re : Protection feuille sauf bouton

Re,

bon je crois que c'est asses clair, je vais reprendre le premier code, j'aimais bien le code2 car j'aurai une autre feuille avec un bouton

mais pares tout j'aurai juste a copier la ligne en changeant le nom de la feuille....

Je fais ca je reviens....pour donner le resultat
 
Re : Protection feuille sauf bouton

Re,

Bon, pour ma chekbox ca marche....

Mais quand j'utilise les bouton, cela me crai des erreur dans les macro qu'elle lance

Donc je vais tout vous mettre pour que vous ayez la vue la plus large possible

Code This Workbook:

Code:
Option Explicit
Private Sub Workbook_Open()
    Sheets("Home").Activate
    Range("A1").Select
    Sheet4.Protect "0000", userinterfaceonly:=True
End Sub

Code du bouton Update preparation:

Sub B_preparation_update()
Application.DisplayAlerts = False
For i = 1 To Sheets.Count
If Sheets(i).Name = "FX" Then GoTo FeuilleFXPresente
Next
MsgBox "FX does not exist, please follow the procedure step by step for updating", _
vbCritical + vbOKOnly, "WARNING !"
Exit Sub

FeuilleFXPresente:
Application.DisplayAlerts = False
Sheets("FX").Copy Before:=Sheets("Markets_PI")
ActiveSheet.Name = "FX_N-1"
Sheets("FX").Delete
Sheets("GMRB_Raw_Data").Select
ActiveWorkbook.Worksheets("GMRB_Raw_Data").Cells.ClearContents
Sheets("GMRB_Raw_Data").Activate
Sheets("GMRB_Raw_Data").Range("A1").Select
End Sub

Le debugueur s'arrete sur:

ActiveWorkbook.Worksheets("GMRB_Raw_Data").Cells.ClearContents


Le code du bouton Update

Sub B_update()
Application.ScreenUpdating = False
Sheets("GMRB_Raw_Data").Copy Before:=Sheets("Markets_PI")
On Error Resume Next
If Err.Number <> 0 Then
Application.DisplayAlerts = 0
ActiveSheet.Delete
Application.DisplayAlerts = 1
Sheets("FX").Activate
Exit Sub
End If
On Error GoTo 0
S_FX_traitement
Sheets("Current_market").Range("B6") = Sheets("GMRB_Raw_Data").Range("A2")
Dim pt As PivotTable
For Each pt In Sheets("Current_market").PivotTables
pt.RefreshTable
Next pt
Sheets("Current_market").Activate
Sheets("Current_market").Range("A1").Select
End Sub

Le debugueur s'arrete sur une ligne de la macro S_FX_traitement dont le code est:

Code:
Sub S_FX_traitement()
Dim dl As Integer
Dim x As Integer
  With Application: .ScreenUpdating = 0: .Calculation = -4135: .EnableEvents = 0: End With
  With ActiveSheet
    .Columns("I").Replace "-", "--->", LookAt:=xlPart
    dl = .Range("I65536").End(xlUp).Row
    For x = dl To 1 Step -1
      If .Cells(x, 9).Value = "" Or .Cells(x, 13) < 0 Then .Rows(x).Delete
    Next x
  End With
  With Application: .ScreenUpdating = 1: .Calculation = -4105: .EnableEvents = 1: End With
  ActiveSheet.Name = "FX"
  ActiveWorkbook.Names.Add Name:="basetcdauto", RefersToR1C1:= _
  "=OFFSET(FX!R1C1,0,0,COUNTA(FX!C1),14)"
End Sub

Le debugueur s'arrete sur:

Code:
If .Cells(x, 9).Value = "" Or .Cells(x, 13) < 0 Then .Rows(x).Delete


Voila.....et j'ai pas teste le bouton qui lance lance l'interface d'impression.......


Voila.....et c'est la que fatigue ou ps je commence a etre vraiment perdu...


Donc merci pour le soutien😀
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
13
Affichages
2 K
Retour