copier coller en boucle

sigma

XLDnaute Occasionnel
bonjour à tous,

J'ai un fichier dans lequel j'ai des données qui sont renseignées en lignes mais dans lequel j'ai des "trous". par exemple, mes données sont renseignées en ligne 3 et d'autres en ligne 6, autres en ligne 10 etc... j'aimerai trouver une solution pour que mes éléments de la ligne 3 soient recopiés jusqu'à la ligne 5 (ligne -1 d'une cellule ou il y a du texte) que ceux de la ligne 6 soient recopiés jusqu'à la ligne 9 et ainsi de suite jusqu'à la fin du fichier.

Je vous joins un fichier pour plus de clarté.

merci beaucoup de votre aide.

bonne journée
 

Pièces jointes

  • test.xlsx
    12.3 KB · Affichages: 32
  • test.xlsx
    12.3 KB · Affichages: 32

vgendron

XLDnaute Barbatruc
Re : copier coller en boucle

Bonjour..

avec ce code peut etre..
a essayer..

Code:
Sub complete()
fin = Range("A" & Rows.Count).End(xlUp).Row
i = 3
While i < fin
    inter = Range("A" & i).End(xlDown).Row - 1
    If inter > i Then
        Range("A" & i & ":C" & i).AutoFill Destination:=Range("A" & i & ":C" & inter), Type:=xlFillDefault
        i = inter + 1
    Else
    i = i + 1
    End If
Wend
   

End Sub
 

vgendron

XLDnaute Barbatruc
Re : copier coller en boucle

plutot avec ce code.. qui évite d'écraser certaines lignes qui n'ont pas besoin d'etre recopiées..
Code:
Sub complete()
fin = Range("A" & Rows.Count).End(xlUp).Row
i = 3
inter = 4

While i < fin
    remplir = False
    While Range("A" & inter) = ""
        inter = inter + 1
        remplir = True
    Wend
    If remplir Then
        Range("A" & i & ":C" & i).AutoFill Destination:=Range("A" & i & ":C" & inter - 1), Type:=xlFillDefault
        i = inter
        inter = i + 1
    Else: i = i + 1: inter = i + 1
    
    End If

Wend
   

End Sub
 

Paf

XLDnaute Barbatruc
Re : copier coller en boucle

Bonjour sigma, vgendron :)

une autre solution:


Code:
Sub Remplir()
 Dim MonTab, i As Long
 With Worksheets("Feuil1")
 For i = 3 To .Range("A" & .Rows.Count).End(xlUp).Row
    If .Cells(i, 1) = "" Then
        .Cells(i, 1).Resize(1, 3) = MonTab
    Else
        MonTab = .Range("A" & i & ":C" & i)
    End If
 Next
 End With
End Sub

A+
 

Discussions similaires

Réponses
10
Affichages
513

Statistiques des forums

Discussions
312 115
Messages
2 085 441
Membres
102 889
dernier inscrit
monsef JABBOUR