Aligner verticalement cellules identiques

Bonjour,

je viens vers vous car je ne m'y connais absolument pas en VBA, mais j'ai besoin d'organiser un fichier Excel, je vous explique :

Je reçois des données en base decimal, qui correspondent a une valeur de caractère ASCII, en continu toutes les 50ms, qui s'affiche de cette façon :

..................donnée1 | données2 | données3 | données4 | données5 | données6.................

(+50ms) donnée1 | données2 | données3 | données4 | données5 | données6.................

(+50ms) donnée1 | données2 | données3 | données4 | données5 | données6.................

Le "|" est un séparateur des données, il correspond a 124 en décimal, ce sont ces séparateurs que je souhaite aligner verticalement

Chaque données et séparateur correspondent a une cellule .

Parfois, si la valeur varie vers un nombre à deux chiffres, cela donne :

donnée1 | données2 | données3 | données4 | données5 | données6.................

donnée1 | données2 données2 | données3 | données4 | données5 | données6.................

donnée1 | données2 | données3 | données4 | données5 | données6.................

et je souhaiterais aligner les séparateurs de cette facon (creer des cellules vides pour aligner eventuellement) :

donnée1 | .................... données2 | données3 | données4 | données5 | données6.................

donnée1 | données2 données2 | données3 | données4 | données5 | données6.................

donnée1 | .....................données2 | données3 | données4 | données5 | données6.................

Je vous joint un exemple de ce fichier excel pour que vous compreniez mieux.

J'avoue que je suis un peu perdu... merci de m'éclairer.

bonjour,

une solution via une macro

Sub aargh()
    Dim t()
    With Sheets("feuil1")
        dl = .Cells(.Rows.Count, 1).End(xlUp).Row '
        dc = .Cells(4, .Columns.Count).End(xlToLeft).Column
        a = Range(.Range("B4"), .Cells(dl, dc))
        Range(.Range("B4"), .Cells(dl, dc)).Delete
        ReDim t(dl, 16)
        For i = LBound(a, 1) To UBound(a, 1)
            k = 0
            v = ""
            For j = LBound(a, 2) To UBound(a, 2)
                If a(i, j) = 124 Then
                    k = k + 1
                    t(i, k) = v
                    v = ""
                Else
                    v = v & Chr(a(i, j))
                End If
            Next j
        Next i
        Sheets("feuil1").Cells(3, 2).Resize(dl, 16) = t
    End With
End Sub

Ca marche nikel ! et ca converti même les caractères ... merci beaucoup

Rechercher des sujets similaires à "aligner verticalement identiques"