XL 2016 Copier et ne coller que les 12 dernières lignes

Collins

XLDnaute Occasionnel
Bonjour à tous

J'ai un tableau qui comportent des milliers de lignes et je voudrais ne copier/coller chaque fois que les 12 dernières lignes d'un tableau sur un autre fichier.
j'ai mis en exemple 2 fichiers avec les explications.
Et comme ce tableau évolue chaque jour, je suis bloqué. :(
Je vous remercie pour l'aide que vous pourrez m'apporter.
 

Pièces jointes

  • Classeur1.xlsx
    11.3 KB · Affichages: 7
  • Classeur2.xlsx
    8.6 KB · Affichages: 4

Collins

XLDnaute Occasionnel
Bonjour Chris

Merci pour ta réponse
J'ai ouvert le fichier Classeur1 ou il y a le tableau
Et dans source il me dit : DataSource.Error : Impossible de trouver une partie du chemin d'accès 'T:\TEMP\Classeur1.xlsx'.
Pour essayé j'ai enlevé \TEMP.
La je ne sais plus quoi faire.
N'as tu pas une solution par macro?
 

chris

XLDnaute Barbatruc
RE

Il suffit d'indiquer le chemin complet sur ton PC...

Tu sembles ne pas avoir lu attentivement mon post...

VB:
Adapter la cellule en jaune puis Données, Actualiser Tout

Ce serait du reste le même problème en VBA...
 
Dernière édition:

job75

XLDnaute Barbatruc
Bonjour Collins, chris,

Une solution VBA avec cette macro affectée au bouton :
VB:
Sub Transfert()
Dim nlig&, fichier$, P As Range
nlig = 12 'modifiable
fichier = ThisWorkbook.Path & "\Destination.xlsx" 'chemin à adapter
Set P = [A1].CurrentRegion
If P.Rows.Count > nlig + 1 Then Set P = Union(P.Rows(1), P.Rows(P.Rows.Count - nlig + 1).Resize(nlig))
Application.ScreenUpdating = False
Application.DisplayAlerts = False 'si le fichier a déjà été créé
With Workbooks.Add(xlWBATWorksheet) 'nouveau document
    P.Copy Sheets(1).[A1] 'copier-coller
    .SaveAs fichier, 51 'format .xlsx
    .Close
End With
MsgBox "Transfert effectué..."
End Sub
Le tableau source doit avoir une ligne d'en-têtes, copiée elle aussi.

A+
 

Pièces jointes

  • Source(1).xlsm
    20.4 KB · Affichages: 4

Collins

XLDnaute Occasionnel
Bonjour Job75

Merci beaucoup pour cette méthode VBA.
Mais pour adapter à un fichier réel que je vais créer : j'aurai 3 tableaux dans ce fichier sur 3 onglets (par exemple) dans : "Source1", "Source2" et "Source3".
Serait il possible que j'ai les 12 dernières lignes de ces 3 tableaux sur 3 feuilles différentes dans ton fichier "destination" qui se crée automatiquement.
Je voudrai regrouper les valeurs sur 1 fichier pour m'éviter d'en avoir 3.
 

job75

XLDnaute Barbatruc
On peut traiter autant de feuilles que l'on veut :
VB:
Sub Transfert()
Dim nlig&, fichier$, a, n%, P As Range
nlig = 12 'modifiable
fichier = ThisWorkbook.Path & "\Destination.xlsx" 'chemin à adapter
a = Array("Source1", "Source2", "Source3") 'noms des feuilles à copier
Application.ScreenUpdating = False
Application.DisplayAlerts = False 'si le fichier a déjà été créé
With Workbooks.Add(xlWBATWorksheet) 'nouveau document
    For n = 0 To UBound(a)
        If n Then .Sheets.Add After:=.Sheets(n)
        .Sheets(n + 1).Name = a(n)
        Set P = ThisWorkbook.Sheets(a(n)).[A1].CurrentRegion
        If P.Rows.Count > nlig + 1 Then Set P = Union(P.Rows(1), P.Rows(P.Rows.Count - nlig + 1).Resize(nlig))
        P.Copy .Sheets(n + 1).[A1] 'copier-coller
    Next
    .Sheets(1).Activate
    .SaveAs fichier, 51 'format .xlsx
    .Close
End With
MsgBox "Transfert effectué..."
End Sub
 

Pièces jointes

  • Source(2).xlsm
    25.3 KB · Affichages: 3

Discussions similaires

Réponses
6
Affichages
400

Statistiques des forums

Discussions
312 206
Messages
2 086 223
Membres
103 159
dernier inscrit
FBallea