@nocteg
Après avoir posté mon message de 16 h 32, j'ai dû sortir, et c'est seulement maintenant que j'ai vu ta réponse de 16 h 40 et les messages qui ont suivi ; désolé pour le retard, mais je te propose quand même d'essayer ce fichier Excel :
À l'ouverture du fichier, tu es sur une feuille entièrement vide ; en A1, saisis A1234567112 ➯ A 1234567 1 12
idem sur n'importe quelle ligne en dessous ; ça agit seulement si la longueur du texte est de 11 caractères ;
attention : il n'y a aucun contrôle que le texte est 1 lettre de A à Z suivie de 11 chiffres.
Alt F11 pour voir le code VBA, puis revenir sur Excel
Si besoin, tu peux demander une adaptation, comme par exemple :
1) ajouter cette vérif : le 1er caractère est A à Z et les caractères suivants sont des chiffres
2) faire le travail pour un autre emplacement de destination (colonne B ou autre)
Dans ton énoncé initial, tu as écrit :
Le premier caractère est forcément une lettre de A à Z, et les autres caractères sont forcément que des chiffres de 0 à 9.
C'est pour cela que j'ai pensé que la vérif n'est peut-être pas utile.
Si tu préfères une sub classique (non événementielle), je te propose celle-ci :
Option Explicit
Sub Essai()
Dim chn$: chn = "A1234567112"
chn = Left$(chn, 1) & " " & Mid$(chn, 2, 7) & " " _
& Mid$(chn, 9, 1) & " " & Right$(chn, 2)
MsgBox chn
End Sub
Au lieu de MsgBox chn
, tu peux mettre [A1] = chn
; si tu veux une fonction plutôt qu'une sub, c'est possible aussi, mais il faudra appeler cette fonction depuis la feuille en y mettant une formule (qui sera à tirer vers le bas).
Merci de me dire si ça te convient.
dhany