The first thing I see that slows down the execution of the code is using the clipboard to copy data, for example, instead of
    Sheets("Sensitivity Analysis").Range("r12:w17").Copy
    Sheets("Sensitivity Analysis").Range("r4").PasteSpecial Paste:=xlPasteValues
you can write
    shSA.Range("R4").Resize(6, 6).Value = shSA.Range("R12:W17").Value
and instead of
    Sheets("Sensitivity Analysis").Range("s4").Copy
    Sheets("Rev + Cost").Range("F3").PasteSpecial Paste:=xlPasteValues
use
    shRC.Range("F3").Value = shSA.Range("S4").Value
You can also abandon Select, which also significantly slows down the operation.
Below is the code after improvement. I do not exclude that it can be further optimized, but this is a job not for me.
Sub SASC_1()
    Dim shSA As Worksheet
    Dim shRC As Worksheet
    Dim shA As Worksheet
    

    Application.ScreenUpdating = False
    
    Set shSA = ThisWorkbook.Sheets("Sensitivity Analysis")
    Set shRC = Sheets("Rev + Cost")
    Set shA = Sheets("Assumptions")
    
    'shSA.Range("R12:W17").Copy
    'shSA.Range("R4").PasteSpecial Paste:=xlPasteValues
    shSA.Range("R4").Resize(6, 6).Value = shSA.Range("R12:W17").Value

    'first line

    ' sale -5% and cost -5
    'shSA.Range("S4").Copy
    'shRC.Range("F3").PasteSpecial Paste:=xlPasteValues
    shRC.Range("F3").Value = shSA.Range("S4").Value

    shRC.Range("E26").Value = shSA.Range("R5").Value

    Call CopyUntilZero_1(shA)

    shSA.Range("S5").Value = shA.Range("D28").Value

    ' sale -2.5% and cost -5
    shRC.Range("F3").Value = shSA.Range("T4").Value
    
    Call CopyUntilZero_1(shA)

    shSA.Range("T5").Value = shA.Range("D28").Value

    ' sale same and cost -5
    shRC.Range("F3").Value = shSA.Range("U4").Value

    Call CopyUntilZero_1(shA)

    shSA.Range("U5").Value = shA.Range("D28").Value

    ' sale 2.5% and cost -5
    shRC.Range("F3").Value = shSA.Range("V4").Value

    Call CopyUntilZero_1(shA)

    shSA.Range("V5").Value = shA.Range("D28").Value


    ' sale 5% and cost -5
    shRC.Range("F3").Value = shSA.Range("W4")

    Call CopyUntilZero_1(shA)

    shSA.Range("W5").Value = shA.Range("D28")


    'second line

    ' sale -5% and cost -2.5
    shRC.Range("F3").Value = shSA.Range("S4").Value
    shRC.Range("E26").Value = shSA.Range("R6").Value

    Call CopyUntilZero_1(shA)

    shSA.Range("S6").Value = shA.Range("D28").Value

    ' sale -2.5% and cost -2.5
    shRC.Range("F3").Value = shSA.Range("T4").Value

    Call CopyUntilZero_1(shA)

    shSA.Range("T6").Value = shA.Range("D28").Value

    ' sale same and cost -2.5
    shRC.Range("F3").Value = shSA.Range("U4").Value

    Call CopyUntilZero_1(shA)

    shSA.Range("U6").Value = shA.Range("D28").Value
    
    ' sale 2.5% and cost -2.5
    shRC.Range("F3").Value = shSA.Range("V4").Value

    Call CopyUntilZero_1(shA)

    shSA.Range("V6").Value = shA.Range("D28").Value

    ' sale 5% and cost -2.5
    shRC.Range("F3").Value = shSA.Range("W4").Value

    Call CopyUntilZero_1(shA)

    shSA.Range("W6").Value = shA.Range("D28").Value


    'third line

    ' sale -5% and cost 0
    shRC.Range("F3").Value = shSA.Range("S4").Value
    shRC.Range("E26").Value = shSA.Range("R7").Value

    Call CopyUntilZero_1(shA)

    shSA.Range("S7").Value = shA.Range("D28").Value

    ' sale -2.5% and cost -2.5
    shRC.Range("F3").Value = shSA.Range("T4").Value

    Call CopyUntilZero_1(shA)

    shSA.Range("T7").Value = shA.Range("D28").Value

    ' sale same and cost same BASE POSITION
    shRC.Range("F3").Value = shSA.Range("U4").Value

    Call CopyUntilZero_1(shA)

    shSA.Range("U7").Value = shA.Range("D28").Value

    ' sale 2.5% and cost -2.5
    shRC.Range("F3").Value = shSA.Range("v4").Value

    Call CopyUntilZero_1(shA)

    shSA.Range("V7").Value = shA.Range("D28").Value

    ' sale 5% and cost -2.5
    shRC.Range("F3").Value = shSA.Range("W4").Value

    Call CopyUntilZero_1(shA)

    shSA.Range("W7").Value = shA.Range("D28").Value


    'fourth line

    ' sale -5% and cost -5
    shRC.Range("F3").Value = shSA.Range("S4").Value
    shRC.Range("E26").Value = shSA.Range("R8").Value

    Call CopyUntilZero_1(shA)

    shSA.Range("S8").Value = shA.Range("D28").Value

    ' sale -2.5% and cost -2.5
    shRC.Range("F3").Value = shSA.Range("T4").Value

    Call CopyUntilZero_1(shA)

    shSA.Range("T8").Value = shA.Range("D28").Value

    ' sale same and cost same
    shRC.Range("F3").Value = shSA.Range("U4").Value

    Call CopyUntilZero_1(shA)

    shSA.Range("U8").Value = shA.Range("D28").Value

    ' sale 2.5% and cost -2.5
    shRC.Range("F3").Value = shSA.Range("V4").Value

    Call CopyUntilZero_1(shA)

    shSA.Range("V8").Value = shA.Range("D28").Value

    ' sale 5% and cost -2.5
    shRC.Range("F3").Value = shSA.Range("W4").Value

    Call CopyUntilZero_1(shA)

    shSA.Range("w8").Value = shA.Range("D28").Value


    'fifth line

    ' sale -5% and cost -5
    shRC.Range("F3").Value = shSA.Range("S4").Value
    shRC.Range("E26").Value = shSA.Range("R9").Value


    Call CopyUntilZero_1(shA)

    shSA.Range("S9").Value = shA.Range("D28").Value

    ' sale -2.5% and cost -2.5
    shRC.Range("F3").Value = shSA.Range("T4").Value

    Call CopyUntilZero_1(shA)

    shSA.Range("T9").Value = shA.Range("D28").Value

    ' sale same and cost same
    shRC.Range("F3").Value = shSA.Range("U4").Value

    Call CopyUntilZero_1(shA)

    shSA.Range("u9").Value = shA.Range("D28").Value

    ' sale 2.5% and cost -2.5
    shRC.Range("F3").Value = shSA.Range("V4").Value

    Call CopyUntilZero_1(shA)

    shSA.Range("V9").Value = shA.Range("D28").Value

    ' sale 5% and cost -2.5
    shRC.Range("F3").Value = shSA.Range("W4").Value

    Call CopyUntilZero_1(shA)

    shSA.Range("W9").Value = shA.Range("D28").Value


    'end

    shRC.Range("F3").Value = shSA.Range("U4").Value
    shRC.Range("E26").Value = shSA.Range("R7").Value

    shSA.Select
    Application.ScreenUpdating = True

End Sub



Sub CopyUntilZero_1(wks As Worksheet)
    
    With wks
        .Range("D28").ClearContents

        Do While Abs(.Range("K32").Value) > 0.5
            .Range("D28").Value = .Range("K34").Value
        Loop

    End With

End Sub
Artik