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 . J'ai donc fait "enregistrer une macro" et ça marche... presque (ben oui sinon je ne serai pas là).

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
Rechercher des sujets similaires à "macro copier donnees filtrees"