Rechercher : dans
Par :

VBA excel insérer une ligne vide

Dernière réponse le 23 nov 2007 à 14:17:42 Vince, le 23 nov 2007 à 12:34:53 
 Signaler ce message aux modérateurs

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.

Configuration: Windows XP
Internet Explorer 6.0

1

 le père, le 23 nov 2007 à 14:17:42
  • +1

Bonjour,

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

Répondre à le père