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

XL 2010 ERREUR 1004 DEFINIE PAR OBJET OU APPLICATION

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 !

laplayast

XLDnaute Occasionnel
Bonsoir,
Je veux protéger la feuille et suite à cela, j'ai l'erreur 1004. J'ai rajouté les lignes en rouge au code initial mais ce n'est pas suffisant. Merci de votre aide pour palier ce problème.

Activeworksheet.Unprotect
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not IsEmpty(celluleAvant) Then
If Not Intersect(Range(celluleAvant), [E5:LV30]) Is Nothing Then Calculate
End If
celluleAvant = Target.Address
If Not Application.Intersect(Target, Range("E5:LV30")) Is Nothing And Target.Count = 1 Then 'Adapter la plage
UserForm1.Show
End If
Calculate
Activeworksheet.Protect
End Sub
 
Bonjour laplayast,

Je ne pense pas que l'erreur vienne de la protection/déprotection

la ligne:
celluleAvant = Target.Address

devrait se trouver directement à la suite de:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

à+
Philippe
 
Bonjour à tous,
Salut Philippe et Meilleurs Vœux à toi et aux tiens.

Peux-tu essayer :

VB:
Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim CelluleAvant
CelluleAvant = Target.Address
'MsgBox CelluleAvant
If Not IsEmpty(CelluleAvant) Then
If Not Intersect(Range(CelluleAvant), [E5:LV30]) Is Nothing Then Calculate
End If
ActiveSheet.Unprotect
If Not Application.Intersect(Target, Range("E5:LV30")) Is Nothing And Target.Count = 1 Then 'Adapter la plage
MsgBox "Hello" 'UserForm1.Show
End If
Calculate
ActiveSheet.Protect
End Sub

A+ à tous

Edition : Salut Eric et Meilleurs Vœux itou
 
Dernière édition:
Bonjour à tous,

Peux-tu essayer avec ceci :

VB:
Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim CelluleAvant
    CelluleAvant = Target.Address
    If ActiveCell.Interior.ColorIndex <> xlNone Then Exit Sub
    If Not IsEmpty(CelluleAvant) Then
        If Not Intersect(Range(CelluleAvant), [D5:LV30]) Is Nothing Then Calculate
    End If
    ActiveSheet.Unprotect
    If Not Application.Intersect(Target, Range("D5:LV30")) Is Nothing And Target.Count = 1 Then    'Adapter la plage
        UserForm1.Show
    End If
    Calculate
    ActiveSheet.Protect
End Sub

A+ à tous
 
- 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

Discussions similaires

Réponses
9
Affichages
404
Réponses
4
Affichages
406
Réponses
14
Affichages
330
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…