Insertion d'une nouvelle ligne en convertissant la valeur d'une cellule

Bonjour, je suis nouveau sur le forum,

Je me relance dans le VBA et je coince sur mon besoin.

j'ai un tableau (de 500 à 1000 lignes) avec des valeurs concaténées dans une cellule que je dois les décomposer. Pour les décomposer, mon besoin est de dupliquer la ligne au tant qu'il y a de valeurs concaténées et copier que une partie du texte de la cellule qui a des séparateurs ";"

Voici mon exemple dans l'image.

pouvez vous m'aider svp

je vous remercie

P-E

vba inserer ligne deconcatener cellule

Bonjour,

Pour décomposer ton texte "L01B;L01B;L02D" tu utilises Split(texte, ";") vu que tes séparateurs sont des points virgule
Exemple

12essai2.xlsb (13.25 Ko)

tu cliques sur la feuille et tu verras cette décomposition que tu pourras utiliser pour la suite de ton travail
Bon courage

Bonjour,

Cela peut aussi être fait en quelques clics seulement via Power Query.
Et une seule ligne de code M :

= Table.ExpandListColumn(Table.TransformColumns(Source, {{"Emplacement", Splitter.SplitTextByDelimiter(";", QuoteStyle.Csv), let itemType = (type nullable text) meta [Serialized.Text = true] in type {itemType}}}), "Emplacement")

Ou plusieurs, une fois formaté :

Table.ExpandListColumn(
  Table.TransformColumns(
    Source, 
    {
      {
        "Emplacement", 
        Splitter.SplitTextByDelimiter(";", QuoteStyle.Csv), 
        let
          itemType = (type nullable text) meta [Serialized.Text = true]
        in
          type {itemType}
      }
    }
  ), 
  "Emplacement"
)

A+

Merci, et merci pour votre rapidité

j'essaye et je vous redis

Bonjour

Bojour à tous

Un essai à tester. Te convient-il ?

9classeur1.xlsm (30.74 Ko)

Bye !!

Merci pour cette solution avec duplication des autres informations

Merci pour cette solution qui fonctionne

Je cherche dans le code à augmenter la taille du tableau à plus de de colonne, et à modifier la colonne qui doit être duppliquer.

Peux tu m'aider à savoir quelle valeur modifier stp dans le code?

Sub convertir()

tablo = Range("A4").CurrentRegion
iR = 1

For i = 2 To UBound(tablo, 1)
For n = 0 To UBound(Split(tablo(i, 1), ";"))
ReDim Preserve tabloR(1 To 3, 1 To iR + n + 2)
tabloR(1, iR) = Split(tablo(i, 1), ";")(n)
tabloR(2, iR) = tablo(i, 2)
tabloR(3, iR) = tablo(i, 3)
iR = iR + 1
Next n
Next i
Range("L4").CurrentRegion.Offset(1, 0).ClearContents
Range("L4").Resize(UBound(tabloR, 2), 3) = Application.Transpose(tabloR)
End Sub

Merci

Bonjour

Il faudrait que tu me joigne un exemple du nouveau tableau de départ en indiquant quelles colonnes tu veux dupliquer et, sur une autre feuille, le tableau souhaité, ou au moins les premières lignes...

Bye !

Merci pour ton aide apportée,

voici un petit fichier avec le cas le plus complexe,

6test-vba.xlsx (10.77 Ko)

c'est à dire, un tableau à 8 colonnes, dont 4 qui ont des données à dupliquer

Si le résultat peut s'afficher sur un nouvel onglet, ça serai top!

Merci

Bonjour

Nouvelle version

6test-vba-v2.xlsm (29.91 Ko)

Bye !

Bonjour,

Merci la décomposition se fait super bien. Juste les valeurs des 3 premières colonnes sont remplacées par un chiffre

Peut-on recopier les valeurs à chaque duplication?

Merci

Bonjour,

J'ai testé la solution powerquery dans un des messages plus haut.

C'est parfait, celà répond à mon besoin et je ne connaissait pas avant

Merci pour vos message

Rechercher des sujets similaires à "insertion nouvelle ligne convertissant valeur"