VBA Erreur d'exécution 1004

T

Tommy

Guest
Salut a tous.

Je travail sur un projet qui néccessite VBA. Je veux proteger mon projet excel, mais quand j'applique la protection. VBA me retourne une erreur d'exécution 1004 :

Impossible de définir la propriété de NumberFormat de la classe Range.

et ca, des que le script s'execute.

Voici le script, il envoit tout simple a la rangé suivant l'heure quand une donné est entré.

Private Sub Worksheet_Change(ByVal Target As Range)
With Target
If .Count > 1 Then Exit Sub
If Not Intersect(Range('A6:A40'), .Cells) Is Nothing Then
Application.EnableEvents = False
If IsEmpty(.Value) Then
.Offset(0, 1).ClearContents
Else
With .Offset(0, 1)
.NumberFormat = 'dd Mmm yyyy hh:mm:ss'
.Value = Now
End With
End If
Application.EnableEvents = True
End If
End With
End Sub

Quand j'execute le débogage, il me souligne ceci :

NumberFormat = 'dd Mmm yyyy hh:mm:ss'

J'ai essayé en dévérouillant tout les cellules, appliquer la protection... sans succes... meme erreur.

Quelqu'un a une idée ??
 

PascalXLD

XLDnaute Barbatruc
Modérateur
Bonjour

tu ne peux pas appliquer un format de cellule si ta feuille est protégée ni entrer des données

De plus peux-tu me dire à quoi sert ton application.enableevents=false à part prendre des risques inutiles justement en cas de bug de macro

Bon courage
 

jeromegmc

XLDnaute Occasionnel
Salut,

En fait quand ta feuille est protégée, ta macro VBA n'est pas autorisée à écrire dans les cellules vérrouillées d'exel.

Voici un code, à coller dans le même module.
Ensuite au début de ta macro tu fais un 'call ActiveProtection', pour déverrouiller ta feuille, et à la fin de ta macro tu fais un 'call DesactiveProtection', pour réactiver la protection de la feuille et normalement cela devrait marcher.



Code:
Private Function mon_password()

mon_password = 'tonpassword'

End Function

Private Sub ActiveProtection()

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

End Sub

Private Sub DesactiveProtection()

ActiveSheet.Unprotect mon_password

End Sub

A+

Message édité par: jeromegmc, à: 14/10/2005 08:42
 

PascalXLD

XLDnaute Barbatruc
Modérateur
Bonjour

Voici un petit fil pour bien comprendre les riques d'utilisation de EnableEvents=False

Lien supprimé

Sinon tu peux protéger ta feuille par macro en utilisant la propriété userinterfaceonly. Comme cela ta feuille sera protégée pour tes users mais pas pour tes macros
 

_Thierry

XLDnaute Barbatruc
Re Bonjour à tous

Content pour toi, Jérome, au fait je t'ai 'attrapé' sur un fil en flagrant délit de déclaration de Variant pour un certain 'C' qui devrait être As Range simplement ;)

Et oui Pascal, depuis Lyon il n'y a pas grand monde qui m'a vu sur un Fil (à part José).

Je suis assez 'OverBooké' comme on dit outre-Manche et où l'on dit aussi pour ne pas faire chercher tout XLD sur le Net :

Thanks God Its's Friday

En tout cas c'est toujours un plaisir de te croiser Pascal.

Bon Week end à vous tous et toutes avec une pensée pour notre copain 'BarbaCascasdeur' qui se rétabli petit à petit.

[ol]@+Thierry[/ol]
 
T

Tommy

Guest
Merci a tous !

Mon probleme est deja régler. Je ne connaissais pas l'argument : UserInterfaceOnly, très utile !

J'vais en profité pour 'plugger' le dernier de mes problemes excel.

Lien supprimé

Merci encore a tous
 

Statistiques des forums

Discussions
300 761
Messages
1 987 019
Membres
209 681
dernier inscrit
Excelcrable