[RESOLU] - VBA - Copie de données en fonction d'une plage de dates

Akortys

XLDnaute Occasionnel
Bonjour,

Je souhaiterais copier-coller des données d'une feuille à l'autre en fonction d'une plage de dates (feuille "Dialogue").
J'ai fait une macro (macro1) mais ça ne fonctionne pas et je ne comprends pas trop pourquoi.

Si quelqu'un a une idée ?
J'aimerais également éviter les aller-retour entre les différentes feuilles.

Merci d'avance.
 

Pièces jointes

  • Tri-export.xlsm
    134 KB · Affichages: 76
Dernière édition:

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : VBA - Copie de données en fonction d'une plage de dates

Bonjour Akortys,

je trouve ton code bien trop compliqué et très lent à l'exécution

il faut éviter de passer d'une page à l'autre dans la boucle
il faut également éviter les "Select"

le code ci-dessous fonctionne 100 fois plus rapidement
Code:
Sub Macro1()
Sheets("Import").Range("A1:B" & Sheets("Import").Range("A65535").End(xlUp).Row).ClearContents
Sheets("brut").Select
For i = 2 To Range("A65535").End(xlUp).Row
derligne = Sheets("Import").Range("A65535").End(xlUp).Row + 1
    If Cells(i, 1) >= Range("Paramètres!G3").Value _
        And Cells(i, 1) <= Range("Paramètres!H3").Value Then
        'Copier-coller de la ligne de données sur la feuille "Import"
        Range(Cells(i, 1), Cells(i, 2)).Copy Destination:=Sheets("Import").Cells(derligne, 1)
        derligne = derligne + 1
    End If
Next i
MsgBox ("Les données viennent d'être transférées vers la feuille IMPORT")
Sheets("Import").Select
End Sub
à+
Philippe
 

Pièces jointes

  • 111.xlsm
    137.2 KB · Affichages: 114
  • 111.xlsm
    137.2 KB · Affichages: 131
  • 111.xlsm
    137.2 KB · Affichages: 107
Dernière édition:

Akortys

XLDnaute Occasionnel
Re : VBA - Copie de données en fonction d'une plage de dates

Bonjour,

Merci phLaurent55, c'est exactement ce que je cherchais à un petit bémol prêt.
Comme j'utilise Option Explicit j'ai été obligé d'effectuer les déclarations, donc pas très grave.

Par contre, le code se limite à la colonne 1 et 2 ( ce qui correspond au fichier exemple) mais je souhaite qu'il me prenne la dernière colonne des données de la feuille "Brut".
En l’occurrence dans l'exemple j'en ai deux mais je peux en avoir plus.

J'ai essayé de travailler avec la variable dercol mais sans aucun succès.

Code:
Sheets("TriBrut").Range("A1:B" & Sheets("TriBrut").Range("A65535").End(xlUp).Row).ClearContents
Dim n As Long
Dim i As Integer
Dim derligne As Long
Dim dercol As Long

Sheets("brut").Select
n = Range("A1").CurrentRegion.Columns.Count
    Range("A1", Range("A1").Offset(0, n - 1)).Select
    Selection.Copy
Sheets("TriBrut").Select
    Range("A1").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
Sheets("brut").Select
For i = 1 To Range("A65535").End(xlUp).Row
derligne = Sheets("TriBrut").Range("A65535").End(xlUp).Row + 1
dercol = Sheets("TriBrut").Range("A65535").End(xlToRight).Select
    If Cells(i, 1) >= Range("Paramètres!G3").Value _
        And Cells(i, 1) <= Range("Paramètres!H3").Value Then
        'Copier-coller de la ligne de données sur la feuille "Import"
        Range(Cells(i, 1), Cells(i, dercol)).Copy Destination:=Sheets("TriBrut").Cells(derligne, 1)
        derligne = derligne + 1
    End If
Next i
MsgBox ("Les données viennent d'être transférées vers la feuille IMPORT")
Sheets("Import").Select

Et puis c'est vrai que c'est plus rapide.

Encore merci.
 

Akortys

XLDnaute Occasionnel
Re : VBA - Copie de données en fonction d'une plage de dates

Bonjour,

Bon bah du coup en cherchant bien j'ai trouvé tout seul.

Pour ceux que ça intéresse :

Code:
'Permet de connaitre le numero de la derniere colonne renseignée
dercol = Range("A1").End(xlToRight).Column

    If Cells(i, 1) >= Range("Paramètres!G3").Value _
        And Cells(i, 1) <= Range("Paramètres!H3").Value Then
        'Copier-coller de la ligne de données sur la feuille "TriBrut" en mettant la variable dercol
        Range(Cells(i, 1), Cells(i, dercol)).Copy Destination:=Sheets("TriBrut").Cells(derligne, 1)
        derligne = derligne + 1
    End If

Merci les contributeurs.;)
@+
 

Discussions similaires

Statistiques des forums

Discussions
312 206
Messages
2 086 214
Membres
103 158
dernier inscrit
laufin