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

Résolu
totocochcoch Messages postés 3 Statut Membre -  
gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   -
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. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    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
  2. totocochcoch Messages postés 3 Statut Membre
     
    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
  3. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    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
  4. totocochcoch Messages postés 3 Statut Membre
     
    ça fonctionne parfaitement, merci beaucoup ça m'aide énormément.
    0
    1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
       
      Content pour toi de t'avoir dépanné : je marque en résolu.
      0