Bonjour,
A essayer en préfixant avec le nom du UserForm :
USFMacro.CommandButton1_Click
Cette solution n'est pas très propre. Pourquoi ?
Les boutons d'un UserForm sont faits pour être utilisés à l'intérieur du UserForm. Lorsque tu crées un bouton dans un UF, la procédure "_Click" est par défaut "private" (privée), indiquant que seul le UF ne la voit. Pour la voir de l'extérieur du UF, tu dois déjà la modifier pour la passer en "public" (publique), ce que tu as fait apparemment.
L'autre solution est d'avoir une procédure publique dans un module à part et d'appeler cette même procédure, soit depuis le UF, soit depuis un autre endroit. Cela permet de laisser à l'intérieur du formulaire ce qui lui appartient, et d'ouvrir à l'extérieur uniquement ce qui est utilisable plus largement.
Ce sont des notions de portée (publique, privé).
Plus on a de code VBA public, plus cela peut entraîner des risques d'erreur de programmation ensuite. Il est mieux de privilégier au maximum les instructions privées.
cf PJ avec les 2 solutions :
> UF1 et module1
> UF2 et module2
Bouben