[RESOLU] Zone de liste [tout et Year(date)]

cathodique

XLDnaute Barbatruc
Bonjour,:)

Je voudrais faire afficher dans une zone de liste, le mot 'tout" et les années des dates se trouvant sur la feuille 'bd'. Et pouvoir afficher mon choix dans la fenêtre de la zone de liste.

J'arrive à afficher les années, mais je bute pour ajouter 'tout' dans la zone de liste et afficher mon choix dans cette dernière.
VB:
Option Explicit

Private Sub ComboBox1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Dim F As Worksheet, d As Object, dl As Long, Tb, i As Long
Set d = CreateObject("Scripting.Dictionary")
Set F = Worksheets("bd")
dl = F.Range("A" & Rows.Count).End(xlUp).Row
Tb = F.Range("A2:A" & dl).Value2
For i = LBound(Tb) To UBound(Tb)
        If Not d.exists(Year(Tb(i, 1))) Then d(Year(Tb(i, 1))) = ""
  Next i
Me.ComboBox1.List = d.Keys
End Sub

En vous remerciant.
 

Pièces jointes

  • Classeur1.xlsm
    72.9 KB · Affichages: 33

ChTi160

XLDnaute Barbatruc
Bonjour Cath
Bonjour le Fil ,Le Forum
Oups pierrejean , on s'est croisé lol
Sensiblement la même chose Lol
Une approche :
VB:
Private Sub ComboBox1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Dim F As Worksheet, d As Object, dl As Long, Tb, i As Long
Set d = CreateObject("Scripting.Dictionary")
Set F = Worksheets("bd")
dl = F.Range("A" & Rows.Count).End(xlUp).Row
Tb = F.Range("A2:A" & dl).Value2
       d("TOUT") = "" 'ajouter
For i = LBound(Tb) To UBound(Tb)
        If Not d.exists(Year(Tb(i, 1))) Then d(Year(Tb(i, 1))) = ""
  Next i
Me.ComboBox1.List = d.Keys
End Sub

Bonne fin de Journée
Amicalement
jean marie
 

cathodique

XLDnaute Barbatruc
Bonjour cathodique

A tester:
Pierrejean;) bonjour,
ça a planté sur cette ligne
Sheets("txt").Select 'bug ici n'appartient pas à la selection
car il n'y a pas de feuille 'txt'. En neutralisant cette ligne et réactivant la feuille 'consultation' le code fonctionne bien.
Sinon, j'avoue ne jamais avoir rencontrer cette syntaxe: d("Tout") = ""
Merci de me l'expliquer.

Bien à toi:) 1000 mercis
 

cathodique

XLDnaute Barbatruc
Bonjour Cath
Bonjour le Fil ,Le Forum
Oups pierrejean , on s'est croisé lol
Sensiblement la même chose Lol
Une approche :
VB:
Private Sub ComboBox1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Dim F As Worksheet, d As Object, dl As Long, Tb, i As Long
Set d = CreateObject("Scripting.Dictionary")
Set F = Worksheets("bd")
dl = F.Range("A" & Rows.Count).End(xlUp).Row
Tb = F.Range("A2:A" & dl).Value2
       d("TOUT") = "" 'ajouter
For i = LBound(Tb) To UBound(Tb)
        If Not d.exists(Year(Tb(i, 1))) Then d(Year(Tb(i, 1))) = ""
  Next i
Me.ComboBox1.List = d.Keys
End Sub

Bonne fin de Journée
Amicalement
jean marie
Merci beaucoup Jean marie;),
En effet, sensiblement identique au code de Pierrejean, a une différence la sélection ne se met pas dans la zone de liste (du moins juste la première fois ensuite impossible de la changer).

Même demande pour cette ligne : d("TOUT") = "" , une explication stp pour dormir moins bête aujourd'hui.:oops:

Encore merci, très gentil de ta part.:)
 

Discussions similaires

Statistiques des forums

Discussions
312 338
Messages
2 087 394
Membres
103 537
dernier inscrit
alisafred974