pour le premier point, je ne sais te repondre.
Pour le second point, appelle une sub fcttestefeuille sur le onsheetactivate dans l'auto_open:
activeworkbook.onsheetactivate = "fcttestefeuille"
sub fcttestefeuille
selecte case activesheet.name
case "feuil2"
if not flag then
sheets("feuil1").activate
case else
end select
(dans ta fonction teste un flag qui te dis si ta feuuile 1 est remplie. Si ce flag est faux, réactive la feuille1)