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:

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
Je définis la valeur de ma variable (ma date) dans une 3 feuille nommée "Admin" en cellule d18.

Quelqu'un a une idée du problème?!

Un grand merci!