VBA excel insérer une ligne vide
Résolu
Vince
-
le père -
le père -
Bonjour,
Je voudrais en vba excel insérer des lignes à chaque fois qu'une valeur d'une cellule change par rapport à celle du dessus.
exemple : il faudrait que j'insére une ligne vide entre 15 et 20, entre 20 et 23, entre 23 et 26.
Colonne
15
15
15
20
20
23
26
26
26
Voila le code sur lequel je travaillais mais ça ne marche pas sur les lignes seules.
Dim CellsToSuppr As Range, derLi As Long
Application.ScreenUpdating = False
derLi = Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To derLi
If Not Cells(i, 4) = Cells(i + 1, 4) Then
If CellsToSuppr Is Nothing Then
Set CellsToSuppr = Cells(i, 4)
Else: Set CellsToSuppr = Union(CellsToSuppr, Cells(i, 4))
End If
'Selection.EntireRow.Insert Shift:=xlDown
Else
End If
Next i
CellsToSuppr.Select
Selection.EntireRow.Insert Shift:=xlDown
merci d'avance pour l'aide.
Je voudrais en vba excel insérer des lignes à chaque fois qu'une valeur d'une cellule change par rapport à celle du dessus.
exemple : il faudrait que j'insére une ligne vide entre 15 et 20, entre 20 et 23, entre 23 et 26.
Colonne
15
15
15
20
20
23
26
26
26
Voila le code sur lequel je travaillais mais ça ne marche pas sur les lignes seules.
Dim CellsToSuppr As Range, derLi As Long
Application.ScreenUpdating = False
derLi = Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To derLi
If Not Cells(i, 4) = Cells(i + 1, 4) Then
If CellsToSuppr Is Nothing Then
Set CellsToSuppr = Cells(i, 4)
Else: Set CellsToSuppr = Union(CellsToSuppr, Cells(i, 4))
End If
'Selection.EntireRow.Insert Shift:=xlDown
Else
End If
Next i
CellsToSuppr.Select
Selection.EntireRow.Insert Shift:=xlDown
merci d'avance pour l'aide.
A voir également:
- Insérer une ligne entre chaque ligne excel
- Partager photos en ligne - Guide
- Aller à la ligne excel - Guide
- Mètre en ligne - Guide
- Formule somme excel ligne - Guide
- Insérer liste déroulante excel - Guide
1 réponse
Bonjour,
Ta formule pour derli est vraiment bizarre, d'où la sors-tu ? Chez moi derli vaut toujours 1
Ta formule pour derli est vraiment bizarre, d'où la sors-tu ? Chez moi derli vaut toujours 1
Dim derli As Long Dim i%, f As Worksheet Set f = ActiveSheet derli = f.UsedRange.Row + f.UsedRange.Rows.Count - 1 For i = f.UsedRange.Row To derli If Not f.Cells(i, 4) = f.Cells(i + 1, 4) Then f.Cells(i + 1, 4).EntireRow.Insert Shift:=xlDown i = i + 1 ' pour sauter la ligne vide derli = derli + 1 ' car on a repoussé la dernière ligne End If Next i Application.ScreenUpdating = True