Bonjour à tous,
J'essaye d'afficher une liste de date dans une liste déroulante.
Cette liste de date est construite via une macro en prenant certaines valeurs d'une autre liste de valeurs présente dans le même classeur.
J'arrive à deux résultats qui tous les deux ne me conviennent pas:
1° Soit j'ai ma liste qui s'affiche dans le bon ordre sur mon classeur ainsi que sur ma liste déroulante... SAUF une fois que j'ai sélectionné une date alors là elle s'affiche dans le format "Standard".
2° Je fais passer mes valeurs sélectionnées d'un format "Date" à un format standard ou texte tout en gardant le formatage désiré ("jj/mm/aaaa").
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 Worksheets("Program Data").Range("Selection_CCBD").Delete Shift:=xlUp 'Je supprime le Range précédent k_CCBD = 9 For i = 3 To Range("Number_CN") + 3 exist_CCBD = 0 For j = 9 To k_CCBD If Worksheets("CN DB").Cells(i, 12) = Worksheets("Program Data").Cells(j, 10) Then 'Recherchant les valeurs uniques, je vérifie si la valeur que je recherche existe déja exist_CCBD = 1 End If Next If exist_CCBD = 0 Then 'Si la valeur n'existe pas alors je la copie dans la liste Worksheets("Program Data").Cells(k_CCBD, 10) = Worksheets("CN DB").Cells(i, 12) k_CCBD = k_CCBD + 1 End If Next Worksheets("Program Data").Range(Worksheets("Program Data").Cells(9, 10), Worksheets("Program Data").Cells(k_CCBD, 10)).Name = "Selection_CCBD" 'Je nomme ma liste Range("Selection_CCBD").Sort Key1:=Worksheets("Program Data").Range("J9"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom ' Je la tri par ordre croissant From_Date.RowSource = "Selection_CCBD" To_Date.RowSource = "Selection_CCBD"
Malheuresement lors de la transformation certaine date se transforme automatiquement et je perds alors l'effet de ma transformation. (en gros j'ai un style qui s'applique automatiquement pour certaine date dans certaine cellule
A la suite de ceci, certain seront bien des chaines de caractéres alors que d'autre seront des dates.
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 Dim CCBD As String 'je crée ma variable qui me servira à transformer ma variable en string Worksheets("Program Data").Range("Selection_CCBD").Delete Shift:=xlUp k_CCBD = 9 For i = 3 To Range("Number_CN") + 3 exist_CCBD = 0 For i = 3 To Range("Number_CN") + 3 exist_CCBD = 0 For j = 9 To k_CCBD If Worksheets("Program Data").Cells(j, 10) = Worksheets("CN DB").Cells(i, 12) Then 'Je vérifie si ma valeur existe exist_CCBD = 1 End If Next If exist_CCBD = 0 Then Worksheets("Program Data").Cells(k_CCBD, 10) = Worksheets("CN DB").Cells(i, 12) ' je la copie si elle n'existe pas k_CCBD = k_CCBD + 1 End If Next Worksheets("Program Data").Range(Worksheets("Program Data").Cells(9, 10), Worksheets("Program Data").Cells(k_CCBD, 10)).Name = "Selection_CCBD" Range("Selection_CCBD").Sort Key1:=Worksheets("Program Data").Range("J9"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom ' je trie For j = 9 To k_CCBD - 1 CCBD = Format(Worksheets("Program Data").Cells(j, 10), "dd/mm/yyyy") Worksheets("Program Data").Cells(j, 10) = CCBD Next 'je transforme mes valeurs From_Date.RowSource = "Selection_CCBD" To_Date.RowSource = "Selection_CCBD"
J'ai fais un test en transformant juste le jours et le mois, pour certain ça marche trés bien (par ex 12/04), et pour d'autre je me retrouve avec 08-Aout.
Donc si quelqu'un aurais une solution pour que je puisse avoir dans ma liste déroulante des dates quand je l'ouvre ainsi qu'une fois ma date sélectionnée ce serait génial!
Merci d'avance
Partager