Grazie a tutti,
uso debug.print timevalue(now) per vedere a che ora passo nelle diverse fasi del codice.

Oregon dice correttamente che il msgbox verrebbe visualizzao sempre ed è proprio questo il punto, pippo dovrebbe essere true e lo è anche nella routine2 (ho messo un debug.print di verifica anche lì) ma poi nel timer è false. Forse però scrivendo qui ho capito dove sta l'arcano:

da routine2 con pippo = true si azione il timer2 e si torna in partenza diciamo in contemporanea, al rientro in partenza pippo viene messo false (vedi codice), il timer1 non ha ancora terminato i suoi 1100 secondi e quindi fa partire l'istruzione quando pippo è già stato rimesso false, forse conviene mettere il ritorno in partenza alla fine di timer1, cioè quando ha finito tutti i suoi cicli e viene disabilitato.
CIao
uomolupo