It looks like you’re clearing the queried posts by setting the posts var to an empty array.
$queryRecipesGrid = new WP_Query( $argsRecipesGrid ); // first you get the posts here
/** partie de code Richardson **/
$queryRecipesGrid = array(); // then you wipe them out by setting the same var to empty array.
Regarding the sorting, please refer to the example I provided you earlier, How to always display a specific post from the search result first
$my_acf_value = 1; // it might make sense to have this as post ID (as integer)
// Do your query
$queryRecipesGrid = new WP_Query( $argsRecipesGrid );
// Sort posts
$sorted_posts = array();
if ($queryRecipesGrid->posts) {
foreach ( $queryRecipesGrid->posts as $post ) {
if ( $post->ID == $my_acf_value ) { // change this to match your needs
array_unshift($sorted_posts, $post);
} else {
$sorted_posts[] = $post;
}
}
}
// Render the posts
if ($sorted_posts) {
foreach($sorted_posts as $sorted_post) {
// html stuff
}
}
NB: I used post ID for sorting in this example for the sake of simplicity. Please modify the code to match your real use case and data.