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

message d'erreur

  • Initiateur de la discussion Initiateur de la discussion Mario
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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.
 
Bonjour

il te faut déprotéger la feuille avant d'appliquer la formule en utilisant la méthode Unprotect. Tu réactives ensuite la protection avec la méthode Protect.

Cordialement, A+
 
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.
 
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
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…