remplissage combobox avec année

harzer

XLDnaute Nouveau
Bonjour à tous,
Merci à tous ceux qui m’apporterons leurs savoir-faire.
Mon code pour remplir ma combobox avec des années fonctionnait très bien parce que l’année en question se trouvait toujours après le caractère " / " de toutes les cellules de la colonne A.
Maintenant, il ne fonctionne (dirais-je) qu’à moitié bien, ceci pour des raisons qui m’oblige à mettre l’année en question un peu plus loin, donc, elle ne se trouve plus après le caractère " / "
Pour votre information, dans toute la colonne A, l’année pour remplir ma combobox se trouve toujours avant un "espace" suivi soit de la lettre "F" ou la lettre "M".
Un exemple vaut mieux qu’un long discours :
1er exemple avec le contenu de la cellule A2, HJU13-001/2004 M. Dans ce cas, l’année se trouve avant un "espace" et la lettre "M".
2e exemple avec le contenu de la cellule A71, HJU13-151/14 2015 F. Dans ce cas, l’année se trouve avant un "espace" suivi de la lettre "F".
Merci de m’aider.
Bien à vous.
 

Pièces jointes

  • ComboboxAnnée.xls
    81 KB · Affichages: 42

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : remplissage combobox avec année

Bonjour harzer,

comme ceci:

Code:
Private Sub RempListCombo(Controlebox As MSForms.Control, Feuil As String, Cola As String, Valeur1 As String)
Dim col As New Collection

With ActiveWorkbook.Worksheets("Parents") 'Worksheets(parents)
On Error Resume Next
For Each c In .Range(Cola & "2:" & Cola & .Range(Cola & .Rows.count).End(xlUp).Row)
    If InStr(c, Valeur1) > 0 Then

        pos = InStr(c, "/")
        If pos > 0 Then
            temp = Mid(c, Len(c) - 5, 4)
            col.Add temp, CStr(temp)
        End If
    End If
Next c
    ReDim Listdata(col.count - 1)
For i = 0 To col.count - 1
    Listdata(i) = col(i + 1)
Next i

'Dim M As Long
'Dim N As Long
'Dim Temp As String
For n = 0 To UBound(Listdata)
 For m = 0 To UBound(Listdata)
    If Listdata(m) > Listdata(n) Then
       temp = Listdata(n)
       Listdata(n) = Listdata(m)
       Listdata(m) = temp
    End If
 Next m
Next n
Controlebox.List = Listdata

End With
On Error GoTo 0

End Sub

la modification concerne la ligne: temp = Mid(c, pos + 1, 4)

qui a été remplacée par: temp = Mid(c, Len(c) - 5, 4)


à+
Philippe
 

Paf

XLDnaute Barbatruc
Re : remplissage combobox avec année

Bonjour,

Dans la Private Sub RempListCombo(Controlebox As MSForms.Control, Feuil As String, Cola As String, Valeur1 As String) de l'USF la boucle
Code:
For Each c In .Range(Cola & "2:" & Cola & .Range(Cola & .Rows.count).End(xlUp).Row)
    If InStr(c, Valeur1) > 0 Then

        pos = InStr(c, "/")
        If pos > 0 Then
            temp = Mid(c, pos + 1, 4)
            col.Add temp, CStr(temp)
        End If
    End If
Next c
pourrait être réécrite comme ceci
Code:
ComboBox1.Clear
For Each c In .Range(Cola & "2:" & Cola & .Range(Cola & .Rows.count).End(xlUp).Row)
    If Right(c, 1) = Valeur1 Then col.Add Mid(c, Len(c) - 5, 4), CStr(Mid(c, Len(c) - 5, 4))
Next c

pour simplifier et prendre en compte l'un ou l'autre format, à la condition que N° BAGUE se termine toujours par ce format : JJJJ S où JJJJ est l'année et S = F ou M

A+


Edit: Bonjour phlaurent55
 
Dernière édition:

harzer

XLDnaute Nouveau
Re : remplissage combobox avec année

Bonjour phlaurent55, bonjour Paf ainsi que le forum.
Merci à tous les deux, vos deux propositions fonctionnent très bien.
Quel plaisir d'avoir des gens comme vous qui aident les autres.
Merci encore et au plaisir.
Salutations.
 

Discussions similaires

Statistiques des forums

Discussions
311 715
Messages
2 081 822
Membres
101 821
dernier inscrit
hybroxis