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...
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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" <gaston.py@wanadoo.fr> a écrit dans le message de news:bmu9b6$3dv$1@news-reader5.wanadoo.fr...
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...
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...