Erreur: La méthode '_Default' de l'obget 'Range' a échoué

Résolu/Fermé
bassmart Messages postés 281 Date d'inscription jeudi 19 février 2015 Statut Membre Dernière intervention 19 décembre 2023 - 24 févr. 2015 à 21:24
bassmart Messages postés 281 Date d'inscription jeudi 19 février 2015 Statut Membre Dernière intervention 19 décembre 2023 - 25 févr. 2015 à 13:46
Bonjour,

J'ai une code qui fonctionnais très bien, jusqu'au moment que j'ai ajouter des lignes de code pour que les colonnes 3, 4 et 5 soit mis en majuscule.

Quand j'ajoute des valeurs tout est Ok, mais j'ai une erreur dès que je supprime une valeur dans l'une de ces colonnes. [erreur d'exécution '-2147417848(80010108)' La méthode '_Default' de l'obget 'Range' à échoué]. Il me pointe alors la dernière ligne Target = Ucase(Target).

Je ne sais pas comment écrire mon code pour éviter ce problème!

Private [/contents/446-fichier-sub Sub] Worksheet_Change(ByVal Target As Range)

ActiveSheet.Unprotect

If Target.Column = 4 Then
Target = UCase(Target)
End If
If Target.Column = 5 Then
Target = UCase(Target)
End If
If Target.Column = 3 Then
Target = UCase(Target)
End If

If Target.Cells.Count > 1 Then Exit Sub
If Target.Row < 5 Or Target.Column <> 5 Then Exit Sub
If Target.Value = "" Then Cells(Target.Row, 1).ClearContents
If Range("A5") <> "" Then
    DLig = Range("E5").End(xlDown).Row
    Set PL = Range("A5:A" & DLig)
    PL.Value = Range("a5").Value
   
End If

ActiveSheet.Protect

End Sub


Merci de votre aide!

1 réponse

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
25 févr. 2015 à 09:04
bonjour,

essayez comme ceci:
Private Sub Worksheet_Change(ByVal Target As Range)
    ActiveSheet.Unprotect
    If Target.Column >= 3 And Target.Column <= 5 Then
        'desactive les evenements excel: eviter appel recurcif a la suite du passage en majuscule
        Application.EnableEvents = False
        Target = UCase(Target)
    End If
    'active les evenements excel
    Application.EnableEvents = True

    If Target.Cells.Count > 1 Then Exit Sub
    If Target.Row < 5 Or Target.Column <> 5 Then Exit Sub
    If Target.Value = "" Then Cells(Target.Row, 1).ClearContents
    If Range("A5") <> "" Then
        DLig = Range("E5").End(xlDown).Row
        Set PL = Range("A5:A" & DLig)
        PL.Value = Range("a5").Value
    End If
    ActiveSheet.Protect
End Sub
1
bassmart Messages postés 281 Date d'inscription jeudi 19 février 2015 Statut Membre Dernière intervention 19 décembre 2023 1
25 févr. 2015 à 13:46
Merci beaucoup f894009!! Ça fonctionne très bien!!
0