Shortcode working in page.php but not in category.php in wordpress

I finally found the problem, in fact when you add pagination to visual composer post-grid shortcode, it will use ajax to load the things. But to communicate to the ajax php script it uses the post id.
The problem is that the shortcode will have no post id if you create it live, or another post id if you use an external post as a model.

Then to make it works, I first create a page with the short code I want, then in my other page I get it contents like that :

$post = get_posts(array(    'name' => 'my-page-slug','post_type' => 'page'))[0];
print do_shortcode($post->post_content);

Notice the $post that is a global variable used by visual composer and that now have the correct post ID.