C'est normal
Car dans votre tableau
tab_exemple(0) = Sheets("BD").Cells(i, 2)
tab_exemple(1) = Sheets("BD").Cells(i, 1)
tab_exemple(2) = Sheets("BD").Cells(i, 2)
tab_exemple(3) = Sheets("BD").Cells(i, 7)
tab_exemple(4) = Sheets("BD").Cells(i, 9)
vous récuperez la valeur des cellules de la feuille bd avec l'index de la listbox (qui est i), donc si les deux listes ne sont pas triées de la même manière normal qu'il y ait un decalage...
Car l'index d'une valeur dans la listbox n'est pas égale à la l'index d'une valeur dans la feuille...
Si votre feuille est en tri décroissant, la première valeur d'une plage de chiffre allant de 1 à 10 c'est 10 par exemple.
Dans votre listbox, si vous faites un tri par ordre croissant, la première valeur c'est 1.
Quand vous allez cliquez sur votre listbox sur la valeur 1, la valeur de i sera égale à l'index de la listbox (0) + 2 c'est à dire 2.
Ce qui ramène à sheets("bd").cells(2,1) donc à la cellule A2...qui elle contient 10 et non pas 1 car elle est triée en valeur décroissante...