Views: Modify filter/argument when no results occur
You can call the view programatically and if no result are found call it again with new filter arguments.

For example:
    $view_id = 'your view id';
    $display_id = 'your display id';

$view = views_get_view($view_id);
$view-&gt;preview($display_id, $views_args);

if (!count($view-&gt;result)) {
  // No results, call view again with other filter value.
  $filter_name = 'your filter name';
  $filter_value = 'your filter value';

  $view = views_get_view($view_id);
  $view-&gt;preview($display_id, $views_args);
  $view-&gt;display['default']-&gt;display_options['filters'][$fiter_name]['value'] = $filter_value;
  $view-&gt;preview($display_id, $views_args);
}


You will have to adapt it using your current filter name and right values. You can rewrite this example to modify the view all the times you need. 

Put this code in a hook_menu callback returning the  view.