Ecater en colonne en 2 colonnes

Bonjour,

Je souhaite éclater une colonne en 2 colonnes

Je m'explique la séparation pour splitter en 2 colonne c'est la chaine de caractère suivant " - " (epace tiret espace)

Par contre mon souci c'est que dans certaine cellule il y a dans certain plusieurs fois la suite de caractère " - ".

Il ne faut prendre en compte que la première suite de caractère " - "

Voici le code que j'ai commencé à initié

Sub CodeLibelle()

Dim SuiteCarac As Variant
Dim I As Long
Dim J As Long
Dim DerniereLigne As Long

    With ActiveSheet
         DerniereLigne = .Cells(.Rows.Count, 1).End(xlUp).Row
         For I = 1 To DerniereLigne
             SuiteCarac = Split(.Cells(I, 1), " - ")
             If UBound(MatriceEntreBlancs) > 0 Then
                For J = LBound(SuiteCarac) To UBound(SuiteCarac)
                       .Cells(I, 2 + J) = "'" & SuiteCarac(J)
                Next J
             End If
         Next I
   End With

End Sub

Voici le tableau que je souhaite splitter par exemple :

Colonne A splittée en colonne B et colonne C

LB20SIMP - Variation des postes du bilanLB20SIMPVariation des postes du bilan
B20-002 - La valeur brute des JVOCI R - Effets publics et valeurs assimilées - B1 doit être > ou = aux provisions à l'ouvertureB20-002La valeur brute des JVOCI R - Effets publics et valeurs assimilées - B1 doit être > ou = aux provisions à l'ouverture
B20-003 - La valeur brute des JVOCI R - Effets publics et valeurs assimilées - B1 doit être > ou = aux provisions à la clôtureB20-003La valeur brute des JVOCI R - Effets publics et valeurs assimilées - B1 doit être > ou = aux provisions à la clôture
B20-004 - La valeur brute des JVOCI R - Effets publics et valeurs assimilées - B2 doit être > ou = aux provisions à l'ouvertureB20-004La valeur brute des JVOCI R - Effets publics et valeurs assimilées - B2 doit être > ou = aux provisions à l'ouverture

Merci d'avance pour votre aide.

Le fichier complet en PJ

Bonjour,

Voici un essai :

Sub CodeLibelle()
dim dl&, I&, t()
With ActiveSheet
    dl = .Cells(.Rows.Count, 1).End(xlUp).Row
    ReDim t(1 To dl, 1 To 2)
    For I = 1 To dl
        t(I, 1) = Split(.Cells(I, 1), " - ")(0)
        t(I, 2) = Replace(.Cells(I, 1), t(I, 1) & " - ", "")
    Next I
    .Cells(1, 2).Resize(UBound(t), UBound(t, 2)) = t
End With
End Sub

Cdlt,

Bonjour à tous

Aussi en 3, 4 clics avec PowerQuery intégré à Excel 2016 et +

Pourrait très certainement le faire sur le fichier lié directement...

Bonjour tout le monde,

Autre variante :

Option Explicit

Sub CodeLibelle()
    Dim SuiteCarac As Variant
    Dim suite As String
    Dim I As Long
    Dim J As Long
    Dim DerniereLigne As Long

        With ActiveSheet
             DerniereLigne = .Cells(.Rows.Count, 1).End(xlUp).Row
             For I = 1 To DerniereLigne
                 SuiteCarac = Split(.Cells(I, 1), " - ")
                 .Cells(I, 2) = SuiteCarac(0)
                 For J = 1 To UBound(SuiteCarac)
                    suite = suite & SuiteCarac(J) & " - "
                 Next J
                 .Cells(I, 3) = Right(suite, Len(suite))
                 .Cells(I, 3) = Left(Cells(I, 3), Len(Cells(I, 3)) - 3)
             Next I
       End With
End Sub

Merci à tous !

@3GB ta solution fonctionne très bien => sujet résolu !

@78Chris j'ai office 2013 ...

@Optimix la solution fonctionne presque le libellé est doublé et on perd les caractère " - "

Corrigé.

RE

Merci à tous !

@78Chris j'ai office 2013 ...

PowerQuery existe en add on pour 2010 et 2013 (11 ans déjà...)

Merci de compléter ton profil en indiquant ta version Excel, afin que les solutions et/ou précisions soient données en fonction de celle-ci...

Rechercher des sujets similaires à "ecater colonne colonnes"