Bonjour à tous,
Je planche depuis des heures sur un bout de VBA qui est tout juste sur le point de bien fonctionner. J'en appel à vous car je suis sur le point de baisser les bras à force de fouiller pour trouver une réponse.
J'ai deux feuilles, la 1er est une base de données "Contrats" et l'autre un sommaire "Data_sommaire".
Mes nom de colonne dans "Contrats" sont à la ligne 7 et mes données commencent à la ligne 9. Mes données sont réparties en colonne de A à Q. Je vais avoir éventuellement bien au-dessus de 5 000 lignes...
Je veux extraire (filtrer et copier) les lignes de données dans "Contrats" dont la date en colonne E (5e colonne) correspondent à mon critère (ma date...) et les coller ensuite à partir de la cellule (range) B5 de ma feuille "data_sommaire).
Je rencontre deux problèmes:
1 - J'ai fait des tests avec d'autres types qu'une date (ex.: Dim ref1 as string, ref1 = "vente") comme critère, et mon code fonctionne. Mais, dès que j'utilise une date, ça ne fonctionne plus. J'ai bien changée pour Date ou Long, rien à faire...?!
2 - Quand j'utilise autre chose qu'une date et que ça fonctionne, par défaut, la 1er ligne coller dans "data_sommaire" est toujours ma 1er ligne de données dans ma feuille "Contrats". QU'est-ce qui ne fonctionne pas dans mon code?!
Voici le code:
Je définis la valeur de ma variable (ma date) dans une 3 feuille nommée "Admin" en cellule d18.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 Sub CopyData() 'Définir la variable de mon critère Dim ref1 As Long ref1 = Worksheets("Admin").Range("d18").Value 'Filtrer les données selon mon critère Worksheets("Contrats").Activate LastRow = Range("A65536").End(xlUp).Row Range("A9:q" & LastRow).AutoFilter Field:=5, Criteria1:=ref1 'Selectionner et copier les données filtrées Range("A9:q" & LastRow).SpecialCells(xlCellTypeVisible).Copy 'Coller les données dans mon sommaire Worksheets("data_sommaire").Range("b5").PasteSpecial xlPasteValues Worksheets("Contrats").Activate If ActiveSheet.AutoFilterMode = True Then ActiveSheet.AutoFilterMode = False Application.CutCopyMode = False End Sub
Quelqu'un a une idée du problème?!
Un grand merci!
Partager