Good afternoon,
I am trying to automate some of our accounting department's manual accounting entries. My code involves a lot of loops with Nested If and.. then statements. I have been using the ActiveCell property, but I'm coming to a point where the program is freezing up when I run the whole thing (even with Application Screenupdating turned off). I know there is a better way to go about this than using ActiveCell properties, I just don't know where to begin with something like that. I'm pasting some sample code below. I have about 30 more of these formatting macros and each of them are running thousands of loop iterations. If someone could point me in the right direction as far as translating my messy code to a simple quicker version, I'd really appreciate it!

Sub EnterCredits()


Application.ScreenUpdating = False


Sheet5.Select
Range("AD2").Activate

    Do Until IsEmpty(ActiveCell.Offset(0, -2))
        If (ActiveCell.Offset(0, -20) = "801c." Or ActiveCell.Offset(0, -20) = "801g.") And ActiveCell.Offset(0, 3) <> "Client" And ActiveCell.Offset(0, -22) <> "Admin Fee" And ActiveCell.Offset(0, -22) <> "Administration Fee" Then
            ActiveCell.Value = ActiveCell.Offset(0, -25).Value - 13
            ActiveCell.Offset(1, 0).Activate
        ElseIf (ActiveCell.Offset(0, -20) = "905") Then
            ActiveCell.Value = ActiveCell.Offset(0, -25)
            ActiveCell.Offset(1, 0).Activate
        ElseIf (ActiveCell.Offset(0, -20) = "801h.") Then
            ActiveCell.Value = ActiveCell.Offset(0, -25)
            ActiveCell.Offset(1, 0).Activate
        ElseIf (ActiveCell.Offset(0, -20) = "810") Then
            ActiveCell.Value = ActiveCell.Offset(0, -25)
            ActiveCell.Offset(1, 0).Activate
        ElseIf (ActiveCell.Offset(0, -20) = "901") Then
            ActiveCell.Value = ActiveCell.Offset(0, -25)
            ActiveCell.Offset(1, 0).Activate
        ElseIf (ActiveCell.Offset(0, -20) = "804") Then
            ActiveCell.Value = ActiveCell.Offset(0, -25)
            ActiveCell.Offset(1, 0).Activate
        ElseIf (ActiveCell.Offset(0, -20) = "806") Then
            ActiveCell.Value = ActiveCell.Offset(0, -25)
            ActiveCell.Offset(1, 0).Activate
        ElseIf (ActiveCell.Offset(0, -20) = "807") Then
            ActiveCell.Value = ActiveCell.Offset(0, -25)
            ActiveCell.Offset(1, 0).Activate
        ElseIf (ActiveCell.Offset(0, -20) = "809") Then
            ActiveCell.Value = ActiveCell.Offset(0, -25)
            ActiveCell.Offset(1, 0).Activate
        ElseIf (ActiveCell.Offset(0, -20) = "808") Then
            ActiveCell.Value = ActiveCell.Offset(0, -25)
            ActiveCell.Offset(1, 0).Activate
        ElseIf (ActiveCell.Offset(0, -20) = "819") Then
            ActiveCell.Value = ActiveCell.Offset(0, -25)
            ActiveCell.Offset(1, 0).Activate
        ElseIf (ActiveCell.Offset(0, -20) = "805") Then
            ActiveCell.Value = ActiveCell.Offset(0, -25)
            ActiveCell.Offset(1, 0).Activate
        ElseIf (ActiveCell.Offset(0, -20) = "814" Or ActiveCell.Offset(0, -20) = "812") Then
            ActiveCell.Value = ActiveCell.Offset(0, -25)
            ActiveCell.Offset(1, 0).Activate
        ElseIf (ActiveCell.Offset(0, -20) = "811") Then
            ActiveCell.Value = ActiveCell.Offset(0, -25)
            ActiveCell.Offset(1, 0).Activate
        ElseIf (ActiveCell.Offset(0, -20) = "902") Then
            ActiveCell.Value = ActiveCell.Offset(0, -25)
            ActiveCell.Offset(1, 0).Activate
        ElseIf IsEmpty(ActiveCell) And ActiveCell.Offset(0, 3) <> "Client" And Not IsEmpty(ActiveCell.Offset(2, -2)) And IsEmpty(ActiveCell.Offset(3, 2)) Then
            ActiveCell = 13
            ActiveCell.Offset(1, 0).Activate
        Else
            ActiveCell.Offset(1, 0).Activate
        End If
    Loop


Application.ScreenUpdating = True


End Sub