Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Insertion paremetrable d'une ligne (vide) sur deux

rdaniel

XLDnaute Nouveau
Bonjour, je souhaiterais insérer une ligne vide toutes les deux lignes dans un tableau contenant un nombre variable de lignes. de 200 à 2500 environ
j'ai bien essayé d'enregistrer une macro mais à la cinquatieme ligne...

Mes connaissance en VBA ne me permette pas (plus)d'automatiser cette tache. j'imagine bien une boucle avec la valeur de répétition saisie dans une boite de dialogue mais je ne peux pas allez plus loin.
Donc l’idéal serait ;
j'ai un tableau de X lignes non vide il faudrait insérer X lignes vides; une entre chaque ligne de données : au final le tableau possède 2X lignes
En vous remerciant de vous intéressez a mon petit projet.
Cordialement
Daniel
 

job75

XLDnaute Barbatruc
Bonsoir rdaniel, mapomme,

Si l'on ne traite que des valeurs ceci est très rapide :
VB:
Sub Insertion()
Dim tablo, ncol%, resu(), i&, n&, j%
With Feuil1 'CodeName de la feuille
    tablo = IIf(.UsedRange.Count = 1, .UsedRange.Resize(, 2), .UsedRange)
    ncol = UBound(tablo, 2)
    ReDim resu(1 To 2 * UBound(tablo), 1 To ncol)
    For i = 2 To UBound(tablo)
        If tablo(i, 1) <> "" Then
            n = n + 1
            For j = 1 To ncol
                resu(n, j) = tablo(i, j)
            Next j
        End If
        n = n + 1
    Next i
    '---restitution---
    .[A2].Resize(n, ncol) = resu
End With
End Sub

Sub RAZ()
Application.ScreenUpdating = False
On Error Resume Next 'si aucune SpecialCell
With Feuil1.UsedRange
    .Cells(1).EntireColumn.Insert
    .Columns(0) = "=REPT(1,RC[1]<>"""")"
    .Columns(0) = .Columns(0).Value
    Union(.Columns(0), .Cells).Sort .Columns(0), Header:=xlYes 'tri pour accélérer
    Intersect(.Columns(0).SpecialCells(xlCellTypeBlanks).EntireRow, .Cells).Delete xlUp
    .Columns(0).EntireColumn.Delete
End With
End Sub
A+
 

Pièces jointes

  • Insertion(1).xlsm
    24.2 KB · Affichages: 2
Dernière édition:

rdaniel

XLDnaute Nouveau
 

rdaniel

XLDnaute Nouveau
merci , excellent parfait problème résolu
je ne sais pas si il y a quelque chose a faire pour marquer resolu
Cordialement
Daniel
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…