conseil copier/coller de sheets(1) vers sheets(2)

E

Evelynetfrancois

Guest
Bonjour à toutesettous
J'ai besoin d'un conseil pour copier/coller de sheets(1)vers sheets(2)
1) j'ai une base de données sur 4 colonnes (a;b;c;d)
apres avoir fait un tri par date je copie cette liste triée de son emplacement vers sheets(2)
sub copier()
Columns("A:D").Select
Selection.Copy
Sheets(2).Select
Range("A1").Select
ActiveSheet.Paste
9a fonctionne bien sur mais suis-je obligé de copier les 4 colonnes(a;b;c;d) sur 65536 lignes ?
La base de données à copier une fois trié, a des enregistrements variables (15 lignes ou 60 lignes ou plus (variable)).
Peut-être est -il judicieux de ne copier que les lignes remplies ?
pour alléger la procédure !!
si oui quelle macro me le permettrai (si c'est utile !!)
merci de me donner votre sentiment
bonne journée a tous
Evelmynetfrancois
 
M

Moa

Guest
Salut Evelyne !

Vite fait en passant :

Je t'ai fait un petit exemple avec l'enregistreur de macro, légèrement modifié ensuite.

En admettant que ton tableau parte de A2 à E18

Sub Trier()

Range("A2").Select
Selection.AutoFilter Field:=1, Criteria1:="kk"

Range("A2").Select
ActiveCell.Offset(1, 0).Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlToRight)).Select

Selection.Copy
Sheets("Feuil2").Select
Range("A3").Select
ActiveSheet.Paste

End Sub

Et voilà, tout simplement !

@ +

Moa
 

Pièces jointes

  • Evelyne.zip
    7.5 KB · Affichages: 46
E

Evelynetfrancois

Guest
bonjour Moa Bonjour Chris
voila avec vos deux reponses je ne suis donc pas plus avancé lolol..
il vaut mieux trier ou tout copier , là est la question lol...
2 conseils qui s'opposent !!
MERCI je vais essayer de faire des calculs de rapidité d'executions avec les deux possibilités
bonne soirée
Evelynetfrancois
 
M

Michel_M

Guest
Bonjour,


Ci dessous proposition de macro VBA pour copier le tbleau de feuille 1 en feuille 2

Sub evelyne()

Dim transfert As Range
Dim lig As Long

'fige l'écran (va + vite et - stressant....)
Application.ScreenUpdating = False

Sheets("feuil1").Activate
' trie le tableau (la ligne 1 contient les noms de champs et on suppose _
que les dates sont dans la colonne A
Range("A2:D65536").Sort Key1:=Range("A2")

'numero dernière ligne occupée
lig = Range("A1").End(xlDown).Row

'plage à transfèrer feuil 2
Set transfert = Range(Cells(2, 1), Cells([lig], 4))

Sheets("feuil2").Activate
' le tableau feuille 2 commence en B4 par exemple
Range(Cells(4, 2), Cells([lig] + 2, 5)) = transfert.Value

End Sub


Si tu veux aller vite, les range.copy et paste sont à proscrire… Consultes à ce sujet le site de Laurent Longre sur les conseils de rapidité (Laurent Longre est un des « papes » d’excel).

Bonne soirée
Michel. Béziers
 

Discussions similaires

Statistiques des forums

Discussions
313 025
Messages
2 094 484
Membres
106 034
dernier inscrit
Chartame