Erreur VBA "erreur d'exécution '13' : incompatibilité de type" [Résolu/Fermé]

Signaler
Messages postés
73
Date d'inscription
mardi 12 février 2008
Statut
Membre
Dernière intervention
10 avril 2014
-
Messages postés
73
Date d'inscription
mardi 12 février 2008
Statut
Membre
Dernière intervention
10 avril 2014
-
Bonjour à tous,

Je débute en VBA et aimerais un coup de pouce.
Je souhaite, sur un tableau excel, lorsque j'insère la lettre T dans la première colonne :
- toutes les cellules de cette ligne soient vidées jusqu'à la 9eme colonne
- Et qu'une ligne soit créée en dessous de celle où je me trouve.

J'arrive à réaliser ces fonctions mais dès que je les teste une erreur apparaît "erreur d'exécution '13' : incompatibilité de type"

Voici mon code ! J'ai remarqué que lorsque que j'enlève les 2 lignes ayant la fonction de rajouter la ligne je n'ai plus d'erreur. Mais je n'ai pas assez de connaissance pour trouver mon erreur malgré tous les renseignements que j'ai pu récupérer sur le net.

Private Sub Worksheet_Change(ByVal Target As Range)


If Target.Column = 1 And Target.Value = "T" Then
Cells(Target.Row, 2).ClearContents
Cells(Target.Row, 3).ClearContents
Cells(Target.Row, 4).ClearContents
Cells(Target.Row, 5).ClearContents
Cells(Target.Row, 6).ClearContents
Cells(Target.Row, 7).ClearContents
Cells(Target.Row, 8).ClearContents
Cells(Target.Row, 9).ClearContents
Cells(ActiveCell.Row, 1).EntireRow.Select
Selection.Insert Shift:=xlDown
End If
End Sub


Merci de votre aide !!!

3 réponses

Messages postés
1823
Date d'inscription
vendredi 5 septembre 2008
Statut
Contributeur
Dernière intervention
24 avril 2020
578
Bonjour,

L'erreur vient du fait que l'évènement se produit autant de fois qu'il y a des modifications (même à l'intérieur de la macro récursivement). Il faut donc neutraliser la gestion des événements à l'intérieur de la macro comme ceci :
Private Sub Worksheet_Change(ByVal Target As Range)
 If Target.Column = 1 And Target.Value = "T" Then
    Application.EnableEvents = False
    Cells(Target.Row, 2).ClearContents
    Cells(Target.Row, 3).ClearContents
    Cells(Target.Row, 4).ClearContents
    Cells(Target.Row, 5).ClearContents
    Cells(Target.Row, 6).ClearContents
    Cells(Target.Row, 7).ClearContents
    Cells(Target.Row, 8).ClearContents
    Cells(Target.Row, 9).ClearContents
    Cells(ActiveCell.Row, 1).EntireRow.Select
    Selection.Insert Shift:=xlDown
    Application.EnableEvents = True
 End If
End Sub
3
Merci

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

CCM 57107 internautes nous ont dit merci ce mois-ci

Messages postés
23418
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
7 août 2020
6 282
Bonjour,

en complément tu peux remplacer tous tes .clearcontents par un seul :
Cells(Target.Row, 2).resize(,8).ClearContents

eric
Messages postés
73
Date d'inscription
mardi 12 février 2008
Statut
Membre
Dernière intervention
10 avril 2014
9
Merci pilas31 et eriiic pour votre aide !