OVH Cloud OVH Cloud

row source

2 réponses
Avatar
gaston.py
bonjour

un classeur Xl2000 est constitué de 50 onglets
les trois premiers caractères du nom de chaque onglet correspondent à un
code catégorie.
un formulaire contient: une zone de liste, des boutons d'option.

je souhaite limiter le nombre de lignes de la zone de liste au nom des
onglets filtrés suivant
le code catégorie sélectionné par un des boutons option.
je patine un peu sur le code VB!!!, je voulais passer au prélable par un
filtre mais...

merci d'un p'tit conseil.
gaston

2 réponses

Avatar
Denis Michon
Bonjour Gaston,


Si j'ai compris selon les 3 premières lettres de tes onglets de feuille, tu aimerais ajouter dans un combobox seulement
les noms des feuilles selon un filtre sur ces 3 premières lettes déterminer par un bouton radio.

Suggestion :

Donne à la propriété Caption de tes boutons Radio, les 3 premières lettres des feuilles représentant chacun un filtre
possible à appliquer.

Moi, j'ai mis le code sous un bouton de commande, mais la procédure peut être appelé différemment selon tes besoins.

Cela se veut un exemple.

'-------------------------------
Private Sub CommandButton1_Click()

Dim A As String, Tblo(), B As Integer
For Each C In UserForm1.Controls
If TypeOf C Is MSForms.OptionButton Then
Select Case C.Value
Case Is = True
A = C.Caption
Exit For
End Select
End If
Next

For Each C In Worksheets
If UCase(Left(C.Name, 3)) = UCase(A) Then
ReDim Preserve Tblo(B + 1)
B = B + 1
Tblo(B) = C.Name
End If

Next
On Error Resume Next
If UBound(Tblo) <> 0 Then
If Err <> 0 Then
Me.ComboBox1.AddItem "Pas de données"
Err = 0
Exit Sub
Else
Me.ComboBox1.List = BubbleSort(Tblo)
End If
End If
End Sub
'-------------------------------
'pour filtrer les noms des feuilles par ordre croissant
'------------------------------
Function BubbleSort(List())
Dim First As Integer, Last As Integer
Dim i As Integer, j As Integer
Dim Temp

First = LBound(List)
Last = UBound(List)
For i = First To Last - 1
For j = i + 1 To Last
If List(i) > List(j) Then
Temp = List(j)
List(j) = List(i)
List(i) = Temp
End If
Next j
Next i
BubbleSort = List
End Function
'------------------------------


Salutations!







"gaston.py" a écrit dans le message de news:bmu9b6$3dv$
bonjour

un classeur Xl2000 est constitué de 50 onglets
les trois premiers caractères du nom de chaque onglet correspondent à un
code catégorie.
un formulaire contient: une zone de liste, des boutons d'option.

je souhaite limiter le nombre de lignes de la zone de liste au nom des
onglets filtrés suivant
le code catégorie sélectionné par un des boutons option.
je patine un peu sur le code VB!!!, je voulais passer au prélable par un
filtre mais...

merci d'un p'tit conseil.
gaston
Avatar
gaston.py
salut Denis

merci pour ton code qui me convient parfaitement

bonne soirée
gaston