Insérer une ligne blanche au dessus de chaque cellule non vide

Bonjour,

Merci par avance à ceux qui prendront le temps de me lire et de m'aider.

Afin d'améliorer la présentation d'un fichier avant impression, j'aurais besoin de séparer des blocs de lignes.

Pour ce faire, il faut que j'insére une ligne au dessus de chaque cellule de la colonne A qui contient une valeur.

La taille des blocs de lignes peut varier.

J'espère être assez clair.

En vous en remerciant par avance,

Bien à vous,

Bonjour,

Une piste :

Sub Test()

    Dim Plage As Range
    Dim I As Long

    With ActiveSheet: Set Plage = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp)): End With

    For I = Plage.Count To 2 Step -1

        If Plage(I).Offset(-1).Value <> "" Then Plage.Rows(I).Insert xlShiftDown

    Next I

End Sub

Bonjour Theze,

Merci beaucoup pour votre aide. J'avoue reprendre tout juste VBA après mes années d'études et j'ai encore besoin de "beaucoup" de perfectionnement. Je ne comprend donc pas grand chose à votre code.

Mais ce dernier est dans l'idée, il y 'a juste deux "soucis" à première vue:

  • Il ne décale que la colonne A et non pas la ligne entière
  • Il décale de 2 lignes or j'en ai besoin que d'une.

Ne comprenant pas le code, je ne peux le modifier de moi même

Merci par avance,

Bien cordialement,

Oups

Désolé je n'ai pas vraiment testé

Voici un code qui devrait te donner satisfaction ! En fait, "Plage.Count" est incrémenté à chaque insertion de ligne, d'où la double insertion :

Sub Test()

    Dim Plage As Range
    Dim I As Long
    Dim J As Long

    With ActiveSheet: Set Plage = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp)): End With

    J = Plage.Count

    For I = J To 2 Step -1

        If Plage(I).Offset(-1).Value <> "" Then Plage(I).EntireRow.Insert xlShiftDown

    Next I

End Sub

Theze,

En fait, j'ai un peu modifié le premier en me basant sur le deuxième. Il fonctionne sur les premières lignes puis arrête d'insérer des lignes, je ne comprend pas pourquoi

 Dim Plage As Range
    Dim I As Long

       With ActiveSheet: Set Plage = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp)): End With

    For I = Plage.Count To 2 Step -1

        If Plage(I).Offset(-1).Value <> "" Then Plage.EntireRow(I).Offset(-1).Insert xlShiftDown

    Next I

Merci encore à toi,

Bien cordialement,

Bonjour,

Voici un classeur exemple, cliques sur le bouton pour voir le résultat :

Niquel, un gros merci, ca fera gagner quelques heures de travail à un collégue sur une tâche pas très amusante.

Bonne journée à toi

Bonne journée à toi aussi et content de t'avoir aidé

Rechercher des sujets similaires à "inserer ligne blanche dessus chaque vide"