Création de lignes auto sur certaines colonnes

Bonsoir,

Savez-vous comment je pourrais m'y prendre pour créer des nouvelles lignes à chaque fois que la valeur d'une colonne change (ça c'est fait) seulement sur certaines colonnes ?

J'utilise ce code adapté à partir de ce que j'ai trouvé sur internet :

Public Sub insertion_ligne()
Dim lig As Long
Application.ScreenUpdating = False
For lig = ActiveSheet.Cells(Columns(1).Cells.Count, 1).End(xlUp).Row To 2 Step -1
If Cells(lig, 1).Value <> Cells(lig + 1, 1).Value And Cells(lig + 1, 1).Value <> "" And Cells(lig, 1).Value <> "" Then Rows(lig + 1).Insert

Next lig
End Sub

Les lignes sont bien créées, en revanche, j'aimerais qu'elles ne se créent que dans les colonnes E, F, G et H.

Ou dans un autres sens, que les lignes des colonnes A, B, C, D puis I et J, fusionnent avec la nouvelle ligne.

J'ai mis un document xslm avec 3 feuilles :

  • la feuille 1 qui les infos (si vous souhaitez lancer la macro vous verrez les lignes se créer)
  • la feuille 2 donne le résultat après que la macro soit exécutée
  • la feuille 3 donne le résultat que j'espère obtenir.

Merci de votre attention,

Je vais continuer à farfouiller et tester, si je trouve d'ici là, je l'indiquerai dans mon post.

Bonne soirée !

Pour le moment j'ai ceci :

Sub Insertion_ligne()
Dim i As Integer
Sheets(1).Select
Range("P1").Select
i = Range("P1").Value

For lig = ActiveSheet.Cells(Columns(1).Cells.Count, 1).End(xlUp).Row To 2 Step -1
If Cells(lig, 1).Value <> Cells(lig + 1, 1).Value And Cells(lig + 1, 1).Value <> "" And Cells(lig, 1).Value <> "" Then Rows(lig + 2).Insert

Next lig
End Sub

Je n'arrive pas à utiliser la valeur présente en P1 pour définir le nombre de lignes à ajouter...

Je suppose que c'est là que ça se passe : Then Rows(lig + 2).Insert

Avec ce code, c'est la cellule qui me sert à définir le nombre de lignes à sauter qui est renvoyée "x" lignes plus bas, en fonction de sa valeur..

Sub Insertion_ligne()
Dim i As Integer
Sheets(1).Select
Range("P1").Select
i = Range("P1").Value

For lig = ActiveSheet.Cells(Columns(1).Cells.Count, 1).End(xlUp).Row To 2 Step -1
If Cells(lig, 1).Value <> Cells(lig + 1, 1).Value And Cells(lig + 1, 1).Value <> "" And Cells(lig, 1).Value <> "" Then ActiveSheet.Cells(1, 16).Select
Selection.Insert shift:=xlDown

Next lig
End Sub

EDIT : Finalement je ne crois pas non.

Sachant qu'après je vais avoir besoin, qu'à chaque fois qu'une nouvelle ligne est créée, cette dernière fusionne avec la ligne du dessus, uniquement dans les colonnes A, B, C, D, I et J.

Autrement dit, j'aurais, dans les colonnes E, F, G et H "x" nouvelles lignes, qui seront fusionnées au sein des autres colonnes

Bonsoir,

J'ai changé d'approche mais ne trouve pas de solution.

Pour le moment j'ai un souci pour associer une lettre dans mon code à la valeur d'une cellule (K1)

...
'Dim i As Long
'Dim j As Long
'Dim myLastRow As Long
'myLastRow = Cells(Rows.Count, "A").End(xlUp).Row
'For i = myLastRow - 1 To 3 Step -1

j = Sheets("Feuille 1").Cells(1, 11)
j = Sheets("Feuille 1").Range(1, 11)
j = Range("1,11")
j = Cells("1,11")
j = ("K1")
j = 3

[a3].Resize(", j").EntireRow.Insert
'Next i
'End Sub

Si j'utilise ]j = Range("1,11").Value ; alors c'est [a3].Resize(", j").EntireRow.Insert qui m'affiche une erreur d'exécution 1004...

Je voudrais attribuer la valeur de la cellule "K1" à "j", de manière à pouvoir, par la suite, créer un nombre de ligne qui dépend de la valeur inscrite dans cette cellule... Sauf que je ne sais pas comment faire. Les solutions indiquées sur internet ne semblent pas fonctionner.

Bonne soirée

Finalement ça fonctionne.

Private Sub CommandButton1_Click()
UserForm1.Show
End Sub

Private Sub Insertion_ligne()
Dim j As Long
Dim myLastRow As Long

j = Range("M1").Value
myLastRow = Cells(Rows.Count, "A").End(xlUp).Row

[a35].Resize(j, 4).EntireRow.Insert
[a34].Resize(j, 4).EntireRow.Insert
[a33].Resize(j, 4).EntireRow.Insert
[a32].Resize(j, 4).EntireRow.Insert
[a31].Resize(j, 4).EntireRow.Insert
[a30].Resize(j, 4).EntireRow.Insert
[a29].Resize(j, 4).EntireRow.Insert
[a28].Resize(j, 4).EntireRow.Insert
[a27].Resize(j, 4).EntireRow.Insert
[a26].Resize(j, 4).EntireRow.Insert
[a25].Resize(j, 4).EntireRow.Insert
[a24].Resize(j, 4).EntireRow.Insert
[a23].Resize(j, 4).EntireRow.Insert
[a22].Resize(j, 4).EntireRow.Insert
[a21].Resize(j, 4).EntireRow.Insert
[a21].Resize(j, 4).EntireRow.Insert
[a20].Resize(j, 4).EntireRow.Insert
[a19].Resize(j, 4).EntireRow.Insert
[a18].Resize(j, 4).EntireRow.Insert
[a17].Resize(j, 4).EntireRow.Insert
[a16].Resize(j, 4).EntireRow.Insert
[a15].Resize(j, 4).EntireRow.Insert
[a14].Resize(j, 4).EntireRow.Insert
[a13].Resize(j, 4).EntireRow.Insert
[a12].Resize(j, 4).EntireRow.Insert
[a11].Resize(j, 4).EntireRow.Insert
[a10].Resize(j, 4).EntireRow.Insert
[a9].Resize(j, 4).EntireRow.Insert
[a8].Resize(j, 4).EntireRow.Insert
[a7].Resize(j, 4).EntireRow.Insert
[a6].Resize(j, 4).EntireRow.Insert
[a5].Resize(j, 4).EntireRow.Insert
[a4].Resize(j, 4).EntireRow.Insert
[a3].Resize(j, 4).EntireRow.Insert

End Sub

Je n'ai pas encore compris comment ne pas répéter le code autant de fois qu'il y a de ligne

Comme éviter de Resize

Ne pas traiter les 3 premières lignes.

Je n'ai pas encore trouvé pour arrêter de répéter le code, en revanche pour le reste tout fonctionne.

Je mets le sujet en résolu.

Rechercher des sujets similaires à "creation lignes auto certaines colonnes"