Macro VBA / formule pour ajouter des espaces fixes dans une cell [Résolu/Fermé]

Signaler
Messages postés
3
Date d'inscription
lundi 29 septembre 2014
Statut
Membre
Dernière intervention
30 septembre 2014
-
Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
-
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

Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 198
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.
Messages postés
3
Date d'inscription
lundi 29 septembre 2014
Statut
Membre
Dernière intervention
30 septembre 2014

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.
Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 198
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.
Messages postés
3
Date d'inscription
lundi 29 septembre 2014
Statut
Membre
Dernière intervention
30 septembre 2014

ça fonctionne parfaitement, merci beaucoup ça m'aide énormément.
Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 198
Content pour toi de t'avoir dépanné : je marque en résolu.