Insertion de lignes à partir de l'information d'une cellule

Bonjour à la communauté,

Je suis entrain de construire une macro et j'ai réussi à faire quelques étapes de ce que je souhaite, mais j'arrive sur un gros point dur et mes compétences en VBA ne sont pas de ce niveau

J'essaye d'insérer un nombre de lignes variable en fonction de la valeur d'une cellule et ceci pour tout mon tableau. Ensuite j'ai des informations à ajouter dans ces lignes nouvellement créées, certaines provenant d'un autre onglet et d'autres à calculer selon les informations du tableau

Sur la 1ère capture d'écran vous avez l'était initial

image

Et sur la 2ème, l'attendu

image

En PJ vous trouverez le fichier avec les différentes étapes

En espérant que quelqu'un puisse m'aider sur une partie des étapes

Un grand merci d'avance à ceux qui prendront le temps d'y jeter un coup d'oeil

7exemple-planif.xlsm (180.29 Ko)

Bonjour,

Le code

Sub Insertion_Lignes()
    Dim f1 As Worksheet, f2 As Worksheet, f3 As Worksheet
    Dim i As Long, j As Long, DerLig_f2 As Long, DerLig_f3 As Long, Lig As Long, Cpt As Long, N°_Gamme As Long
    Dim Nb_Total_Lig As Long, Lig_Quai As Long

    Application.ScreenUpdating = False
    Set f1 = Sheets("Données quai")
    Set f2 = Sheets("Données fab")
    Set f3 = Sheets("Planification vide")

    f3.Columns("A:P").Clear 'on efface les précédents résultats
    f3.Cells.ClearOutline ' dégrouper les lignes

    DerLig_f2 = f2.Range("A" & Rows.Count).End(xlUp).Row 'Dernière ligne de la feuille "Données fab"
    f2.Range("A1:P" & DerLig_f2).Copy f3.Range("A1") 'copie de "Données fab" vers "Planification vide"

    Nb_Total_Lig = Application.WorksheetFunction.Sum(f3.Range("N2:N" & DerLig_f2)) 'Nombre total de lignes à insérer
    N°_Gamme = f3.Range("S1").Value + Nb_Total_Lig - 1 'Numéro Max à affecter à la gamme
    For i = DerLig_f2 To 2 Step -1
        If f3.Cells(i, "N") > 0 Then
            Cpt = f3.Cells(i, "N") 'nombre de lignes à insérer
            Rows(i + 1 & ":" & i + Cpt).Insert Shift:=xlDown 'insertion du nombre de lignes
            Range(f3.Cells(i + 1, "J"), f3.Cells(i + Cpt, "J")) = f3.Cells(i, "O")  'insertion des litrages
            Lig = i + 1 'numéro de la première ligne ajoutée
            Do While Cpt > 0
                f3.Cells(Lig, "C") = f3.Cells(Lig - 1, "C") + f3.Cells(i, "P") 'insertion des heures de début
                Cpt = Cpt - 1
                Lig = Lig + 1
            Loop
            Cpt = f3.Cells(i, "N") 'nombre de lignes à insérer
            For j = i + Cpt To i + 1 Step -1
                f3.Cells(j, "F") = "Cuite: " & N°_Gamme 'insertion des numéros de gamme
                N°_Gamme = N°_Gamme - 1
            Next j
        End If
    Next i

    DerLig_f3 = f3.Range("C" & Rows.Count).End(xlUp).Row 'Dernière ligne de la feuille "Planification vide"
    Lig_Quai = 2
    For i = 2 To DerLig_f3
        If f3.Cells(i, "N") > 0 Then
            Nb_Lig = f3.Cells(i, "N")
            Range(f1.Cells(Lig_Quai, "F"), f1.Cells(Lig_Quai - 1 + Nb_Lig, "F")).Copy f3.Cells(i + 1, "G")
            Lig_Quai = Lig_Quai + f3.Cells(i, "N")
            Rows(i + 1 & ":" & i + Nb_Lig).Rows.Group            'Groupement des nouvelles lignes ajoutées
        End If
    Next i

    Set f1 = Nothing
    Set f2 = Nothing
    Set f3 = Nothing
End Sub

le fichier

Cdlt

Bonjour Arturo,

Juste wow

Ca fonctionne parfaitement et merci beaucoup pour la rapidité de réponse et le temps que tu y auras passé

Encore un grand merci!!!

Rechercher des sujets similaires à "insertion lignes partir information"