macro avec bouton dans feuille verrouillée....mar

M

MarcO

Guest
Bonjour a tous,

Petit casse tete (enfin je crois... il y en a toujours pour me surprendre...)
J'ai affecté une macro à un bouton sur ma feuille. Ce bouton, quand on
clique dessus me vide certaines cellules de leur valeurs.
Sur cette feuille, je ne donne accés à la modification qu'a certaines
cellules, les memes que je fais vider. ( c'est un systeme de devisage
automatique....). Les autres cellules sont donc protégées et non modifiables.
Une fois ma feuille protégée et prete a etre utilisée, des que j'appuie sur
mon bouton pour vider mes cellules, Excel me demande le mot de passe pour
virer la protection. ( or les cellules que je demande a changer, sont
modifiables. (via 'permettre aux utilisateurs de modifier des plages').


Alors J'ai trouvé ca sur le net :


Exécuter une macro sur une feuille protégée

Vous venez de protéger une feuille de votre classeur avec un mot de passe
mais vous aimeriez pouvoir exécuter une macro sur cette feuille.
Malheureusement la macro refuse de fonctionner et vous retourne un message
d’erreur.

Pour pouvoir exécuter une macro sur une feuille protégée il faut ajouter une
instruction qui enlève la protection avant d’agir sur la feuille et une autre
qui rétablit la protection en fin de procédure.

Sub MacroavecfeuilleProtect()

ActiveSheet.Unprotect 'lemotdepasse'

'Placez ici vos instructions

ActiveSheet.Protect 'lemotdepasse', True, True, True

End Sub


Remplacez « lemotdepasse » par votre mot de passe qui protège la feuille.

Voici ma macro :

Sub Macro1()
'
' Macro1 Macro
' Macro enregistrée le 08/09/2005 par msimon
'

'
Range( _

'I46,I55,I56,I58,I59,I60,I62,I63,I64,I67:I70,C73,E73,K73,M73:Q73,I76,I77,C80,E80,I80,E82,I82,M82:Q82,M95:Q101' _
).Select
Range('M95').Activate
Selection.ClearContents
End Sub


J’ai essayé dans tous les sens , ca ne marche pas. ; faut dire que je ne comprends pas tres bien, je ne suis pas tres calé en Macros….

Quun peut m’aider ?

Comment puis-je rajouter l'autre dedans pour que cela marche?? Ou bien y a-t-il une methode plus simple ?

Merci de votre aide !
B)
 

myDearFriend!

XLDnaute Barbatruc
Bonjour MarcO,

Il est normalement tout à fait possible de verrouiller des cellules pour empêcher toute modification de l'utilisateur tout en permettant aux macros VBA d'agir sur ces dernières, grâce au paramètre UserInterfaceOnly = True de la méthode Protect.

Pour ce faire, il faut placer la procédure suivante dans l'objet ThisWorkbook :

Private Sub Workbook_Open()
        Sheets('Feuil1').Protect Password:='MotDePasse', UserInterfaceOnly:=True
End Sub
Cette procédure étant lancée à l'ouverture du Classeur, et si tu ne redéfinies pas la protection de la feuille autre part dans ton code, tu devrais normalement pouvoir te passer des UnProtect / Protect présents au début et à la fin de tes diverses procédures...

Cordialement,
 

Abel

XLDnaute Accro
Bonjour MarcO,

As tu essayé :

Code:
Sub MacroavecfeuilleProtect()

ActiveSheet.Unprotect 'lemotdepasse'

'Placez ici vos instructions

Range('I46,I55,I56,I58,I59,I60,I62,I63,I64,I67:I70,C73,E73, _
K73, M73:Q73,I76,I77,C80,E80,I80,E82,I82,M82:Q82,M95:Q101').Select
Selection.ClearContents

ActiveSheet.Protect 'lemotdepasse', True, True, True

End Sub
Abel.
 
M

MarcO

Guest
Merci!!

Mais je place ca ou la dedans?

Sub Macro1()
'
' Macro1 Macro
' Macro enregistrée le 08/09/2005 par msimon
'

'
Range( _

\\'I46,I55,I56,I58,I59,I60,I62,I63,I64,I67:I70,C73,E73,K73,M73:Q73,I76,I77,C80,E80,I80,E82,I82,M82:Q8
2,M95:Q101\\' _
).Select
Range('M95').Activate
Selection.ClearContents
End Sub

J'ai un peu de mal.....
 
M

MarcO

Guest
Salut salut,
et merci pour tout ces conseils...
J'ai tenté, j'ai trouvé 'ThisWorkbook' ; j'ai collé la fameuse instruction dedans

Private Sub Workbook_Open()
Sheets(\\'Feuil1\\').Protect Password:=\\'MotDePasse\\',
UserInterfaceOnly:=True
End Sub

Dans 'Module', j'ai mis ca ( cette macro marche quand la feuille n'est pas protect)

Sub Macro5()
'
' Macro5 Macro
' Macro enregistrée le 09/09/2005 par msimon
'

'
Range( _
'I46,I55,I56,I58,I59,I60,I62,I63,I64,I67:I70,C73,E73,K73,M73:Q73,I76,I77,E80,I80,E82,I82,M82:Q82,M95:Q101' _
).Select
Range('M95').Activate
Selection.ClearContents
End Sub

Et ca Beugue....

Ca me surligne ma ligne Selection.ClearContents en jaune....

Je doit pas etre loin....Mais ca marche pas....
Qqun a une lumineuse idée!?

Merci!!!
 

myDearFriend!

XLDnaute Barbatruc
Bonjour MarcO, Abel,

MarcO, tu trouveras ci-joint un exemple reproduisant exactement le cas.

A l'ouverture, la procédure Workbook_Open() qui protège la feuille avec UserInterfaceOnly = True (toutes les cellules sont verrouillées et le mot de passe est 'motdepasse')
Tu lances la macro, et celle-ci se déroule sans problème... (en tout cas chez moi !)

J'ai volontairement laissé ta procédure comme tu l'as écrite.
Cela dit, je t'informe qu'avec VBA, tu n'as pas besoin de procéder à des 'Select' pour manipuler les cellules (c'est même déconseillé). Tu pouvais mettre directement ça :
      Range('I46,I55,I56,I58,I59,I60,I62,I63,I64,I67:I70,C73,E73,K73,M73:Q73,' & _
                  'I76 , I77, E80, I80, E82, I82, M82: Q82 , M95: Q101 ').ClearContents
Cordialement, [file name=PourMarcO.zip size=8388]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/PourMarcO.zip[/file]
 

Pièces jointes

  • PourMarcO.zip
    8.2 KB · Affichages: 84

Nitrog

XLDnaute Junior
Re : macro avec bouton dans feuille verrouillée....mar

Désolé mais sa plante la macro ?
Je copie la cellule a1 de la feuille visible pour la copier formatée dans la feuille choix (cellule non veroulliée) et il bug
il ne le fait pas si la feuille n'est pas protégée et je ne comprend pas pourquoi

Merci pour votre aide !!

Nitrog
 

Discussions similaires

Statistiques des forums

Discussions
311 730
Messages
2 081 981
Membres
101 855
dernier inscrit
alexis345