snb gave you a great link to using arrays in post #2
Comments:
1. You never use 'dependences' as an array, only as a loop index. You can just use
2. You put values into 'depcol'
depcol(1) = 5
depcol(2) = 7
depcol(3) = 30
depcol(4) = 42
depcol(5) = 43
depcol(6) = 44
depcol(7) = 53
depcol(8) = 46
depcol(9) = 40
But never use the array. You probably wanted something like
.Cells(17, 3).Copy Destination:=Sheets("DETAILS").Cells(x, depcol(x-2))
with the -2 because x starts are 3 from 'dependences' while 'depcol' starts at 1
3. Most start at column C, but 3 start at Col I - could be correct, just different
.Cells(28, 9).Copy Destination:=Sheets("DETAILS").Cells(x, 44)
.Cells(52, 9).Copy Destination:=Sheets("DETAILS").Cells(x, 53)
.Cells(19, 3).Copy Destination:=Sheets("DETAILS").Cells(x, 30)
.Cells(43, 9).Copy Destination:=Sheets("DETAILS").Cells(x, 40)
4. If it's not blank, then it must be blank so just an 'Else' would be sufficient
If cell.Value <> "" Then
Else
' ElseIf cell.Value = "" Then
End If
5. Since Rng only contains a single cell, the 'For Each' really doesn't add much
Set Rng = Sheets("DETAILS").Cells(x, 1)
For Each cell In Rng
6. Your new version only copies a single cell value, but the original copied 15 rows, single column. Copying a block of 15 is faster than copying a cell 15 times
7. This is just an example of using arrays. It's not the other approach to using arrays in which WS data is brought into a VBA array, manipulated, and then put back out:
Option Explicit
Sub test2()
Dim dependencies As Variant, depcol As Variant
Dim x As Long
dependencies = Array(17, 25, 50, 52, 28, 52, 19, 43, 36, 3, 3, 3, 3, 9, 9, 3, 9, 3) ' 0 to 17
depcol = Array(5, 7, 30, 42, 43, 44, 53, 46, 40) ' 0 to 8
For x = LBound(depcol) To UBound(depcol)
If Len(Sheets("DETAILS").Cells(depcol(x), 5).Value) > 0 Then
Sheets("Sheet1").Cells(dependencies(x), dependencies(x + 9)).Copy _
Sheets("DETAILS").Cells(x + 3, depcol(x))
Else
Sheets("DETAILS").Cells(x + 3, depcol(x)).ClearContents
End If
Next x
End Sub