Thanks for your help, before I saw your answer I actually did what you said. I started a new document and moved each part of the code over to the new sheet constantly checking for errors and in the meatime cleaning up my code with the use of indenting.
I ended up witht eh following which works a treat 
I'm sure the code could still be made more efficient, but i've changed the ranges to named ranges and indented the code so that its much easier to read and follow.
I did try having subroutines for each case with the "call macro" function but that didn'tseem to work so I am left with the above.
Thank you for all your help, yet another positive response from a great bunch of people.
Karl
Bookmarks