The key to the way my code works is to notice that there are various patterns to the numbers of the cells that you want to copy data to and from.

Firstly the destination cells are the same for all clients.: J9, J10 and K5 to 10
Since the numbers 9 and 10 are successive numbers these can be accessed easily in a loop of 2
Similarly number 5 to 10 can be done in a loop of 6
For the source cells:
Firstly to save multiple accesses to another sheet I load all the contents of sheet contact details into an array “inarr”, the addressing of this in terms of columns and rows is the same as the sheet ( because I picked up the whole sheet)
For the J cells the column number are always the same (6 and 7) for all clients/FA/Cuscontacts
The row numbers go in pairs : 3, 3 for clients, 6,6 for FA 9,9 for cuscontacts.
I have put these values into the array “ra”
For the k Cells the columns are always the same for client/fs/cus being 1, 3 then successive numbers up to 7. The rows are just successive numbers depending on the client number with a one row gap between the clients, the FA and the Cuscontacts. i.e 4,5 7,8 10,11
So what I am trying to do with my code is for each destination cell calculate which column and row to copy the data from. I have used a variety of techniques in order to show you various ways of solving the problem .
Instead of using the commandbutton name I am using the listindex value which is an integer which tells which of the items in the list has been selected in this case a number between 0 and 5
The first technique is using a lookup table (ra) this is very powerful and is the way to deal with random cell addresses. I use this in the loop for the j Cell in a loop of 2:
For i = 1 To 2
       .Range("J" & 8 + i) = inarr(ra(kk + 1), 5 + i)
      Next i
The second technique is to use an algorithm depending on the client number and the loop index to calculate the columns and rows. ( Note that my first posting wasn’t quite correct because I hadn’t taken account of the gap between the clients the FA and cuscontact.
On the K cells you can see that after the K5 value of 1 the K6 value is 3 and then successive up to 7, so before the loop I set addi to 0 and then in the first loop I set it to 1 and add this into the loop count address for the column , so we get 1 , 3 ,4,5, ,6,7.
Similarly for the row we increment by 1 for each client and then I have calculated addr which is goes 0 , 0 ,1,1, 2,2 through the six clients.

the updated code which I hope really does work now is:

     Sub ClientContact(kk As Integer)     Dim addr As Integer
     Dim ra(1 To 6) As Integer
       ra(1) = 3
       ra(2) = 3
       ra(3) = 6
       ra(4) = 6
       ra(5) = 9
       ra(6) = 9
   If kk > -1 Then
     With Sheets("Contact Details")
      inarr = .Range(.Cells(1, 1), .Cells(11, 7))
     End With
     With Sheets("Summary")
      For i = 1 To 2
       .Range("J" & 8 + i) = inarr(ra(kk + 1), 5 + i)
      Next i
      addi = 0
      addr = ((kk - 0.01) / 2)
     
      For i = 1 To 6
     
       .Range("K" & 4 + i) = inarr(4 + kk + addr, addi + i)
       addi = 1
       
      Next i
     End With
   End If
     End Sub