Hello!

Je bloque actuellement sur un petit programme en VBA.
J'ai créé des fichiers qui sont alimentés tous les jours par des utilisateurs qui renseignent ligne par ligne des informations. La première colonne contient des dates qui sont dans l'ordre. Mais il arrive que certains jours, des fichiers ne soient pas renseignés. Nous pouvons donc avoir plusieurs lignes de suite avec les dates 21/10/2007, puis 22/10/2007, puis ensuite 24/10/2007
J'ai un autre fichier qui rassemble toutes les lignes renseignées par mes collègues. Je souhaite faire une récupération automatique pendant la nuit sur les fichiers de mes collègues. On clique sur un bouton qui ouvre un formulaire. On remplit la date de début de récupération, et la date de fin, puis l'heure à laquelle on souhaite que le fichier opère.
Mon programme fonctionne mais si je mets certaines dates, ça ne fonctionne plus. Mon problème est dans la sélection des cellules.
Je me suis inspiré de ce que j'ai pu voir sur ce site pour faire ce code, mais ça fonctionne que dans certaines conditions.


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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
 
Sub RecupDonnées()
 
Dim Plage As Range, NoLigne As Long, NoCol As Integer, Adres, Valeur
Dim NoLigne2 As Long, NoCol2 As Integer, Adres2, Valeur2
 
Range("A2:Q65536").Sort Key1:=Range("A3"), Order1:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=True, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
 
Set Plage = Range("A3:A" & Range("A65536").End(xlUp).Row)
 
For Each Cell In Plage
 
If Cell >= vDateDébut Then
NoLigne = Cell.Row
NoCol = Cell.Column
Adres = "A" & NoLigne
 
Exit For
Exit Sub
End If
 
If Cell > vDateFin Then
 
Exit For
Exit Sub
 
End If
 
If Cell < vDateDébut Then
NoLigne = Cell.Row
NoCol = Cell.Column
Adres = "A" & NoLigne + 1
Valeur = Cell
 
End If
 
Next
 
For Each Cell In Plage
 
If Cell <= vDateFin Then
NoLigne2 = Cell.Row
NoCol2 = Cell.Column
Adres2 = "Q" & NoLigne2
Valeur2 = Cell
 
End If
 
Next
 
Range(Adres, Adres2).Select
'Range(Adres, Adres2).Copy
'Windows("consolidé.xls").Activate
'[B4].Select
'Selection.End(xlDown).Select
'ActiveCell.Offset(1, 0).Select
'Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
 
'Else
 
'Exit Sub
'
End If
 
End Sub
Imaginons que dans le fichier que je souhaite copier, les données vont du 17/10/2007 au 21/10/2007, si je rentre dans mon formulaire date début: 05/10/2007 et date fin 10/10/2007, alors ça plante.
Je suis sûr qu'il y a un moyen plus simple et plus rapide de faire cette sélection...

Merci d'avance pour votre aide!