Insérer un nombre de lignes en fonction de la valeur d'une case

Résolu/Fermé
lucieaup - 3 janv. 2013 à 16:16
 Un alcoolique - 25 févr. 2017 à 23:59
Bonjour,

J'ai un fichier d'environ 6 000 lignes que je dois mettre en forme pour y ajouter de Vlookup. C'est le résumé de toute ma campagne 2012 (récolte de tournesol).

Voila mon problème, avec les numéros de série de chaque lot, je dois effectuer une tracabilité. Le soucis c'est que parfois, pour un lot final j'ai plusieurs lots intermédiares (qui ont été mélangés) je voudrais donc voir toutes les qualités intermediaires pour cela il me faut insérer le nombre de lignes adéquat. J'ai réussi à coder pour que chaque fois que j'ai un nouveau numéro de lot il m'insére une ligne mais je voudrais qu'il se base sur le contenu d'une cellule pour savoir le nombre qu'il doit insérer.
Sub AjouteLigne()

Dim i As Integer, Déb As Integer
Dim F As Long

Déb = 1

Worksheets("sheet1").Select

For i = 100 To 2 Step -1

If (Cells(i, 1).Value <> Cells(i - 1, 1).Value) And _
Cells(i, 1).Value <> 0 Then
Range("A" & i).Select
Selection.EntireRow.Insert
Déb = i + 1
End If
Next i
End Sub

Voila mon code, il marche mais je suis bloquée pour la suite...

Merci de votre aide, j'espère avoir été compréhensible...

8 réponses

eriiic Messages postés 24601 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 25 novembre 2024 7 242
4 janv. 2013 à 11:41
Bonjour,

Alors:
Sub insererLig()
    Dim lig As Long
    Application.ScreenUpdating = False
    For lig = Cells(Rows.Count, 2).End(xlUp).Row To 2 Step -1
        If Cells(lig, "A") <> Cells(lig + 1, "A") And Cells(lig, "B") > 0 Then
            Rows(lig + 1).Resize(Cells(lig, "B")).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
            Cells(lig + 1, 1).Resize(Cells(lig, "B"), 1) = Cells(lig, "A")
        End If
    Next lig
    Application.ScreenUpdating = True
End Sub 

eric
2