Re,
il n'y a aucune incohérence.
De la façon dont vous l'utilisez, vous envoyez à la fonction un objet VB Classeur2 qui n'a rien à voir avec un classeur et qui n'existe pas.
Il faut envoyer une chaine texte du nom complet du classeur et vous n'avez pas à modifier la fonction, vous l'utilisez telle quelle et elle passera sur tous les fichiers.
si votre classeur2 n'est pas enregistré et n'a pas encore d'extension, vous pouvez l'appeler comme ceci
MsgBox Classeur_Ouvert("Classeur2")
les guillemets font toute la différence
pour un fichier déja enregistré, n'oubliez pas l'extension
MsgBox Classeur_Ouvert("AZERTY1.xlsx")