Alejandro, sigues sin decir si la tabla B ya tienes registros o no. Esto es importante porque si no tiene se puede usar la instrucción INSERT( que lo que hace es añadir registros nuevos, pero si ya los tiene y lo que quieres es modificar valores en unos campos habría que usar la instrucción UPDATE, que actualiza determinados campos de determinados registros. Ejemplo de la instrucción UPDATE, si tengo la tabla

Donde puedes ver que ya hay registros y algunos campos pueden estar rellenos. Puedes ver que los registros con idcliente 2,3 y 6 no existen. Por otro lado tengo la tabla Clientes

En un formulario tengo un botón( pero ya te dije que no haría falta ya que se puede poner en cualquier evento)

Cuando pulso el botón

El código del botón es
Private Sub Comando19_Click()
DoCmd.RunSQL "UPDATE Clientes INNER JOIN Copia ON Clientes.IdCliente = Copia.IdCliente SET Copia.NombreCliente = [clientes].[nombrecliente]," _
& "Copia.NombreContacto = [clientes].[nombrecontacto], Copia.CargoContacto = [clientes].[cargocontacto]"
End Sub
Por el contrario, si lo que quieres es insertar valores nuevos en registros nuevos tendrías que usar la instrucción INSERT INTO