C'est la valeur de la variable Ligne qui n'allait pas, vous cherchez dans l'onglet Facture et pas dans Bilan. Tester sur la colonne B car celle-ci est automatiquement remplie et pas la colonne Client en cas d'oubli, et tester en remontant et pas en descendant. Vous devriez tester la présence d'un nom de client avant de lancer l'archivage.
With Sheets("BILAN")
ligne = .Cells(.Rows.Count, "B").End(xlUp).Row + 1
End With
Sinon, vos formules RECHERCHEV sont en mode relatif / tarifs, à chaque nouvel item votre formule décale d'une ligne l'aire de référence et cela ne marche plus au bout d'un certain temps.
Le mieux est de travailler avec des tableaux structurés comme dans ma version. En ce qui concerne les tableaux décalés en ligne 10, c'est une habitude de travail. Cela me permet par exemple de mettre une formule sous-total au dessus du montant ttc et bien d'autres renseignements utiles.