Macro - Copier des données filtrées
Bonjour à toutes et à tous.
je cherche à faire une macro qui copie des données (en colonne) d'un fichier vers un autre. En fait ceci est ma 1ere macro.
Pour faire simple, j'ai un très gros fichier très lourd avec ÉNORMÉMENT de données en colonne dedans, mais dans un autre fichier je n'ai besoin que de certaines colonnes.
Alors soyons réaliste, je n'y connais rien
En effet, si j'ai filtré mes données par mois, il ne va bien me copier mes données mais uniquement celle qui sont visibles pas celle "masquées". Or je veux qu'il me copie toutes les données.
Voici ce que j'ai fait. A mon avis il doit y avoir une subtilité
Sub Macro2()
'
' Macro2 Macro
'
'
Windows("entrainement excel v10.xlsx").Activate
Columns("E:E").Select
Selection.Copy
Windows("ma 1ere macro copie.xlsx").Activate
Range("E1").Select
ActiveSheet.Paste
Windows("entrainement excel v10.xlsx").Activate
Columns("G:G").Select
Application.CutCopyMode = False
Selection.Copy
Windows("ma 1ere macro copie.xlsx").Activate
Columns("G:G").Select
ActiveSheet.Paste
Windows("entrainement excel v10.xlsx").Activate
Columns("H:H").Select
Application.CutCopyMode = False
Selection.Copy
Windows("ma 1ere macro copie.xlsx").Activate
Columns("H:H").Select
ActiveSheet.Paste
Windows("entrainement excel v10.xlsx").Activate
Columns("K:K").Select
Application.CutCopyMode = False
Selection.Copy
Windows("ma 1ere macro copie.xlsx").Activate
Columns("I:I").Select
ActiveSheet.Paste
End Sub
En vous remerciant par avance de votre aide.
Cordialement
Bonjour,
En effet, si j'ai filtré mes données par mois, il ne va bien me copier mes données mais uniquement celle qui sont visibles pas celle "masquées". Or je veux qu'il me copie toutes les données.
Tu peux être plus précis ?
Tu filtre mais tu veux malgré tout copier toutes les données ?
Bonjour
Bonjour à tous
Un essai à tester, si j'ai bien compris.
Bye !
Option Explicit
Dim fs As Worksheet, fd As Worksheet
Dim i&, derln&
Sub essai()
Set fs = ActiveSheet& 'feuille source (doit être active au lancement de la macro)
Set fd = Workbooks("entrainement excel v10.xlsx").Sheets(1) 'feuille de destination
derln = fs.UsedRange.Rows.Count 'dernière ligne de la zone de travail
For i = 1 To derln 'on passe toutes les lignes de la zone de travail
Range("E" & i).Copy fd.Range("E" & i) 'on copie les cellules des colonnes intéressées dans la feuille de destination
Range("G" & i).Copy fd.Range("G" & i) 'idem
Range("H" & i).Copy fd.Range("H" & i) 'idem
Range("K" & i).Copy fd.Range("K" & i) 'idem
Next i
End Sub
Bonjour,
Tu peux être plus précis ?
Tu filtre mais tu veux malgré tout copier toutes les données ?
[/quote]
OUI et NON.
Je ne filtre pas. C'est un fichier commun, qui nous sert de Base de Données qui est utilisé par plusieurs personnes... et certaines filtrent... Ce que je veux c'est ne pas avoir à perdre du temps à vérifier si c'est filtrer ou pas. Je veux copier l'ensembles des données présentes dans les colonnes A, B, C etc.
Jusqu'à présent je faisais un =somme.si.ens( en lien avec ce fichier, mais cela devient très très lourd et donc très long à faire les calculs (environ 15.000 formules)
Voila j'espère avoir répondu à ta question.
Bonjour
Bonjour à tous
Un essai à tester, si j'ai bien compris.
Bye !
Option Explicit Dim fs As Worksheet, fd As Worksheet Dim i&, derln& Sub essai() Set fs = ActiveSheet& 'feuille source (doit être active au lancement de la macro) Set fd = Workbooks("entrainement excel v10.xlsx").Sheets(1) 'feuille de destination derln = fs.UsedRange.Rows.Count 'dernière ligne de la zone de travail For i = 1 To derln 'on passe toutes les lignes de la zone de travail Range("E" & i).Copy fd.Range("E" & i) 'on copie les cellules des colonnes intéressées dans la feuille de destination Range("G" & i).Copy fd.Range("G" & i) 'idem Range("H" & i).Copy fd.Range("H" & i) 'idem Range("K" & i).Copy fd.Range("K" & i) 'idem Next i End Sub
Je te remercie je regarde cela tout à l'heure au boulot et je reviens vers toi.
Bonjour,
A peu près dans le même esprit que gmb
Sub Copier()
Dim ClsSource As Workbook
Dim ClsCible As Workbook
Dim PlgSource As Range
Set ClsSource = Workbooks("Ton fichier contenant les valeurs à récupérer.xlsx") 'adaptes le nom du classeur !
Set ClsCible = ThisWorkbook 'le classeur devant récupérer les valeurs et où doit se trouver la macro
Set PlgSource = DefPlage(ClsSource.Worksheets("Feuil1")) 'adaptes le nom de la feuille
'colonnes E, G, H, I et K récupéreés et inscrites dans la première feuille
ClsCible.Worksheets(1).Cells(1, 1).Resize(PlgSource.Columns(5).Rows.Count).Value = PlgSource.Columns(5).Value
ClsCible.Worksheets(1).Cells(1, 2).Resize(PlgSource.Columns(7).Rows.Count).Value = PlgSource.Columns(7).Value
ClsCible.Worksheets(1).Cells(1, 3).Resize(PlgSource.Columns(8).Rows.Count).Value = PlgSource.Columns(8).Value
ClsCible.Worksheets(1).Cells(1, 4).Resize(PlgSource.Columns(9).Rows.Count).Value = PlgSource.Columns(9).Value
ClsCible.Worksheets(1).Cells(1, 5).Resize(PlgSource.Columns(11).Rows.Count).Value = PlgSource.Columns(11).Value
End Sub
Function DefPlage(Fe As Worksheet, Optional L As Long = 1, Optional C As Long = 1) As Range
On Error GoTo Fin
With Fe
Set DefPlage = .Range(.Cells(L, C), _
.Cells(.Cells.Find("*", .[A1], -4123, , _
1, 2).Row, .Cells.Find("*", .[A1], -4123, , _
2, 2).Column))
End With
Exit Function
Fin:
Set DefPlage = Nothing
End Function