Bonjour tout le monde, j'essaye de réaliser une macro mai bien sur tout ne marche pas lol
jvous explique...

je dispose d'un fichier excel contenant plus de 8000 entreprises avec entre autre une colonne contenant les dates d'inscription de chaque entreprises. Ma macro doit me permettre parmi les 8000 individus de choisir ceux inscrits entre par exemple 01/01/1991 et le 31/03/1991 et me supprimer les autres.

Pour cela g créer un userform où je saisie ma date de début de la période (date1) et ma date de fin (date2).

Ma macro contient des érreurs, car si je tape du 01/01/1991 au 31/03/1991 elle va fonctionner
Par contre si je saisie du 01/01/1991 au 01/06/1991 elle va me garder seulement les dates du premier jour de chaque moi ( 01/01/1991, 01/02/1991.....01/05/1991) ou encore si je saisie du 01/01/1991 au 31/03/1992 je vai obtenir les dates de 1991 jusquau 31/03/1991 seulement et celle du 01/01/1992 au 31/03/1992 et toute celles entre sont supprimés.

C'est assez dur de l'expliquer, mais pour d'autres renseignements n'hésitez pas
merci d'avance de votre aide car je bloque dur la...


voici la macro en question :

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
Private Sub ok2_Click()
Dim val As String
Dim pl As Integer
Dim pc As Byte
Dim dn1 As Date
Dim dn2 As Date
 
pl = 2
pc = 6
 
dn1 = date1 'textbox1
dn2 = date2 'textbox2
 
Sheets("Resultat").Activate
For pl = 2 To nb_ligne()
dn = Cells(pl, pc)
vna = Mid(dn, 7, 4)
vnb = Mid(dn, 4, 2)
vnc = Mid(dn, 1, 2)
vn1a = Mid(dn1, 7, 4)
vn1b = Mid(dn1, 4, 2)
vn1c = Mid(dn1, 1, 2)
vn2a = Mid(dn2, 7, 4)
vn2b = Mid(dn2, 4, 2)
vn2c = Mid(dn2, 1, 2)
If dn <> "" Then
    If vna >= vn1a And vna <= vn2a Then
        If vnb >= vn1b And vnb <= vn2b Then
            If vnc >= vn1c And vnc <= vn2c Then
            Else
                Rows(pl).Delete
                pl = pl - 1
            End If
        Else
            Rows(pl).Delete
            pl = pl - 1
        End If
    Else
        Rows(pl).Delete
        pl = pl - 1
    End If
Else
Exit Sub
End If
Me.Hide
date1.Value = ""
date2.Value = ""
Next pl
End Sub