The error is
teclat.vhdl:57:12: 'if' is expected instead of 'process'
The end if is where it is supposed to be. I don't understand why it doesn't compile like it's missing an end if always.
architecture v1 of teclat is
begin
process(Buttons, COL, ROW) begin
if (Buttons(1) = '1') then
COL <= "100";
ROW <= "100";
else if (Buttons(2) = '1') then
COL <= "010";
ROW <= "100";
else if (Buttons(3) = '1') then
COL <= "001";
ROW <= "100";
else
ROW <= "111";
end if;
end process;
end v1;