It's not necessary to have the private key file to authorize a key on a server. In fact, you should never ask a friend for their private key, it's called private because it should be kept to yourself.
However, the ssh-copy-id command from OpenSSH might fail if there is no private key file with the same name available, because it tries to login with the specified key to check if it is already present on the remote server.
In recent versions you can override this behavior with the -f switch ("Forced mode").
From the man page:
-f
Forced mode: doesn't check if the keys are present on the
remote server. This means that it does not need the private key. Of
course, this can result in more than one copy of the key being installed
on the remote system.