Macro protéger feuilles et autoris. largeur colonnes

Résolu
AL_83 Messages postés 11 Date d'inscription   Statut Membre Dernière intervention   -  
AL_83 Messages postés 11 Date d'inscription   Statut Membre Dernière intervention   -
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!!!!!!!!!!!

3 réponses

  1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    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
  2. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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
    1. AL_83 Messages postés 11 Date d'inscription   Statut Membre Dernière intervention  
       
      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
  3. AL_83 Messages postés 11 Date d'inscription   Statut Membre Dernière intervention  
     
    Bonjour!

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

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

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