Bonjour à tous,

Je ne sais pas si ce sujet à déjà été abordée auparavant, mais je viens vers vous car je débute depuis peu en VBA et cela fait quelques jours maintenant que j'aimerais pouvoir faire évoluer le code ma macro pour la rendre utilisable facilement mais je ne sais pas trop comment m'y prendre.

L'idée principale serait en fait de pouvoir remplacer dans mon code existant les dates de début "dtdeb" et de fin "dtfin" d'intervalle définies et codées en dur, afin de pouvoir sélectionner de manière dynamique n'importe quel intervalle de temps dans ma macro. j'ai entendu parler d'un bouton excel permettant de sélectionner facilement un intervalle de dates (du style Microsoft Date And Time picker control...).

Malheureusement, je ne sais pas comment l'utiliser dans un formulaire VBA et surtout comment adapter et modifier mon code existant en conséquence.

Peut-être existe-il d'autres moyens plus simple également ???

D'avance merci pour vos retours,

Mathieu

Je vous fais part ci-dessous de mon code actuel :


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
Option Explicit
Dim Tablo, Ln1, Ln2, Col, Col2
Dim dtdeb As Date
Dim dtfin As Date
 
Sub TabFe()
 
   'Choix des colonnes du tableau à créer dans l'onglet TestTabFe.
   Tablo = Array("B", "D", "F", "G", "H", "L", "M", "N")
 
   Ln1 = 16
   'La ligne n°16 correspond à la 1ère ligne de l'onglet Liste_FNC.
   Ln2 = 2
   'La ligne n°2 correspond à la 1ère ligne de l'onglet TestTabFe.
 
    dtdeb = DateSerial(14, 01, 31)
    dtfin = DateSerial(13, 12, 31)
 
    While Cells(Ln1, 1).Value <> ""
        If Range("B" & Ln1).Value = "KSB" And UCase(Range("AP" & Ln1).Value) = "OUI" And Range("N" & Ln1).Value <= dtdeb And Range("N" & Ln1).Value >= dtfin Then
 
               Col2 = 0
               For Each Col In Tablo
                   Sheets("TestTabFe").Cells(Ln2, Col2 + 1).Value = Range(Tablo(Col2) & Ln1).Value
                   Col2 = Col2 + 1
               Next Col
               Ln2 = Ln2 + 1
        End If
        Ln1 = Ln1 + 1
    Wend
    Sheets("TestTabFe").Activate
 
    'Bordure Ligne.
    Range("A1").CurrentRegion.Select
    With Selection
        .Borders.LineStyle = xlContinuous
    End With
 
    'Bordure Colonne.
    With Range("A1:H" & Ln2 - 1)
        .Borders(xlEdgeLeft).Weight = xlThin
        .Borders(xlEdgeRight).Weight = xlThin
        .Borders(xlEdgeTop).Weight = xlThin
        .Borders(xlEdgeBottom).Weight = xlThin
        .Borders(xlInsideVertical).Weight = xlThin
    End With
 
End Sub