Copier coller ligne vba

Fermé
carine - 24 févr. 2015 à 19:02
 carine - 25 févr. 2015 à 12:28
Bonjour,
Je suis novice puisque c'est ma première tentative, et je cherche une solution à un pb:
Le but de l'exercice est de réaliser un fichier récapitulatif.
J'ai plusieurs onglets actifs dont je souhaite mettre les données à la suite sur un onglet récapitulatif.
Je prends les données du 1er onglet et je les colle dans la récap:
Range("A4").Select
Sheets("Onglet1").Select
Rows("4:4").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("Récap").Select
Range("A4").Select
ActiveSheet.Paste
Je copie les données de l'onglet 2 que je colle dans l'onglet récap à la suite des données déjà copiées précédemment:
Sheets("Onglet2").Select
Rows("5:5").Select
ActiveWindow.SmallScroll Down:=-15
Range(Selection, Selection.End(xlDown)).Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Récap").Select
Range("A4").Select
Selection.End(xlDown).Select
ActiveSheet.Paste
Et ainsi de suite pour les autres onglets...

J'ai créé un bouton et tout se met bien à jour lorsque je clique.
Mon problème est que lorsque j'ajoute des données sur l'onglet 1, je ne récupère pas la dernière ligne. Je ne récupère les données que jusqu'à la dernière ligne -1.

Comment modifier le code pour obtenir la dernière ligne? Je pensais que XLDown suffisait.

Petite précision, en amont de tout cela j'ai ajouter la suppression de toutes les données de l'onglet récap. Et cela fonctionne très bien:
Rows("4:4").Select
Range(Selection, Selection.End(xlDown)).Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlUp

Merci pour votre aide car je suis un peu perdue.

Carine

3 réponses

Gyrus Messages postés 3334 Date d'inscription samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016 523
24 févr. 2015 à 19:32
Bonjour,

Une bonne habitude à prendre : supprimer les "select" autant que possible.
Voici tes 2 macros revues et corrigées.
Sub Test()
'Je prends les données du 1er onglet et je les colle dans la récap:
With Sheets("Onglet1")
.Range(.Rows("4:4"), .Rows("4:4").End(xlDown)).Copy
ActiveSheet.Paste Destination:=Worksheets("Récap").Range("A4")
End With
'Je copie les données de l'onglet 2 que je colle dans l'onglet récap à la suite des données déjà copiées précédemment:
With Sheets("Onglet2")
.Range(.Rows("5:5"), .Rows("5:5").End(xlDown)).Copy
ActiveSheet.Paste Destination:=Worksheets("Récap").Range("A4").End(xlDown).Offset(1)
End With
Application.CutCopyMode = False
End Sub

Sub Suppression()
With Worksheets("Récap")
.Range(.Rows("4:4"), .Rows("4:4").End(xlDown)).Delete Shift:=xlUp
End With
End Sub


A+
0
Un grand merci Gyrus. Grace à vos conseils je vais progresser!
0