Simplicial approximation to CW Complex In Hatcher's book, the following theorem is mentioned (Th 2C.5, page 182):

Every CW complex $X$ is homotopy equivalent to a simplicial complex, which can be chosen to be of the same dimension as $X$, finite if $X$ is finite, and countable if $X$ is countable.

I am looking for some hint to make this constructive & formal. I have a finite and countable CW-complex and I would like to build a simplicial complex that is homotopy equivalent. From previous result clearly this is possible, but I am struggling to find the right way to proceed. 
The object I am working with are extremely simple: CW-complex has only up to 2-cells. For computation purposes I would like to transform this into a simplicial complex. Thus I need to find a mapping from the CW-complex to the simplicial complex so that they are homotopy equivalent. 
The idea would be to use a barycentric subdivision (as also mentioned in Hatcher's book). While I can easily visualize in my mind how all this would work, I am struggling to make this formal. Is there a well known result that if a morphism from a CW-complex k-cell to k-simplex has particular properties then the two are homotopy equivalent? 
Or should I instead think about exact sequences (one for CW-complex the other for simplicial complex) and morphisms between the CW and the simplicial complex? Here is where barycentric subdivision would come in clearly, but again i can clearly see but struggle to make it formal.
Any suggestion/direction you can point me towards?
 A: For $2$-dimensional CW-complexes, as you say you are dealing with, everything is extremely simple.  First of all, the barycentric subdivision of any $1$-dimensional CW-complex is a simplicial complex.  Explicitly, this means that you split every edge of the CW-complex into two edges by adding a new vertex in the middle, and your CW-complex is then already a simplicial complex.
Then, we have to add the $2$-cells of our CW-complex.  Let us say the 1-skeleton of our CW-complex is $X^1$.  We want to attach a $2$-cell by some map $f:S^1\to X^1$.  This map $f$ is homotopic to some loop which is just given by a sequence of edges in $X^1$.  If the sequence has length $n$, we can visualize our attached $2$-cell as an $n$-gon, with its sides identified with certain edges in $X^1$.  To turn this into a simplicial complex, we just have to triangulate it.  This is easy: we just split our $n$-gon into $n$ triangles, by picking a point in the interior of the $n$-gon and connecting it to each vertex.  This unfortunately doesn't quite give a simplicial complex, since this could create edges which have the same two vertices (or triangles which have the same three vertices).  To fix this, we can just take one barycentric subdivision. (Or, we could get away with less: we can just add one new vertex in the middle of each new edge we added, and then split each of the triangles we had into three triangles using the two new vertices we've added to it.)
So, this gives a procedure to turn any $2$-dimensional CW-complex into a homotopy equivalent $2$-dimensional simplicial complex.  First, take the barycentric subdivision of the $1$-skeleton.  Then, add the $2$-cells one by one, by homotoping their attaching maps to be loops made of edges in the $1$-skeleton and then splitting up a polygon into triangles in a simple way.
(The same idea can be extended to higher dimensions, but attaching cells becomes much more complicated, since the simplicial approximations you may need to use for the attaching maps become much harder to classify than just paths along edges in a graph.)
