Can't enable gameobject after disable

I want to disable a tree when I press “e” near it and then have it be enabled again after 5 seconds. Currently it is disabling the tree when I press “e” but it won’t enable after 5 seconds. Here is the portion that won’t work:

function changeTreeState () {
    if (treeIsCut == false)
    {
        //Destroy (theTreeGameObject);
        theTreeGameObject.SetActive(false);
        treeIsCut = true;
        yield WaitForSeconds(5);
        theTreeGameObject.SetActive(true);
    }
    else
    {
        treeIsCut = false;
    }
}

And here is the entire script if you need it:

#pragma strict

var theTreeTransform : Transform;
var theTreeGameObject : GameObject;
var theTreePrefab : GameObject;
private var drawGUI = false;
private var treeIsCut = false;

function Update () {
	if (drawGUI == true && Input.GetKeyDown(KeyCode.E))
		{
			changeTreeState();
		}
}

function changeTreeState () {
	if (treeIsCut == false)
	{
		//Destroy (theTreeGameObject);
		theTreeGameObject.SetActive(false);
		treeIsCut = true;
		yield WaitForSeconds(5);
		theTreeGameObject.SetActive(true);
	}
	else
	{
		treeIsCut = false;
	}
}

function OnTriggerEnter (theCollider : Collider) {
	if (theCollider.tag == "Player")
	{
		drawGUI = true;
	}
}

function OnTriggerExit (theCollider : Collider) {
	if (theCollider.tag == "Player")
	{
		drawGUI = false;
	}
}

function OnGUI () {
	if (drawGUI == true)
	{
		GUI.Box(Rect(Screen.width*0.5-51, 200, 201, 22), "Press E to chop down");
	}
}

The problem is that you have a yield in an update function. You can’t do that!
You should use a boolean so that the function changeTreeState() is only called once!

changeState = false;

    function Update () {
        if (drawGUI == true && Input.GetKeyDown(KeyCode.E))
           {
             changeState = true;
           }
    if(changeState == true){
       changeTreeState();
        changeState = false;
    }
    }

Hope this helps!