Macro protéger feuilles et autoris. largeur colonnes

Résolu/Fermé
AL_83 Messages postés 11 Date d'inscription jeudi 29 novembre 2012 Statut Membre Dernière intervention 29 janvier 2013 - 28 janv. 2013 à 10:22
AL_83 Messages postés 11 Date d'inscription jeudi 29 novembre 2012 Statut Membre Dernière intervention 29 janvier 2013 - 29 janv. 2013 à 15:20
Bonjour,

Je galère avec une macro.

En fait, je souhaite protéger mes feuilles (ça c'est bon) mais en autorisant les commentaires (ça aussi) et la largeur des colonnes (ça, ça ne va pas).

Voici la macro:

Sub Protege()
Dim f As Worksheet
For Each f In ThisWorkbook.Worksheets
f.Protect DrawingObjects:=False, Contents:=True, Scenarios:=False
Next
End Sub
Sub DeprotegeTout()
Application.ScreenUpdating = False
For Each Feuil In Application.Sheets
Feuil.Unprotect
Feuil.Range("A1") = "Feuille non protégée"
Next Feuil
Application.ScreenUpdating = True
End Sub

En fait, je ne sais pas où et comment rajouter la possibilité de modifier la largeur des colonnes.

Si quelqu'un peut m'aider....

Et aussi, comment faire pour que personne ne puisse ôter la protection? Je n'ai pas réussi à faire la même macro avec un mot de passe...

Suis vraiment nulle avec les macros...

Merci d'avance!!!!!!!!!!!
A voir également:

3 réponses

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
Modifié par pijaku le 28/01/2013 à 11:09
Bonjour,

L'enregistreur de macro nous donne, pour conserver le formatage des colonnes :
AllowFormattingColumns:=True

A ajouter donc à :
f.Protect DrawingObjects:=False, Contents:=True, Scenarios:=False
pour obtenir :
f.Protect DrawingObjects:=False, Contents:=True, Scenarios:=False, AllowFormattingColumns:=True

Pour le mot de passe, une simple Inputbox (boîte de dialogue utilisateur) suffira peut être???

Comme ceci (le mot de passe de l'exemple est, bien sur, toto59X) :
Dim MotDePasse As String 
MotDePasse = InputBox("Saisie du mot de passe", "PASSWORD") 
If MotDePasse <> "toto59X" Then Exit Sub 
'Le reste de ton code ici 

adaptée à ton code :
Sub DeprotegeTout()  
Dim MotDePasse As String 
MotDePasse = InputBox("Saisie du mot de passe", "PASSWORD") 
If MotDePasse <> "toto59X" Then  
   MsgBox "Le mot de passe est erroné" 
   Exit Sub 
End If 
Application.ScreenUpdating = False  
For Each Feuil In Application.Sheets  
Feuil.Unprotect  
Feuil.Range("A1") = "Feuille non protégée"  
Next Feuil  
Application.ScreenUpdating = True  
End Sub 


Cordialement,
Franck P
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
28 janv. 2013 à 11:11
Bonjour,

Attention: pas autoris commentaires
Sub protect()
  'Nom de feuille a adapter, AllowFormattingColumns-->format colonne
    Worksheets("Feuil1").protect Password:="toto", DrawingObjects:=True, Contents:=True, Scenarios:=True _
        , AllowFormattingColumns:=True
    Worksheets("Feuil1").EnableSelection = xlNoSelection
End Sub

Sub unprotect()
  Worksheets("Feuil1").unprotect Password:="toto"
End Sub


Et aussi, comment faire pour que personne ne puisse ôter la protection?dans votre cas, protect/unprotect par VBA, il faut proteger le code VBA

A+
0
AL_83 Messages postés 11 Date d'inscription jeudi 29 novembre 2012 Statut Membre Dernière intervention 29 janvier 2013
28 janv. 2013 à 17:05
Bonjour!!!

Je vais regarder tout cela demain matin....

Merci infiniment pour vos conseils!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Je vous redis demain ce qu'il en est!

Bonne soirée et encore merci!!!!!!!!!!!!!!!!
0
AL_83 Messages postés 11 Date d'inscription jeudi 29 novembre 2012 Statut Membre Dernière intervention 29 janvier 2013
29 janv. 2013 à 15:20
Bonjour!

C'est bon, j'ai réussi à m'en sortir grâce à votre aide!!!!!!

Merci infiniment!!!!!!!!!!!!!!!!!!!!!!!!!!

A+ et merci!!!!!!!!!!!!!!!!!!
0