Bonjour,
Quelques éléments pour analyser ton bout de code :
Cells(i, " B") => Pourquoi B précédé d'une espace ?
Si c'est pour indiquer la colonne B, pourquoi pas 2 plus simple et plus logique dans cette syntaxe.
Cells sans qualificateur d'objet réfère à la feuille active (de même que le Range de la ligne précédente).
Cells("Data") => Data n'étant pas un nom de plage, mais un nom de feuille, il y a apparemment confusion d'objets.
Si cela était une plage, Range était plus approprié.
Si feuille, Worksheets("Data") est la bonne expression.
.Range("D:D") => désigne une colonne entière. Mais il s'agit d'un élément du 2e membre d'une expression comparative, séparée du premier par l'opérateur <> : l'ensemble définit une condition qui doit renvoyer vrai ou faux selon que les 2 éléments comparés sont différents ou pas. Seulement, on compare la valeur d'une cellule à celle d'un colonne entière, ce qui n'est pas très approprié comme comparaison.
Pour les 3 lignes qui suivent la commande est correcte, mais aurait pu être écrite en une ligne (sans les Select qui ne font que fractionner en plusieurs étapes une action qui n'a pas à l'être).
Cordialement
Ferrand