Recréer des lignes en fonction d'un critère nb

Hello

Je souhaite reconstruire un tableau à partir d'une base existante mais je souhaite ajouter des lignes identiques en fonction d'un critère

Dans mon exemple j'ai un nombre de carton à aller chercher (colonne I)

Si ce nombre est >1 alors je souhaiterai recréer une ligne à l'identique.

J'ai supprimé les colonnes dont je n'ai plus besoin dans mon nouveau tableau.

Je ne trouve pas la bonne formule pour recréer mon tableau en fonction de ce critère. Je pense qu'il faut utiliser la fonction décaler mais je ne la maitrise pas.

6creer-ligne.xlsx (14.08 Ko)

Bon j'ai réussit à faire quelques chose en m'ajoutant des colonnes pour savoir de combien je dois décaler.

Ca marche mais ce n'est pas super propre….

4creer-ligne.xlsx (21.40 Ko)

Bonjour Evolm, bonjour le forum,

Une proposition VBA :

Sub Macro1()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim I As Integer 'déclare la variable I (Incrément)
Dim J As Integer 'déclare la variable J (incrément)
Dim K As Integer 'déclare la variable K (incrément)
Dim TL() As Variant 'déclare la variable TL (Tableau des Lignes)

Set O = Worksheets("Feuil1") 'définit l'onglet O
TV = O.Range("A1").CurrentRegion 'définit la tableau des valeurs TV
O.Range("J1").CurrentRegion.Offset(1, 0).ClearContents 'éfface d'éventuelles anciennes données
K = 1 'initialise la variable K
For I = 2 To UBound(TV, 1) 'boucle 1 : sur toutes les lignes I du tableau des valeurs TV (en partant de la seconde)
    For J = 1 To TV(I, 8) 'boucle 2 sur le nombre indiqué dans la donnée ligne I colonne 8 de TV
        ReDim Preserve TL(1 To 5, 1 To K) 'redimensionne le tableau des lignes (5 lignes, K colonnes)
        TL(1, K) = TV(I, 2) 'récupère le [ADR PICK] dans la ligne 1 de TL
        TL(2, K) = TV(I, 3) 'récupère la [REF] dans la ligne 2 de TL
        TL(3, K) = TV(I, 4) 'récupère le [LIBELLE] dans la ligne 3 de TL
        TL(4, K) = TV(I, 6) 'récupère le [PCB] dans la ligne 4 de TL
        TL(5, K) = TV(I, 7) 'récupère la [Somme de Besoin PI] dans la ligne 5 de TL
        K = K + 1 'incrémente K (ajoute une colonne au tableau des lignes TL)
    Next J 'prochaine fois de la boucle 2
Next I 'prochaine ligne de la boucle 1
'si K est supérieure à 1, envoie dans J2 redimensionnée de l'onglet O, le tableau TL transposé
If K > 1 Then O.Range("J2").Resize(UBound(TL, 2), UBound(TL, 1)).Value = Application.Transpose(TL)
End Sub

Merci ca marche super bien.

Il faut que je le transpose maintenant sur mon fichier global

Rechercher des sujets similaires à "recreer lignes fonction critere"