Je détaille :
1) i et DernLigne sont liés, i étant un compteur de boucle qui aura à prendre la valeur de DernLigne, borne maximale de la boucle.
Si DernLigne est Long, i doit également être Long ! Il est incohérent que ces deux variables liées aient un type de donnée différent qui génèrera une erreur lorsque la valeur 32768 sera atteinte.
2) Avant la boucle DernLigne doit être initialisée. Sans cela la boucle (de 2 à 0) ne démarrera pas !
3) La boucle et ton propos indiquent que si en colonne E il y a "OUI", tu ne veux pas exécuter l'action à accomplir dans le cas contraire. Il n'y a donc rien à "sauter". L'idée même en est incohérente ! Il n'y a seulement lieu de n'exécuter que sous condition, et donc d'inverser la condition, ce qui sera plus rationnel :
If Sheets("CT").Cells(i, 5).Value <> "OUI" Then
et ainsi, si la valeur est "OUI", on ne fait rien et on passe à la ligne suivante !