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

[Résolu/Fermé]
Signaler
Messages postés
270
Date d'inscription
jeudi 19 février 2015
Statut
Membre
Dernière intervention
12 avril 2021
-
Messages postés
270
Date d'inscription
jeudi 19 février 2015
Statut
Membre
Dernière intervention
12 avril 2021
-
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

Messages postés
15899
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
5 septembre 2021
1 529
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
270
Date d'inscription
jeudi 19 février 2015
Statut
Membre
Dernière intervention
12 avril 2021
1
Merci beaucoup f894009!! Ça fonctionne très bien!!