Rassembler des lignes de 3 feuilles sur une feuille
Bonjour à tous,
Je possède un classeur de 3 feuilles comportant un certains nombres de lignes dans chacune des feuilles.
je souhaiterai pouvoir automatiser la copie de toutes ces lignes dans une 4ème feuille simplement les unes à la suite des autres.
1ère feuille : par exemple 10 lignes
2ème feuille : par exemple 25 lignes
3ème feuille : par exemple 15 lignes
résultat souhaité :
4ème feuille : la copie des 10 lignes de la feuille 1, puis à partir de la 11eme ligne : la copie des 25 lignes suivantes et pour finir à partir de la 36ème ligne la copie des 15 dernières.
les 3 feuilles n'ont pas toujours le même nombre de ligne mais ont toujours le même nombre de colonnes.
la cerise sur le gâteau serait que les premières lignes de la feuille 1 se collent à partir de la 3ème ligne de la feuille 4
merci par avance de votre précieuse aide
ps : je joins un petit fichier modèle
Bonjour,
fichier joint à tester
Sub try()
Dim myRange As Range
Dim a As Variant
Dim derLig As Long
Application.ScreenUpdating = False
With Sheets("Résultat souhaité")
derLig = .Range("A" & Rows.Count).End(xlUp).Row
If derLig > 2 Then .Range(.Range("A3"), .Range("A" & derLig)).Resize(.Range(.Range("A3"), .Range("A" & derLig)).Rows.Count, 10).ClearContents
Set myRange = .Range("A2")
For Each a In Array("Feuil1", "Feuil2", "Feuil3")
Sheets(a).Cells(1).CurrentRegion.Copy myRange.Offset(1)
Set myRange = .Range("A" & Rows.Count).End(xlUp)
Next a
End With
End Sub
merci pour cette rapidité ^^
cela a l'air de fonctionner dans l'ensemble mais j'ai un soucis dans la recopie.... qui je pense provient que mes 3 feuilles sont le résultat de calculs de différentes feuilles donc truffées de formules.
il faudrait je crois que la copie se fasse sans la recopie des formules mais uniquement des valeurs.
si jamais cela n'est pas trop vous demander
merci par avance
remplace le code par celui ci alors
Sub try()
Dim myRange As Range
Dim a As Variant
Dim derLig As Long
Application.ScreenUpdating = False
With Sheets("Résultat souhaité")
derLig = .Range("A" & Rows.Count).End(xlUp).Row
If derLig > 2 Then .Range(.Range("A3"), .Range("A" & derLig)).Resize(.Range(.Range("A3"), .Range("A" & derLig)).Rows.Count, 10).ClearContents
Set myRange = .Range("A2")
For Each a In Array("Feuil1", "Feuil2", "Feuil3")
Sheets(a).Cells(1).CurrentRegion.Copy
myRange.Offset(1).PasteSpecial Paste:=xlPasteValues
Set myRange = .Range("A" & Rows.Count).End(xlUp)
Next a
End With
Application.ScreenUpdating = False
End Subparfait et merci pour le copier valeur........ mais je me heurte à un autre soucis qui est normal vu que je vous l'ai pas dit.
dans mes 3 feuilles, j'ai des calculs et j'ai prévu un certain nombre de lignes de formules qui ne sont pas toujours remplies s'il n'y a pas assez de valeurs.
le soucis est que votre superbe macro ^^ me recopie ces lignes vierges en fait.
donc les feuilles se recopient parfaitement mais j'ai forcement des lignes vierges entre chaque copie.
si jamais cela n'est pas trop compliqué ? sinon je me débrouillerai avec un tri
merci encore pour tout
regarde si ça marche avec cette modification
Sub try()
Dim myRange As Range
Dim a As Variant
Dim derLig As Long
Application.ScreenUpdating = False
With Sheets("Résultat souhaité")
derLig = .Range("A" & Rows.Count).End(xlUp).Row
If derLig > 2 Then .Range(.Range("A3"), .Range("A" & derLig)).Resize(.Range(.Range("A3"), .Range("A" & derLig)).Rows.Count, 10).ClearContents
Set myRange = .Range("A2")
For Each a In Array("Feuil1", "Feuil2", "Feuil3")
Sheets(a).Cells(1).CurrentRegion.Copy
myRange.Offset(1).PasteSpecial Paste:=xlPasteValues
Set myRange = .Range("A" & Rows.Count).End(xlUp)
Next a
derLig = .Range("A" & Rows.Count).End(xlUp).Row
Set myRange = .Range("A3:A" & derLig)
myRange.SpecialCells(xlCellTypeBlanks).Rows.EntireRow.Delete
End With
Application.ScreenUpdating = False
End Subbonjour,
désolé du retard mais j'ai été en déplacement pendant plusieurs jours.
malheureusement, la problématique reste la même, la macro me copie toujours les lignes correspondant à mes lignes de calculs même s'il elles sont vierges.