Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

message d'erreur

M

Mario

Guest
Bonsoir à tous

Après avoir insérer une formule en VBA dans un tableau Excel, une erreur est survenue lorsque l'on met la protection de la feuille.

Il s'agit de 'Erreur d'éxécution '1004';'
'Erreur définie par l'application ou par l'objet'
'Fin ou Débogage'

Sans la protection de la feuille, le programme fonctionne correctement et la formule en VBA est appliquée.
voir la macro en pj

merci
Mario. [file name=VBA_20060117213353.zip size=654]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/VBA_20060117213353.zip[/file]
 

Pièces jointes

  • VBA_20060117213353.zip
    654 bytes · Affichages: 6

pascal21

XLDnaute Barbatruc
salut
pas besoin de regarder ton fichier
si tu protège les cellules concernées par ta formule vba la macro ne peut se faire
il faut déselectionner les cellules concernées
je ne sias pas si il existe une autre parade
certainement, les ténors exceliens vont t'en dire plus

Message édité par: pascal21, à: 17/01/2006 21:46
 

PascalXLD

XLDnaute Barbatruc
Modérateur
Bonjour

Tu peux proteger ta feuille par macro comme cela tu peux rajouter le paramètre userinterfaceonly qui permet de protéger la feuille pour les users et pas pour les macros. Cela evite donc de deproteger les feuilles

J'ai du mettre un lien aujourd'hui ou hier sur ce sujet.

Bonne soirée

Message édité par: Pascal76, à: 17/01/2006 21:55
 

lapix

XLDnaute Occasionnel
Bonsoir

Il existe du code pour proteger et deproteger la feuille pour faire des modif :

ActiveSheet.Unprotect

ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True

tchao
 

myDearFriend!

XLDnaute Barbatruc
Bonsoir Mario, pascal21,

Je pense que l'utilisation de l'argument UserInterfaceOnly en verrouillant ta feuille par code VBA au lancement du classeur devrait être une solution à ton problème. Pour cela, tu enlèves ta protection de feuille manuelle et tu mets le code ci-dessous dans le module de code de ThisWorkbook :
Private Sub Workbook_Open()
        Sheets('Feuil1').Protect Password:='motdepasse', UserInterfaceOnly:=True
End Sub
Par ailleurs, sauf erreur de ma part, tu peux également te passer de ton test InChange dans ta procédure en faisant comme ça :
La propriété EnableEvents de l'objet Application définie à False permet de désactiver la gestion des évènements (et donc les traitements par procédure évènementielle) jusqu'à ce que tu rétablisses cette propriété à True (Attention toutefois de ne pas oublier ce rétablissement sous peine de rendre ton application inactive... Attention également aux éventuels plantages qui pourraient intervenir avant ce rétablissement. ).

Cordialement,

EDITION :
Oups... Bonsoir Pascal76 et bonsoir lapix ! Que de monde, que de monde...

Message édité par: myDearFriend!, à: 17/01/2006 22:11
 

Discussions similaires

Réponses
7
Affichages
709
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…