For i = LastLine To 4 Step -1
Sub InsererEntreChaqueligne()
Application.ScreenUpdating = False
Dim i&, LastLine&
With ActiveSheet
LastLine = .Range("A" & .Rows.Count).End(xlUp).Row
For i = LastLine To 4 Step -1
If .Range("A" & i) <> .Range("A" & i - 1) Then
.Rows(i & ":" & i + 9).Insert
' For j = 1 To 9
' .Rows(i).Insert
' Next j
End If
Next i
End With
Application.ScreenUpdating = True
MsgBox "OK"
End Sub
Hello PhilBonjour à tous
Vincent pourquoi une 2eme boucle il me semble que l'on peut le faire avec une seule boucle et arrêter la boucle à 4 au lieu de 3
VB:Sub InsererEntreChaqueligne() Application.ScreenUpdating = False Dim i&, LastLine& With ActiveSheet LastLine = .Range("A" & .Rows.Count).End(xlUp).Row For i = LastLine To 4 Step -1 If .Range("A" & i) <> .Range("A" & i - 1) Then .Rows(i & ":" & i + 9).Insert ' For j = 1 To 9 ' .Rows(i).Insert ' Next j End If Next i End With Application.ScreenUpdating = True MsgBox "OK" End Sub
Hello,Hello Phil
pourquoi une seconde boucle.. parce que je me pose systématiquement la question de "comment inserer x lignes d'un coup"
et pour s'arreter à 4 au lieu de 3.. effectivement
.Rows(i).Resize(9).Insert
étrange.. chez moi, avec ton fichier, elle s'execute correctement...J'ai essayé la macro, mais elle me l'exécute que pour le premier matricule Je voudrais qu'elle me le fasse Jusqu'au matricule ligne 509 qui ferait au moins 5000 lignes Merci par avance
Sub InsererEntreChaqueligne()
Application.ScreenUpdating = False
With ActiveSheet 'avec la feuille active
LastLine = .Range("A" & .Rows.Count).End(xlUp).Row 'dernière ligne non vide de la colonne A
Set zone = .Range("A2:F" & LastLine) 'on définit le tableau complet
.Sort.SortFields.Clear
.Sort.SortFields.Add2 Key:=zone.Columns(1).Offset(1, 0), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal 'on créé le tri sur la colonne A
With .Sort 'on applique le tri
.SetRange zone
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
For i = LastLine To 4 Step -1 'pour toutes les lignes en partant du bas
'If .Range("A" & i) <> .Range("A" & i - 1) Then 'si on a deux matricules différents
.Rows(i).Resize(9).Insert
'End If
Next i
End With
Application.ScreenUpdating = True
MsgBox "OK"
End Sub
Sub InsererEntreChaqueligne()
Application.ScreenUpdating = False
With ActiveSheet 'avec la feuille active
LastLine = .Range("A" & .Rows.Count).End(xlUp).Row 'dernière ligne non vide de la colonne A
.Range("A2:F" & LastLine).Sort Key1:=Range("A2:F" & LastLine), Order1:=1, Header:=xlYes, DataOption1:=xlSortNormal 'xlSortTextAsNumbers
For i = LastLine To 4 Step -1 'pour toutes les lignes en partant du bas
If .Range("A" & i) <> .Range("A" & i - 1) Then 'si on a deux matricules différents
'.Rows(i & ":" & i + 9).Insert
.Rows(i).Resize(9).Insert 'ou en version plus élégante de Cousinhub ; )
End If
Next i
End With
Application.ScreenUpdating = True
MsgBox "OK"
End Sub
chez moi, avec ton fichier, elle s'execute correctement...