Insérer autant de ligne qu'il y a d'info dans une cellule

Yazsou Messages postés 4 Statut Membre -  
Yazsou Messages postés 4 Statut Membre -
Bonjour la communauté,

J'ai besoin d'aide sur un fichier excel comme vous pouvez vous en douter..
Sur mon tableau il y des centaines de lignes, sur chaque ligne dans la cellule c# il y une ou plusieurs informations séparées par un point virgule (ex : 3025210;302520;3025230;3026110;3026120;3026130 )

J'aimerais quand c'est le cas, pouvoir créer juste en dessous de la ligne mère autant de ligne qu'il y a d'information avec ces codes.

Je ne sais pas si c'est clair, en tout cas moi je ne sais pas vraiment comment faire..

Merci

1 réponse

  1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    Code VBA a mettre dans un module

    Sub Insert_x_Lignes()
    Dim TInfos

    With Worksheets("feuil1")
    'derniere cellule non vide colonne A
    derlig = .Range("A" & Rows.Count).End(xlUp).Row
    'boucle de recherche
    For lig = derlig To 1 Step -1
    'mise en tableau des infos cellule avec ";" en separateur
    TInfos = Split(.Range("A" & lig), ";")
    'dimension du tableau
    Nb_Infos = UBound(TInfos)
    'si >0
    If Nb_Infos > 0 Then
    'insertion lignes fonction longueur tableau
    .Rows(lig + 1 & ":" & lig + Nb_Infos + 1).Insert
    'copie des infos dans les cellules inserees
    .Range("A" & lig + 1).Resize(Nb_Infos + 1) = Application.Transpose(TInfos)
    End If
    Next lig
    End With
    End Sub
    1
    1. Yazsou Messages postés 4 Statut Membre
       
      Merci beaucoup pour cette réponse rapide, je vais essayer ça.

      :)
      0
    2. Yazsou Messages postés 4 Statut Membre
       
      Bonjour F894009,

      Le code marche très bien, merci encore. Serait-il possible de modifier pour que les lignes créées à partir de la ligne mère gardet les informations des deux premières cases ?

      Chaque ligne comporte 3 cellules. Les informations à dissocier sont dans la cellules C. J'aimerais que le code VBA en créant les nouvelles lignes garde quand même les valeurs de A et B pour chaque ligne qu'il créera (et eventuellement me supprime la ligne mère)

      Merci pour votre aide
      0
    3. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Bonjour,

      c'est fait

      Sub Insert_x_Lignes()
      Dim TInfos

      With Worksheets("feuil1")
      'derniere cellule non vide colonne A
      derlig = .Range("C" & Rows.Count).End(xlUp).Row
      'boucle de recherche
      For lig = derlig To 1 Step -1
      'mise en tableau des infos cellule avec ";" en separateur
      TInfos = Split(.Range("C" & lig), ";")
      'dimension du tableau
      Nb_Infos = UBound(TInfos)
      'si >0
      If Nb_Infos > 0 Then
      'insertion lignes fonction longueur tableau
      .Rows(lig + 1 & ":" & lig + Nb_Infos + 1).Insert
      'copie des infos dans les cellules inserees
      .Range("A" & lig + 1).Resize(Nb_Infos + 1) = .Range("A" & lig)
      .Range("B" & lig + 1).Resize(Nb_Infos + 1) = .Range("B" & lig)
      .Range("C" & lig + 1).Resize(Nb_Infos + 1) = Application.Transpose(TInfos)
      .Rows(lig & ":" & lig).Delete
      End If
      Next lig
      End With
      End Sub
      0
    4. Yazsou Messages postés 4 Statut Membre
       
      Je vais suivre des cours de VBA et excel cette année, j'espère avoir votre niveau. Merci beaucoup
      0