Format personnalisé ou VBA

Bonjour à tous,

Je souhaite mettre en place dans une cellule un format personnalisé.

Sous la forme A 1234567 1 12

Le premier caractère est forcement une lettre de A à Z, et les autres caractères sont forcément que des chiffres de 0 à 9.

De plus les espaces entre les caractères doivent être respectés.

J'ai essayé plusieurs techniques (solutions du forum, format personnalisé, concaténation...) mais j'ai l'impression que la meilleure solution est de passer par une formule VBA et la je pèche un peu.

J'espère avoir été assez clair dans ma demande et que quelqu'un pourra m'éclairer.

A bientot.

Bonjour nocteg,

Pour le nombre seulement, sans la lettre qui est devant, tu peux utiliser ce format personnalisé : 0000000\ 0\ 00

il y a un espace après le signe « \ » ; ceci 2×

Pour la lettre qui est devant, ce n'est pas possible :

screen

C'est tiré du lien suivant (qui contient bien plus d'infos sur la création de formats personnalisés) :

https://support.office.com/fr-fr/article/cr%C3%A9er-ou-supprimer-un-format-de-nombre-personnalis%C3%A9-78f2a361-936b-4c03-8772-09fab54be7f4

dhany

Bonjour Dhany,

Quelle rapidité !

J'avais justement ce format personnalisé 0000000\ 0\ 00 pour les chiffres mais il me manquait la lettre.

Avec le lien que vous m'avez fourni, au moins les choses sont claires.

Je n'ai plus vraiment de connaissance en VBA, mais cela ne serait pas possible de le faire ?

nocteg

Bonjour

sans model dur pour te faire une macro

voila un test a toi de voir

Sub Test()
Mavar = "A1234567112"
M = Left(Mavar, 1)
V = Right(Mavar, Len(Mavar) - 1)
F = M & " " & Format(V, "0000000\ 0\ 00")
MsgBox F
End Sub

A+

Maurice

Bonjour,

Merci Maurice, je vais essayer de me servir de cela et essayer de trouver la solution.

A+

@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 :

21exo-nocteg.xlsm (14.49 Ko)

À l'ouverture du fichier, tu es sur une feuille entièrement vide ; en A1, saisis A1234567112A 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

Dhany,

C'est pile poil ce qu'il me faut !

Vraiment merci pour ta rapidité. Je vais ajouter les vérif et surtout comprendre le code VBA que tu m'as passé.

Par contre je comprend pas lorsque que je mets les caractères le formalisme ne s'applique pas automatiquement, il faut que je revienne sur la cellule pour que cela s'applique.

Merci encore !

Bonsoir nocteg,

J'aurais voulu t'répondre vers 10 h mais j'ai dû sortir faire des courses, puis ensuite, j'ai été débordé jusqu'à maint'nant !

Tu a écrit :

C'est pile poil ce qu'il me faut !

Génial !!!

Tu a écrit :

lorsque que je mets les caractères le formalisme ne s'applique pas automatiquement, il faut que je revienne sur la cellule pour que cela s'applique.

Je crois qu'ceci pourra t'aider (modifier une option avancée d'Excel, rubrique « Options d'édition ») :

screen

Bonjour dhany,

Pas de problème, il n'y avait aucune urgence .

Merci pour les solutions ! Du coup mon sujet est résolu

A la prochaine

Rechercher des sujets similaires à "format personnalise vba"