#' Utilitaires transversaux `%||%` <- function(a, b) if (is.null(a)) b else a safe_numeric <- function(x) { suppressWarnings(as.numeric(x)) } validate_numeric <- function(x, name = 'values') { if (is.null(x)) stop(sprintf("Champ '%s' manquant", name)) if (!is.numeric(x)) stop(sprintf("Champ '%s' doit être numérique", name)) invisible(TRUE) }