XL 2016 rowsource combobox

dindin

XLDnaute Occasionnel
Bonjour
comment établir cette même colonne comme rowsource d'un combobox
VB:
ActiveSheet.Range("A:A").AutoFilter Field:=1, Criteria1:=Format(Date, "yyyy") & "_TR_*"
merci
 

job75

XLDnaute Barbatruc
Bonjour dindin, dubarre, le forum,

On parle de RowSource donc il s'agit d'une ComboBox dans un UserForm.

Voici 2 méthodes pour la remplir :
VB:
Sub a()
Dim critere$, col As Range
critere = Format(Date, "yyyy") & "_TR_*"
With ActiveSheet
    Set col = .Columns(26).Cells 'colonne Z, à adapter
    With .UsedRange.Columns(1)
        .AutoFilter Field:=1, Criteria1:=critere
        .SpecialCells(xlCellTypeVisible).Copy col(1)
        .AutoFilter
    End With
End With
If Not CStr(col(1)) Like critere Then col(1).Delete xlUp
ComboBox1.RowSource = IIf(col(1) = "", "", col.CurrentRegion.Address)
End Sub

Sub b()
Dim critere$, tablo, i&, x$, liste$(), n&
critere = Format(Date, "yyyy") & "_TR_*"
tablo = ActiveSheet.UsedRange.Columns(1).Resize(, 2) 'matrice, plus rapide, au moins 2 éléments
For i = 1 To UBound(tablo)
    x = CStr(tablo(i, 1))
    If x Like critere Then
        ReDim Preserve liste(n)
        liste(n) = x
        n = n + 1
    End If
Next
ComboBox1.RowSource = "" 'sécurité
If n Then ComboBox1.List = liste Else ComboBox1.Clear
End Sub
Edit : ajouté dans b ComboBox1.RowSource = "" 'sécurité

A+
 
Dernière édition:

dindin

XLDnaute Occasionnel
Bonjour dindin, dubarre, le forum,

On parle de RowSource donc il s'agit d'une ComboBox dans un UserForm.

Voici 2 méthodes pour la remplir :
VB:
Sub a()
Dim critere$, col As Range
critere = Format(Date, "yyyy") & "_TR_*"
With ActiveSheet
    Set col = .Columns(26).Cells 'colonne Z, à adapter
    With .UsedRange.Columns(1)
        .AutoFilter Field:=1, Criteria1:=critere
        .SpecialCells(xlCellTypeVisible).Copy col(1)
        .AutoFilter
    End With
End With
If Not CStr(col(1)) Like critere Then col(1).Delete xlUp
ComboBox1.RowSource = IIf(col(1) = "", "", col.CurrentRegion.Address)
End Sub

Sub b()
Dim critere$, tablo, i&, x$, liste$(), n&
critere = Format(Date, "yyyy") & "_TR_*"
tablo = ActiveSheet.UsedRange.Columns(1).Resize(, 2) 'matrice, plus rapide, au moins 2 éléments
For i = 1 To UBound(tablo)
    x = CStr(tablo(i, 1))
    If x Like critere Then
        ReDim Preserve liste(n)
        liste(n) = x
        n = n + 1
    End If
Next
ComboBox1.RowSource = "" 'sécurité
If n Then ComboBox1.List = liste Else ComboBox1.Clear
End Sub
Edit : ajouté dans b ComboBox1.RowSource = "" 'sécurité

A+
bonjour
votre code fonctionne mais je vais 'adapter pour qu'il ne copie les données dans la colonne Z
 

Discussions similaires

Réponses
7
Affichages
3 K
Compte Supprimé 979
C

Statistiques des forums

Discussions
311 725
Messages
2 081 940
Membres
101 845
dernier inscrit
annesof