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

  • Initiateur de la discussion Initiateur de la discussion Akortys
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

Dernière édition:
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

Dernière édition:
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.
 
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.😉
@+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour