Copier une ligne en fonction d'une valeur dans une cellule

Bonjout à tous,

voila mon problème ... J'ai besoin de copier coller des lignes en fonction d'une valeur qui se trouve dans une colonne.

Je voudrais que si dans la colonne AD, j'ai la valeur 4, je copie la ligne en question et que je l'insère 3 fois (ce n'est pas une erreur, c'est bien 3 et pas 4).

Attention parfois, je peux avoir 0 dans la colonne AD, dans ce cas, je conserve la ligne existante.

Merci par avance pour votre aide.

Laurent

Bonjour,

Voici une idée de code, déjà proposée, mais présentant des risques d'erreur au niveau de la boucle principale.

Vous avez le principe mais il faudra personnaliser et sûrement améliorer :

Sub Inserer()

Dim plage as range, cell as range, NvCell as range
Dim NbInsert%, i%
Dim AdrCell$

Set plage = Range("AD1").currentregion 'la plage à travailler
for each cell in plage.columns(X) 'pour chaque cellule de la colonne X (equiv AD)
If cell.value > 1 Then 'si la valeur est supérieure à 1 (si 1, on insère rien, si au-dessus, on insère cell.value-1 lignes)
    NbInsert = cell.value - 1 'Nombre de lignes à insérer
    AdrCell = cell.address 'conserve l'adresse de cellule en cours
    Set NvCell = cell 'nouvelle cellule temporaire
    cell.value = 0 'mise à 0 de la valeur de cellule en cours
    For i = 1 to NbInsert 'répéter NbInsert de fois les opérations
        plage.rows(NvCell.row).copy 'copie de la dernière ligne
        plage.rows(NvCell.row).insert 'insérer la copie en-dessous dernièer ligne
        Set NvCell = NvCell.offset(1, 0) 'cellule temporaire devient celle du dessous
    next i
    Set NvCell = Nothing 'vider cellule temporaire
    Set cell = Range(AdrCell) 'rédéfinit cell
    Set plage = plage.resize(plage.rows.count + NbInsert, plage.columns.count) 'redimension de notre plage avec les lignes créées
end if
next cell

end sub

Cordialement,

Rechercher des sujets similaires à "copier ligne fonction valeur"