"bret" does not match "Bretagne". "bret" would occur before "Bretagne". So with your range_lookup argument being TRUE or omitted, assuming your list is sorted as it should be, I would expect VLOOKUP to return "the next largest value that is less than 'bret'", probably the preceding entry.
One way around the issue of doing partial matches in this situation would be to use FALSE for the range_lookup argument, AND use a wildcard with your Lookup_value. e.g:
=VLOOKUP("bret*",A:B,2,FALSE)
^
Please note that my separator is the comma -- may need to change that to semicolons for your locale.