Ciao,
devi controllare 3 eventi: 
la selezione di un testo nella textarea, la modifica della textarea, e il click sul bottone sostituisci.
Se provi a scrivere un testo nel campo input, poi un testo nella  textarea, selezionare una parte di testo della textarea e premete il  bottone sostituisci.
ecco il codice:
	codice:
	<textarea id="miatextarea" rows="4" cols="50"></textarea>
<input id="mioinput">
<button id="miobottone">
  Sostituisci
</button>
<script>
  window.onload=function(){
    var inizio=null;
    var fine=null;
    document.getElementById("miatextarea").addEventListener("select",catturaTesto);
    document.getElementById("miatextarea").addEventListener("keypress",resettaVariabili);
    document.getElementById("miobottone").addEventListener("click",copiaTesto);
    
    function catturaTesto(){
      let miaTextArea=document.getElementById("miatextarea");
      inizio = miaTextArea.selectionStart;
      fine = miaTextArea.selectionEnd;
    }
    
    function resettaVariabili(){
      inizio=null;
      fine=null;
    }
    
    function copiaTesto(){
      if (!inizio){
        alert("non hai selezionato alcun testo");
        return;
      }
      let referenzaTextArea=document.getElementById("miatextarea");
      let miaTextArea=document.getElementById("miatextarea").value;
      let mioInput=document.getElementById("mioinput").value;
      let risultato=miaTextArea.substring(0,inizio)+ mioInput + miaTextArea.substring(fine);
      document.getElementById("miatextarea").value=risultato;
    }
  }
</script>