'Version AtTheOne : Solution @Oneida avec contrôles et passage par un tableau VBA (si grand nombre de valeur à traiter
Sub TST()
Const LgnDéb = 2, ColSce = 9, ColCbl = 2 'commence en ligne 2, colonne source "I", colonne cible "B"
Dim Wsh As Worksheet 'feuille source et cible
Dim NbLgn As Long 'nombre de lignes à traiter
Dim Mois As Variant, An%, v$, r$ 'en texte : année, valeur source, valeur retournée; En variant mois
Dim Tablo, Tequi 'tableau des valeurs à traiter / traitées
Tequi = Array("", "11", "12", "13", "21", "22", "23", "31", "32", "33", "41", "42", "43") 'Chaînes équivalentes pour les mois (1er index=0)
Set Wsh = ThisWorkbook.Worksheets(1)
With Wsh
NbLgn = .Cells(.Rows.Count, ColSce).End(xlUp).Row - LgnDéb + 1 'nb lignes à traiter
Tablo = .Cells(LgnDéb, ColSce).Resize(NbLgn).Value2 'données source
For i = 1 To UBound(Tablo, 1) 'boucle sur toutes les lignes à traiter
v = Tablo(i, 1) 'valeur courante
r = "" 'valeur retournée si erreur
If Len(v) = 7 Then 'longueur de chaîne attendue
An = Left(v, 4): Mois = Right(v, 2) 'extraction Année, Mois
If IsNumeric(An) And IsNumeric(Mois) Then 'interprétables en nombre
Mois = CInt(Mois) 'convertion en entier
If Mois >= 1 And Mois <= 12 Then 'correspond à un mois
r = An & Tequi(Mois) 'valeur à retourner
End If
End If
End If
Tablo(i, 1) = r 'valeur retournée ("" si erreur)
Next
.Cells(LgnDéb, ColCbl).Resize(NbLgn).Value = Tablo 'affectation du résultat à la plage cible
End With
End Sub