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.


merci
Mario.
 
M

mario

Guest
La feuille était déprotégée avant de mettre le VBA, ce n'est que lorsque l'on met la protection que l'erreur survient.
Je ne connaîs pas le VBA pour Unprotect et Protect, c'est grace à ce forum que j'ai obtenu une macro en VBA dont je remercie encore.

Mario.
 
M

Mario

Guest
bonsoir,

en pj la macro

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

Pièces jointes

  • VBA_20060117174352.zip
    654 bytes · Affichages: 10

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
Bonjour

voila ton code modifié
change la valeur de pas_prot par ton mot de passe

A+
Code:
Option Explicit
 
Dim InChange As Boolean

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
  Dim Pas_Prot As String
  Pas_Prot = 'toto'
  '
  ' Si cette procédure n'est pas en train de s'exécuter
  If Not InChange Then
    '
    ' on place un 'drapeau' pour signifier qu'elle est en cours
    ' d'exécution
    InChange = True
    '
    ' Si la modification concerne la colonne  10 ( col J )
    If Not Intersect(Target, Columns(10)) Is Nothing Then
      ActiveSheet.Unprotect (Pas_Prot)
      '
      ' alors si une date a été saisie
      If IsDate(Target) Then
        '
        ' on inscrit 5 une cellule à droite de Target ( Col C)
        Target.Offset(0, -7) = 5
        ' on inscrit  'soldé' deux cellules à droite de Target (Col L)
        Target.Offset(0, 2) = 'soldé'
     '
     ' si la saisie n'est pas une date ...'
       Else
       '
       ' message à l'utilisateur = effacement saisie + re-sélection
       MsgBox 'la saisie ne correspond pas à une date...', vbOKOnly + vbCritical
       Target = ''
       Target.Select
     End If
     ActiveSheet.Protect Password:=Pas_Prot, DrawingObjects:=True, Contents:=True, Scenarios:=True
   End If
   '
   ' on indique que l'on sort de la procédure
   InChange = False
 End If
End Sub
 

PascalXLD

XLDnaute Barbatruc
Modérateur
Bonjour

Une autre possiblilité est peut-être de protéger la feuille avec la propriété userinterfaceonly ce qui permet de protéger la feuille mais la macro peut ecrire tout de même (mais je n'ai pas testé :unsure: )

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

Bon courage
 

Discussions similaires

Réponses
2
Affichages
210

Membres actuellement en ligne

Statistiques des forums

Discussions
312 508
Messages
2 089 143
Membres
104 049
dernier inscrit
Xavier.L