Perhaps you might actually post the code showing what you are trying to do. I created a short test to show what would happen if no rows are returned from the query used to populate the collection. you can see that it is a different error. I don't think anyone will be able to help you until they know what you are trying to do.

Code:
SQL> declare
   type type1 is table of varchar2(128)
      index by pls_integer;

   tab1 type1;
begin
   select table_name
     bulk collect
     into tab1
     from dba_tables
    where 1=0;

   dbms_output.put_line(tab1(1));

   for i IN tab1.first..tab1.last
   loop
      dbms_output.put_line(tab1(i));
   end loop;
end;
/
  2    3    4    5    6    7    8    9   10   11   12   13   14   15   16   17   18   19   20  declare
*
ERROR at line 1:
ORA-01403: no data found
ORA-06512: at line 13