Is it possible to call Timer ISR when we want it to execute.?
You can accomplish what you want in two ways. The second way should be considered "best practice".

First way: create a function to be called by your ISR and call that same function in other parts of your code. Depending on how __ISR() is defined, Timer1Handler() could be called directly in main(), but I'm not 100% sure about it.

void myFunction()
{
  // ... do what you want as Timer1Handler ...
}

void __ISR(_TIMER_1_VECTOR, ipl3) Timer1Handler()
{
  myFunction();
}

int main()
{
  // ... main application calling myFunction() ...
}


Second way: you have said "if a button is pressed, the ISR should be called". Then what you should do here is create a different ISR for an external interrupt regarding that button. This could call that same function as the Timer ISR.

void myFunction()
{
  // ... do what you want ...
}

void __ISR(_TIMER_1_VECTOR, ipl3) Timer1Handler()
{
  myFunction();
}

void __ISR(_EXTERNAL_0_VECTOR, ipl3) External0Handler()
{
  myFunction();
}

int main()
{
  // ... do what you want ...
}


Final thoughts: as a general rule, interrupts handlers shouldn't do much "work". You want them to have as short execution as possible. In my projects, ISR normally just set some logical volatile variables checked in other code parts or alter some GPIOs. Make sure to keep your handlers simple.