Format personalisé

E

El Tonio

Guest
Bonjour à tous,
Je ne suis pas un pro du format perso et j'ai un petit problème pour en créer un. J'aimerais écrire des formats pour des plaques d'imatriculations en mettant des espaces entre les chiffres et les lettres.
Exemple: si j'écris dans la cellule: 1545ABP59
Je veux qu'Excel affiche: 1545 ABP 59.

J'espère avoir été assez explicite.
Merci d'avance.
 

Humansoft

XLDnaute Occasionnel
Bonsoir André, Bonsoir el Tonio, Bonsoir le Forum

Voici un début de réponse qui fonctionne lors de l'entrée dans la cellule.
copie ce code dans la feuille du classeur.
Tape un code de 8 caractères.
Soit 123 dfe 74 ou 5263 ee 74

Puis quitte la cellule et reviens dessus. Le formatage se fera.

Je n'ai, par manque de temps, trouver mieux.

Bonne soirée.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim zv_Cmd As Variant

On Error Resume Next
zv_Cmd = ActiveCell.Value

If Len(zv_Cmd) = 8 Then
If Asc(Mid$(zv_Cmd, 4, 1)) > 57 Then
zv_Cmd = Left$(zv_Cmd, 3) & ' ' & Mid$(zv_Cmd, 4, 3) & ' ' & Right$(zv_Cmd, 2)
ElseIf Asc(Mid$(zv_Cmd, 4, 1)) Then
zv_Cmd = Left$(zv_Cmd, 4) & ' ' & Mid$(zv_Cmd, 5, 2) & ' ' & Right$(zv_Cmd, 2)
End If
ActiveCell.Value = zv_Cmd
End If

End Sub


Vincent
 

myDearFriend!

XLDnaute Barbatruc
Bonsoir El Tonio, André, Humansoft,

Tout comme Humansoft, je te propose une macro évènementielle VBA (peut-être un peu plus simple toutefois) :
Option Explicit
Option Compare
Text

Private Sub Worksheet_Change(ByVal Target As Range)
Dim F1 As Boolean
Dim
F2 As Boolean
      With Target
            F1 = .Value Like '####[A-Z][A-Z][A-Z]##'
            F2 = .Value Like '####[A-Z][A-Z]##'
            If F1 Or F2 Then
                  .Value = Left(.Value, 4) & ' ' & UCase(Mid(.Value, 5, IIf(F1, 3, 2))) & ' ' & Right(.Value, 2)
            End If
      End With
End Sub

Comment intégrer ce code VBA dans ton classeur ?

Ton classeur est ouvert, tu veux que cette macro fonctionne sur la feuille 1 :

      - Tu fais ALT + F11 pour te retrouver dans l'éditeur VBA.
      - Puis, CTRL + R pour afficher l'explorateur de projet (s'il n'est pas déjà affiché).
        L'explorateur de projet c'est la petite fenêtre au haut à gauche.
      - Tu double-cliques sur 'VBAProject(LeNomDeTonClasseur)' pour développer l'arborescence.
      - Tu double-cliques cette fois sur l'objet 'Feuil1(Feuil1)' et le module de code de la feuille 1 s'ouvre dans
        la fenêtre principale.
      - Et tu fais un copier-coller du code à cet endroit (toutes les lignes de 'Option Explicit ....' à 'End Sub' incluses).
      - Tu peux ensuite fermer l'éditeur VBA et sauvegarder ton classeur.

Cordialement,
 

andré

XLDnaute Barbatruc
Salut,

Le nuit n'a pas porté conseil !
Je n'ai pas trouvé de solution par le 'format'.

Mais je vois, avec plasir, que VBAistes sont passé par là !
Si cette solution convient, c'est parfait.
Faute de quoi je reste toujours à disposition pour fournir la formule à placer dans une cellule voisine.

Â+
 

Discussions similaires

Statistiques des forums

Discussions
312 400
Messages
2 088 090
Membres
103 715
dernier inscrit
j5m