Excel dupliquer des lignes

dram15 Messages postés 7 Statut Membre -  
dram15 Messages postés 7 Statut Membre -
Bonjour,

Je cherche à créer une macro permettant de dupliquer des lignes.

Supposons j'ai une feuille avec plusieurs colonnes:

Avant
Colonne 1 Colonne 2 Colonne 3
CMP10129905 DK435089 100%
CMP10129854 DK438546 100%

et j'aimerais la transformer de cette façons

Après
Colonne 1 Colonne 2 Colonne 3
CMP10129905 DK101345 30%
CMP10129905 DK102456 20%
CMP10129905 DK658978 50%
CMP10129854 DK345089 20%
CMP10129854 DK268365 25%
CMP10129854 DK346890 10%
CMP10129854 DK567908 10%
CMP10129854 DK476089 10%
CMP10129854 DK543785 10%
CMP10129854 DK657893 15%

Avec

DK435089 est composé de:
DK101345 30%
DK102456 20%
DK658978 50%
et DK438546 est composé de:
DK345089 20%
DK268365 25%
DK346890 10%
DK567908 10%
DK476089 10%
DK543785 10%
DK657893 15%
Comment pourrais-je faire?

Merci par avance

12 réponses

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

    Par quel miracle pouvons nous savoir DK435089 est composé de: .......
    A+
    0
  2. dram15 Messages postés 7 Statut Membre
     
    En fait le DK435089 est un matériel complexe, qui est composé de plusieurs matériaux normaux.

    En gros je cherche à faire une décomposition par matériel, j'espére que c'est plus claire pour vous.

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

    j'espére que c'est plus claire pour vous.Non, quelles regles appliquez vous et ou se trouvent les composants????????
    0
  4. dram15 Messages postés 7 Statut Membre
     
    En gros j'ai une première feuille avec pour chaque compo, le complex matériel qui lui est assigné.
    Dans une autre feuille j'ai la décomposition du complex matériel en différent matériel avec leur pourcentage. et j'essaie de créer un nouvelle feuille avec les matériel normal et pourcentage spécifique.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Re,
    D'accord, pourriez vous mettre votre fichier a dispo (si pas confidentiel) sur: https://www.cjoint.com/ copier le lien cree.

    Merci
    0
  7. dram15 Messages postés 7 Statut Membre
     
    je vous ai envoyé un exemple
    0
  8. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Re,
    Par quel chemin??? Ou est le lien??
    0
  9. dram15 Messages postés 7 Statut Membre
     
    ok merci et si je voulais supprimer la ligne des 100% sur la feuille 3.

    Que pourrais ajouter dans le code la macro?
    0
  10. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    Remplacez le code existant par celui-ci

    Sub Bouton2_Clic()
      Dim Plage1 As Range, Cel As Range, Col_A As Range
      Dim Wk1, Wk2, Wk3
      
      Set Wk1 = Worksheets("feuil1")
      Set Wk2 = Worksheets("feuil2")
      Set Wk3 = Worksheets("feuil3")
      
      Set Plage1 = Wk1.Range("A2:A" & Wk1.Range("A" & Rows.Count).End(xlUp).Row)
      Set Plage2 = Wk2.Range("A1:A" & Wk2.Range("A" & Rows.Count).End(xlUp).Row)
      For Each Cel In Plage1
        If Cel <> "" Then
          'DK recherche
          DK = Wk1.Range("F" & Cel.Row)
          'Recherche si DK existe
          Nbre = Application.CountIf(Plage2, DK)
          
          If Nbre = 1 Then    'DK existe
            Lig = 1
            'Recherche ligne DK
            Lig = Wk2.Columns("A").Find(DK, Wk2.Cells(Lig, "A"), , xlWhole).Row
            'Ligne DK composants
            LigC = Lig + 1
            'Tant qu'il y a un composant pour ce DK
            Do While Wk2.Cells(LigC, "C") <> ""
              'pour la dernière ligne de la colonne A
              derlig = Wk3.Range("A" & Rows.Count).End(xlUp).Row + 1
              Wk3.Range("A" & derlig) = Cel
              'DK Composants
              Wk3.Range("B" & derlig) = Wk2.Cells(LigC, "C")
              '%DK Composants
              Wk3.Range("C" & derlig) = Wk2.Cells(LigC, "E")
              LigC = LigC + 1
            Loop
          End If
        End If
      Next Cel
    End Sub


    Bonne suite
    0
  11. dram15 Messages postés 7 Statut Membre
     
    Merci beaucoup cela fonctionne parfaitement
    Cordialement
    0