Supression de ligne sur évèmenent _change

sia72 Messages postés 16 Statut Membre -  
Uryon Messages postés 77 Statut Membre -
Bonjour,

Je rencontre actuellement un soucis au niveau d'une procédure située dans l'évènement _change d'une feuille Excel.
Je souhaiterai par ce code que si l'utilisateur supprime une donnée située dans la colonne A (au minimum a la ligne 11), tout la ligne où se situe la donnée soit également supprimée.
Voici le code que j'ai actuellement réalisé :

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Column = "1" And Target.Row >= "11" And Target.Value = "" Then

ActiveCell.EntireRow.Clear
End If
End Sub

Cela me met une erreur de type 13: Incompatibilité de type

Or lorsque je choisis d'arrèter le script le reset de la ligne a bien été effectué.
Quelqu'un pourrait il m'éclairé sur un moyen pour ne plus avoir cette erreur svp?

Merci !

Cordialement

4 réponses

  1. Uryon Messages postés 77 Statut Membre
     
    Une incompatibilité de type en général c'est un problème de guillemets, tu as essayé d'enlever les guillements autour du 1 et du 11 ? (Et peut être que tu devrais rajouter une condition isnull avec le = "" ?
    0
  2. sia72 Messages postés 16 Statut Membre
     
    Merci de ta réponse,

    Le problème est sur le test de la valeur et non autour du 1 et du 11.
    Suite a ton message j'ai testé de faire le test avec Target.Value is null, sauf que ce test est fonctionnel pour les objets et ne fonctionne apparament pas pour ce type de test... Une autre idée peut etre?

    Merci
    0
  3. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    normalement target.column et row se sont des nombres ex: 1 et 11 pas des chaines de caracteres. Mais ca passe quand meme avec "1" et "11".

    Votre probleme est lie a la recursivite provoquee par la raz des cellules de la ligne, pour empecher ceci il faut invalider les evenement excel au debut et les valider a la fin du module

    Private Sub Worksheet_Change(ByVal Target As Range)
        'invalide les evenements excel
        Application.EnableEvents = False
        If Target.Column = "1" And Target.Row >= "11" And Target.Value = "" Then
            'raz de la ligne ou la cellule a ete selectionnee
            Target.EntireRow.Clear
        End If
        'valide les evenements excel
        Application.EnableEvents = True
    End Sub
    


    Bonne suite
    0
  4. Uryon Messages postés 77 Statut Membre
     
    Honnêtement non, je vais chercher un peu si je trouve je reviens vers toi.
    0