Erreur VBA "erreur d'exécution '13' : incompatibilité de type"

Résolu
rolynx Messages postés 73 Date d'inscription   Statut Membre Dernière intervention   -  
rolynx Messages postés 73 Date d'inscription   Statut Membre Dernière intervention   -
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

pilas31 Messages postés 1825 Date d'inscription   Statut Contributeur Dernière intervention   645
 
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
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 275
 
Bonjour,

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

eric
2
rolynx Messages postés 73 Date d'inscription   Statut Membre Dernière intervention   9
 
Merci pilas31 et eriiic pour votre aide !
0