Bizarre cette erreur qui ne se produit pas chez moi...
Pour la formule,
cherche("h";a2) est utilisée parce qu'elle est insensible à la casse, que H soit en maj ou min la fonction CHERCHE() le trouve et renvoie sa position dans la cellule. Comme on ne veut que ce qu'il y a avant, on retranche 1. Pour en faire un nombre on multiplie le résultat par 1.
La seconde partie de la formule est encore plus simple, si on ne trouve pas H, on réécrit l'intégralité du contenu de la cellule en le multipliant par 1 pour en faire un nombre.
L'erreur affichée quand il y a 0 en colonne A c'est quoi SVP?