Je suis étonné quand même que les arrayformulas puissent bloquer le filtrage !! à condition bien sûr de toutes les mettre en ligne 5 ...
onOpen, oui, tu peux ajouter la fonction comme suit
function onOpen(){
removeEmpty()
}
tu avais un menu parsonnalisé, dans ce cas il faut le mettre dans la même fonction
onSelectionChange(e) : il a parfois un fonctionnement bizarre, pourquoi pas, mais il faut définir l'origine de l'action
onEdit(e) : idem il faut définir l'événement déclencheur, cela peut être la suppression d'une donnée entre Cn et Gn (ligne n) en testant que toutes les données entre C et G ont été effacée, par exemple
corrigé plus bas
mais a contrario cela peut ralentir l'introduction de nouvelles données
Conclusion, je laisserais juste le onOpen
nota : en mp, quelques commentaires ...