Insertion automatique de lignes vierges sous conditions

Bonjour à tous,

J'essaye d’effectuer une macro en regardant les différents post mais je coince...

J'ai une base de données et j'aimerai insérer une ligne dès que la catégorie de personnel change, insérer une ligne dès que la nature du contrat change et insérer une ligne dès que le motif de CDD change.

J'aimerai faire cela pour tout le classeur.

Voici le début de la macro :

Sub InsertLignes()

ActiveWorkbook.Worksheets("Jardins Brunehaut").Sort.SortFields.Clear

ActiveWorkbook.Worksheets("Jardins Brunehaut").Sort.SortFields.Add Key:=Range("E2:E222"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal

ActiveWorkbook.Worksheets("Jardins Brunehaut").Sort.SortFields.Add Key:=Range("F2:F222"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal

ActiveWorkbook.Worksheets("Jardins Brunehaut").Sort.SortFields.Add Key:=Range("G2:G222"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal

With ActiveWorkbook.Worksheets("Jardins Brunehaut").Sort

.SetRange Range("A1:T222")

.Header = xlYes

.MatchCase = False

.Orientation = xlTopToBottom

.SortMethod = xlPinYin

.Apply

End With

Dim Lg As Long, i As Long

Lg = Range("A65536").End(xlUp).Row

Application.CutCopyMode = False

For i = Lg To 2 Step -1

If Range("e1" & i - 1) <> Range("e1" & i) Then

Range(Range("e1" & i), Range("e1" & i + 1)).EntireRow.Insert

End If

Next i

end sub

Merci d'avance,

6donnees-2019.xlsm (38.37 Ko)

Bonjour,

essayer en remplaçant

For i = Lg To 2 Step -1
   If Range("e1" & i - 1) <> Range("e1" & i) Then
       Range(Range("e1" & i), Range("e1" & i + 1)).EntireRow.Insert
    End If
 Next i

par

For i = Lg To 2 Step -1
    If Range("E" & i - 1) <> Range("E" & i) Then   Rows(i).Insert
Next i

A+

Bonjour,

Merci de votre réponse.

Cela marche, c'est super. J'ai pu adapter avec mes deux autres conditions.

Toutefois, je me pose une question, comment je peux me faire repartir sur les lignes afin de les mettre en forme ?

Merci d'avance.

si j'ai bien compris (?) :

la variable i correspond au N° de la ligne dont la donnée est différente de la ligne du dessus. Connaissant le N° de ligne, on peut faire la mise en forme que l'on veut dans la boucle For i ....

A+

Bonjour,

Merci beaucoup pour votre aide, j'ai réussi à la faire.

Rechercher des sujets similaires à "insertion automatique lignes vierges conditions"