Oui, CBxL.xlam devra être installé sur tous les postes, à moins d'équiper le classeur d'application des modules de service nécessaires (3, dont 1 standard et 2 de classe. Deux sont très gros, mais quand même bien moins que les bibliothèques Microsoft !).
Dans la Sub DéchargerAutresContrôles il faut TV(1, 3) = CBxASM.Text au lieu de CBxAISM.Text.
Vous pouvez provisoirement le mettre en bas, à une position au delà de la bordure inférieure de l'UserForm jusqu'à ce qu'on définisse exactement comment utiliser la feuille "base", en ajout et en modification. Car ce bouton permet d'y accéder pour retrouver l'EMAT8 et l'ASM correspondant, ou l'inverse.
Remettez des MsgBox si vous y tenez, mais à mon avis ils sont plus nuisibles qu'autre chose: les gens prennent simplement le réflexe de faire systématiquement Entrée après avoir cliqué sur le bouton, sans tenir compte en rien du message, et s'aperçoivent quand même après seulement qu'ils se sont trompés. D'ailleurs le fait que l'enregistrement reste affiché après un Ajout, avec possibilité de le Modifier prouve que l'enregistrement a été ajouté. Sinon pour tout effacer le mieux c'est d'exécuter CLsP.Nettoyer tout à la fin. Mais c'est ce que fait le bouton Effacer. On pourrait l'associer à la touche Echap.
Essayez en ajoutant: , "00000000" derrière les Add de ces ComboBox, dans la UserForm_Initialize s'il est normal qu'ils puissent trouver des nombres au lieu de textes, et mettez alors aussi ce format aux cellules. Si vous voulez qu'il l'écrive tel que tapé mettez ,"&" Mais ça ne suffira pas forcément pour que Excel ne le convertisse pas quand même en nombre quand c'est possible. Pour être sûr qu'il ne le fera pas il faut aussi mettre un format Texte aux cellules. Mais attention: les textes composés de chiffres ne sont pas classés selon la valeur qu'ils forment en les interprétant comme nombres. Normalement d'abord sur le 1er chiffre puis le second etc. "123" vient donc après "0124". Et même "1" après "09999999".
Il doit y avoir aussi une erreur dans la CBnArchiver_Click: ce serait WshArchive.[A1:H1] plutôt que WshArchive.[A2:H2]