Tu fais varier k et m, mais
date_ref_prod
et
date_ref_stock
ne sont pas intégrés dans la boucle et restent figés à la première valeur, donc cela tourne en permanence
Par ailleurs, il faut aussi indiquer une limite de fin si la date n'est pas trouvée.
var k = 1;
var date_ref_prod = prod.getRange(k,4).getValues();
var m = 1;
var date_ref_stock = stock.getRange(m,1).getValues();
while (date_ref_prod != date) {
k++;
}
prod.deleteRow(k);
while (date_ref_stock != date) {
m++;
}