Like said in the comments, the fist thing to do is to separate the frequencies we want to affect from the rest. This can be done using LPF/HPF combo to form a BPF (I find it easier to set my cutoff frequencies using 2 filters rather than a BPF because with BPFs you have a center frequency and bandwidth (Q) which requires some calculations to figure out the cutoff frequencies).
But filtering will give you one track with just the selected frequency range and the original which also includes the selected range. So mixing the two would contain the selected frequency range as it originally was, as well as the pitch shifted bit.
In order to 'subtract' the selected frequency range from the original, we need to phase reverse the filtered version (before pitch shifting) and mix it at 0db with the original. This will give us the original minus the freq. range we took out that we can now mix with the filtered and pitch shifted version.
One last thing to pay attention to, especially if this is done programmatically is the timing. Since the signal path is split and then re-joined, we must delay the faster side so that it mixes with the slower (the one that takes longer to process) at exactly the right time.