inserer ligne

L

laurent

Guest
Bonjour

Je cherche à pouvoir inserer une ligne entre chaque ligne de mon tableau.

Cad j'ai un tableau avec des donnée de 500 lignes et je souhaite inserer une ligne entre chaque ligne de donnée.
Et à part une par une je ne vois pas!


Merci pour votre aide.
 

sylv900

XLDnaute Occasionnel
salut essaye un truc du genre :
nbligne=ActiveSheets.UsedRange.Rows.Count
for i = 1 (ou la première ligne occupée) to nbligne
Rows(i & ':' & i).Select
selection.insert Shift:=xlup
i=i+1
nbligne=ActiveSheets.UsedRange.Rows.Count
next i



bon courage
 
L

laurent

Guest
Ok merci pour votre aide mais alors là pour moi c'est du chinois.
Impossible pour moi de mettre en application votre solution.

Je vous communique un bout de mon fichier si vous pouvez m'aider c'est génial.
[file name=Test_20050727145741.zip size=16039]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Test_20050727145741.zip[/file]
 

Pièces jointes

  • Test_20050727145741.zip
    15.7 KB · Affichages: 13

sylv900

XLDnaute Occasionnel
tu peux appuyer sur le bouton... [file name=Test_20050727151233.zip size=21397]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Test_20050727151233.zip[/file]
 

Pièces jointes

  • Test_20050727151233.zip
    20.9 KB · Affichages: 18

STephane

XLDnaute Occasionnel
pour le fun, une fonction retournant une plage de cellules ou de lignes pair impair au sein d'une plage

Public Function Rg2Shred(rg As Range, pair As Boolean, Optional entierete As Boolean, Optional DebutReel As Boolean, Optional FinReelle As Boolean) As Range

Application.Volatile (False)
If rg.Areas.Count > 1 Then Exit Function

Dim rgC As Range 'cible
Dim rgS As Range 'source
Dim fS As Integer 'valeur initiale de la boucle for

Dim rgD As Range 'début de la plage source
Dim rgF As Range 'fin de la plage source

fS = IIf(pair = True, 2, 1) 'si pair = vrai, démarrage à la 2nde ligne de la plage, sinon à la 1°
Set rgD = rg.Item(1) 'détermination de la première cellule de la plage
Set rgF = LastCellCurrentPage(rg) 'détermination de la dernière cellule de la plage


'déterminations éventuelles des cellules réélles de débuts et de fin
'If Not IsMissing(DebutReel) Then If DebutReel Then Set rgD = rg.Find('*', rg.Item(1), , , xlByRows, xlNext)
'If Not IsMissing(FinReelle) Then If FinReelle Then Set rgF = rg.Find('*', rg.Item(1), , , xlBycolumn, xlPrevious)


Set rgS = Range(rgD, rgF) 'détermination de la plage ciblée

For i = fS To rgS.Rows.Count Step 2
If rgC Is Nothing Then
Set rgC = rgS.Rows(i) 'au premier tour, rgC sera vide
Else
Set rgC = Union(rgC, rgS.Rows(i)) 'puis, union de la plage existante dans rgC avec la ligne 'lue'
End If
Next i

'si une plage a été construite, elle est retournée, composée de ligne entière, si entierete = vrai
If Not rgC Is Nothing Then If entierete Then Set Rg2Shred = rgC.EntireRow Else Set Rg2Shred = rgC

End Function
' les astuces :
' écrire directement l'appel dans la zone nom pour sélectionner la plage en question
' exemple : Rg2Shred(A1:C15;vrai;vrai)
'
' définir un nom sous forme de formule employant cette fonction avec une adresse absolue,
' pour sélectionner rapidement une plage donnée via ensuite la zone nom
' exemple de nom : test =Rg2Shred($A$1:$C$15;vrai;vrai)
' même si vous ne voyez pas le nom dans la liste déroulante de la zone niom, vous pouvez
' taper directement le nom

' que faire de plus :
'- comment déclarer rg pour ne pas que l'utilisateur puisse sélectionner des plages multiples
'- retourner des codes erreurs ou libellés d'erreur précises
'- si la fonction est appelée seule en directe depuis une cellule, retourner le libellé de l'adresse (ou passer un paramètre pour retourner l'adresse et nom l'objet)
'- changer la gestion de la boucle, pour un pas de X (et transformer le paramètre pair en pas) ?
'- pour le fun, pas aléatoire (changeant à chaque boucle) : pas faisable avec une boucle for
'- corriger la détermination des cellules réelles de fin et de début
'- je pense que c'est mieux de la laisser non volatile

Function LastCellCurrentPage(cell As Range) As Range
Dim derLi, derCol
derLi = cell.CurrentRegion.Row + _
cell.CurrentRegion.Rows.Count - 1
derCol = cell.CurrentRegion.Column + _
cell.CurrentRegion.Columns.Count - 1
Set LastCellCurrentPage = Cells(derLi, derCol)
End Function
 

Statistiques des forums

Discussions
312 674
Messages
2 090 786
Membres
104 664
dernier inscrit
jth