Macro excel éxécution automatique d'une macro si changement de valeur
6xela
Messages postés5Date d'inscriptionmercredi 4 novembre 2009StatutMembreDernière intervention20 septembre 2013
-
4 nov. 2009 à 18:13
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 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.
A voir également:
Macro excel éxécution automatique d'une macro si changement de valeur
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 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)