Macro VBA / formule pour ajouter des espaces fixes dans une cell

Résolu
Bonjour à tous,

j'ai pas mal regardé les forums mais je ne trouve pas exactement ce que je recherche, peut être que l'un d'entre vous pouvez peut-être m'aider :

j'ai une chaine de caractère dans une cellule (chiffres + lettres) et je souhaite pouvoir visualiser des espaces à des endroits bien précis sans avoir à taper les espaces.

mes cellules contiennent uniquement 16 caractères (des chiffres + lettres)
ex : je saisis 1CV5ALPVD5V37410 et je souhaite que dans mon fichier les cellules apparaissent toujours découpées comme suit : 1CV5 AL P VD 5 V3 74 10 ce découpage ne change pas --> 3 c" "2 c" "1 c" "2 c" "1 c" "2 c" "2 c" "2 c

si je n'avais que des chiffres, je pourrais faire un format personnalisé sans aucun problème, mais le fait qu'il y ait des chiffres et/ou des lettres, ce n'est pas possible...

Merci par avance pour une quelconque aide de votre part.

4 réponses

  1. Contributeur
    Bonjour,

    Avec cette fonction sur une autre colonne tu obtiens ta présentation pour ton code en A1 :

    =STXT(A1;1;4)&" "&STXT(A1;5;2)&" "&STXT(A1;7;1)&" "&STXT(A1;8;2)&" "&STXT(A1;10;1)&" "&STXT(A1;11;2)&" "&STXT(A1;13;2)&" "&STXT(A1;15;2)

    Pour le faire sur la même cellule, il faut passer par une macro, me semble-t-il.
    0
    1. Bonjour,

      Wahou quelle rapidité ! merci beaucoup Gbinforme pour votre aide mais je recherche la solution pour le faire dans la même cellule à l'aide d'une macro si c'est possible.

      Merci pour votre aide.
      0
      1. Contributeur
        Bonjour,

        dans la même cellule à l'aide d'une macro

        Voici la macro à copier dans la feuille concernée :

        Private Sub Worksheet_Change(ByVal sel As Range)
        If Not Intersect(sel, Range("A:A")) Is Nothing Then
            Dim frm() As Variant, idx As Integer, pos As Integer, man As String
            frm = Array(4, 2, 1, 2, 1, 2, 2, 2)
            If Len(sel.Value) = 16 Then
                Application.EnableEvents = False
                For idx = 0 To UBound(frm)
                    man = man & Mid(sel.Value, pos + 1, frm(idx)) & " "
                    pos = pos + frm(idx)
                Next idx
                sel.Value = Left(man, Len(man) - 1)
                Application.EnableEvents = True
            End If
        End If
        End Sub
        

        Tu remplaces "A:A" par la colonne où tu saisi ton code.
        Il faut que les 16 caractères soient saisis et si la mise en forme à été effectuée il n'y a pas de formatage en correction.
        0
        1. ça fonctionne parfaitement, merci beaucoup ça m'aide énormément.
          0
          1. Contributeur
            Content pour toi de t'avoir dépanné : je marque en résolu.
            0

        Discussions similaires

        exo pix

        2 réponses