Try to add one more parameter to your procedure
alter procedure sp_test
     @dt_start date
    ,@dt_end date
    ,@need_params_back bit = 0 -- new param
as
begin
    if @need_params_back = 0
    begin
        -- here is your code, for example:
        select 1 as value
        union all 
        select 2
    end
    else
    begin
        -- returning your params
        select 
             @dt_start  as dt_start
            ,@dt_end    as dt_end
    end 
end
And call it twice in excel:
first time (let's name it Q1) with need_params_back = 1, 
{call dbo.sp_test(?,?,1)}
you don't need here to map parameters to cells, let user input them.
second time (let's call it Q2) - as in your question.
{call dbo.sp_test(?,?,0)}
and map parameters to results of our first query (Q1).
But using such approach leads you to data refresh order, because you firstly need to update Q1 and only after you get results, update Q2 and all your other connections.
I hope, I've understood you correctly.