Macro excel éxécution automatique d'une macro si changement de valeur

6xela Messages postés 5 Date d'inscription mercredi 4 novembre 2009 Statut Membre Dernière intervention 20 septembre 2013 - 4 nov. 2009 à 18:13
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 5 nov. 2009 à 11:26
Bonjour,

Je souhaite supprimer toute les lignes d'une feuille Excel donc la cellule de la colonne D est égale à 0.

J'ai donc fait ce code :

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("$D$1:$D$1000")) Is Nothing Then
For i = [B65536].End(xlUp).Row To 2 Step -1
If Range("D" & i).Value = 0 Then Rows(i).Delete
Next
End If
End Sub

Cependant il ne fonctionne pas car la cellule de la colonne D est le résultat d'une formule...

Quelqu'un aurait il la solution?

Cordialement.

1 réponse

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
5 nov. 2009 à 11:26
Salut
Non, rien à voir avec le fait que ce soit une valeur calculée, tu testes bien .Value et pas .Formula
Ton problème doit venir du fait que tu formattes mal tes données dans Range("D" & i) :
Si tu concatènes un chiffre à une chaine, ce chiffre pouvant être négatif, VBA ajoute systématiquement un espace devant le chiffre positif.
L'adresse de ta cellule est donc "D 1" au lieu de "D1" --> Adresse non reconnue.
Il faut utiliser CStr pour convertir explicitement ton chiffre en chaine :
Range("D" & CStr(i))

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
Rejoignez-nous