Bonjour.
 
           Pour le premier message, attention à l'exemple du contenu des cellules et du résultat, car s'il n'y a pas de logique entre
           (je ne vois pas comment obtenir ce résultat vu le contenu des cellules ‼),
           il ne faut pas alors s'étonner de ne pas obtenir de réponse …
 
           Quant au code, l'icône prévue à cet effet doit être utilisée !
 
           Je n'ai aucun souci avec votre code, les zéros sont bien conservés si les cellules sont en format texte …
 
           Pour des cellules en format numérique :
Code :
 -     Worksheets("hhhhhh" ).Activate
 -     Range("E2:E50" ).FormulaR1C1 = "=RC[-4]&RC[-3]&TEXT(RC[-2],""000"" )&TEXT(RC[-1],""000"" )"
 
  | 
            Au passage, plus il y a de  Select  dans un code plus l'exécution est lente, à proscrire donc !
 
 
           Quant au second message, c'est normal vu la copie de formules au lieu de valeurs …          
           Est-il obligatoire d'avoir une formule, la valeur seule ne suffirait-elle pas ?
 
           Dans le cas d'une formule, il faut la recréer et non pas la copier.
           Sinon pour la valeur, voir l'aide de la méthode  PasteSpecial  appliquée à un objet Range …