Le problème ne vient pas de la logique VBA, c'est qu'il faut lui expliquer correctement !
$W2 pour VBA ne correspond à rien, si tu veux lui indiquer la valeur contenue dans cette cellule, ce serait plutôt Range("W3").Value ou Cells(3, 23).Value. Ensuite pour appliquer le calcul à toute la colonne, il faut utiliser une boucle, par exemple :
Sub CommandButton ()
Dim Lig as Long
For Lig = 2 To Range("W" & Rows.Count).End(xlUp).Row
Range("X" & Lig) = Range("W" & Lig) / TextBox.value
Next Lig
End Sub
La feuille concernée n'étant pas précisée, il s'agit par défaut de la feuille active au moment de l'exécution du code.