Bonjour,
Vous semblez avoir un bon niveau en VBA c'est pourquoi je vais simplement vous expliquer le problème. Si vous voulez je pourrais vous renvoyer votre code mais je pense que vous pouvez le corriger tout seul.
C'est normal que la ligne s'insère en-dessous :
Vous utilisez ListRows.Add, et vous mettez vos valeurs dans cette nouvelle ligne. Pour remplir la 1e ligne, deja existante mais vide, il faut faire un petit test :
If ListRows.Count < 2 Then : on remplit la ligne actuelle
Else : on ajoute une ligne (ListRows.Add) et on reprend votre code.
Pour gérer ces deux cas on pourrait créer une petite variable Range qui va s'appeler "maLigne" et qui selon le cas, va prendre la valeur de la première ligne du tableau, ou de la ligne insérée.
Ensuite pour la formule, vérifiez bien que la formule est activée pour toute la colonne. Dans le fichier que vous avez joint ce n'étais pas le cas. En la re-validant, elle s'est étendue sur la 2e ligne. Et l'ajout d'une nouvelle ligne étend bien la formule.
Alternativement vous pouvez forcer la copie de la formule sur tout la colonne avec Range.FillDown method (Excel) | Microsoft Learn.