Combobox: ranger par ordre alphabétique

kerlannais

XLDnaute Junior
Bonjour,

Voilà j'ai fait une combobox, mais je ne comprends pas grand chose à VBA la dessus. Et j'aimerai pouvoir dire:

Afficher tout les onglets sauf accueil et methodo
Ranger les onglets par ordre alphabétique

Voici le code de base:

Private Sub ComboBox1_Click()
Sheets(ComboBox1.Value).Activate
End Sub



Private Sub ComboBox1_DropButtonClick()
ComboBox1.Clear
For Each vfeuille In ActiveWorkbook.Sheets
ComboBox1.AddItem vfeuille.Name
Next
End Sub


Merci beaucoup de votre aide
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Combobox: ranger par ordre alphabétique

Bonjour,

http://boisgontierjacques.free.fr/fichiers/Formulaire/Form_ChoixFeuilleTrie1.xls

Code:
Private Sub UserForm_Initialize()
  Dim temp()
  For i = 1 To Sheets.Count
    ReDim Preserve temp(1 To i)
    temp(i) = Sheets(i).Name
  Next i
  n = UBound(temp)
  Call Tri(temp, 1, n)
  Me.ComboBox1.List = temp
  Me.ComboBox1.ListIndex = 0
End Sub
Private Sub ComboBox1_Change()
  m = Me.ComboBox1
  Sheets(m).Select
End Sub

Sub Tri(a, gauc, droi)          ' Quick sort
 ref = a((gauc + droi) \ 2)
 g = gauc: d = droi
 Do
     Do While a(g) < ref: g = g + 1: Loop
     Do While ref < a(d): d = d - 1: Loop
     If g <= d Then
       temp = a(g): a(g) = a(d): a(d) = temp
       g = g + 1: d = d - 1
     End If
 Loop While g <= d
 If g < droi Then Call Tri(a, g, droi)
 If gauc < d Then Call Tri(a, gauc, d)
End Sub


JB
 
Dernière édition:

Robert

XLDnaute Barbatruc
Repose en paix
Re : Combobox: ranger par ordre alphabétique

Bonjour Kerlannais, Jacques, bonjour le forum,

Bien sûr j'arrive après Jacques et sa méthode qui tue par sa rapidité mais que je n'ai malheureusement toujours pas assimilée. je me permets quand même de te proposer une autre solution commentée malgré tout :
Code:
Private Sub ComboBox1_Click()
Sheets(ComboBox1.Value).Activate
End Sub
 
Private Sub ComboBox1_DropButtonClick()
Dim vf() As String 'déclare le tableau de variable vf (Variables Feuilles)
Dim nf As Byte 'déclare la variable nf (Nombre de Feuilles)
Dim temp As String 'déclare la variable temp(TEMPoraire)
Dim x As Byte, y As Byte 'déclare les variables x et y
Dim i As Byte, j As Byte 'déclare les variables i et j
 
ComboBox1.Clear 'vide la ComboBox1
 
nf = Sheets.Count - 3 'définit la variable nf (2 onglets en moins et comme la première valeur est 0, la dernière est le total -1, donc -3)
ReDim vf(nf) 'redimensionne le tableau vf
 
'remplissage d'un tableau dynamique
y = 0 'définit la variable y
For x = 0 To Sheets.Count - 1 'boucle sur le nombre d'onglet (de 0 à nombre d'onglet -1)
    'si le nom de l'onglet est "accueil" ou "methodo" va à l'étiquette "suite" (sans réaliser d'action)
    If Sheets(x + 1).Name = "accueil" Or Sheets(x + 1).Name = "methodo" Then GoTo suite
    vf(y) = Sheets(x + 1).Name 'crée une variable indexée avec le nom de l'onglet
    y = y + 1 'redéfinit la variable y
suite: 'étiquette
Next 'prochain onglet de la boucle
 
'tri alphabétique du tableau dynamique
For i = LBound(vf) To UBound(vf) - 1 'boucle 1 : sur tous les éléments (sauf le dernier) du tableau dynamique
    For j = i + 1 To UBound(vf) 'boucle 2 : sur tous les éléments du tableau dynamique
        If vf(j) < vf(i) Then 'condition : si l élément de la boucle 2 est inférieur à l'élément de la boucle 1
            temp = vf(j) 'définit la variable temp'(élément de la boucle 2)
            vf(j) = vf(i) 'l'élément de la boucle 2 prend la valeur de l'élément de la boucle 1
            vf(i) = temp 'l'élément de la boucle 1 prend la valeur de la variable temp
        End If 'fin de la condition
    Next j 'prochain élément de la boucle 2
Next i 'prochain élément de la boucle 1
 
'remplissage de la ComboBox1
For x = 0 To UBound(vf)
    ComboBox1.AddItem vf(x)
Next x
End Sub
 

kerlannais

XLDnaute Junior
Re : Combobox: ranger par ordre alphabétique

Bonjour robert,

j'ai un probleme à la ligne:

vf(y) = Sheets(x + 1).Name 'crée une variable indexée avec le nom de l'onglet

et j'avoue que je ce code est incomprehensible vu mon niveau donc je ne peux faire de corrections...:(

Bonjour jacques,

j'ai un probleme pas de bug mais ma combobox reste vide:confused:

Merci de votre aide et sinon je laisserai comme ca...
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Combobox: ranger par ordre alphabétique

Bonjour le fil, bonjnour le forum,

Pourrais-tu m'indiquer le message qui s'affiche... ? J'ai testé avant de t'envoyer et ça fonctionnait bien...
 

Pièces jointes

  • kerlannais_v01.xls
    56.5 KB · Affichages: 161
Dernière édition:

Robert

XLDnaute Barbatruc
Repose en paix
Re : Combobox: ranger par ordre alphabétique

Re,

Regarde la pièce jointe dans mon post au dessus. L'erreur peut venir du fait que ton onglet porte un nom différent de accueil ou methodo. Vérifie et adapte le code où le nom des onglets si c'est différent.
 

Discussions similaires

Statistiques des forums

Discussions
312 505
Messages
2 089 070
Membres
104 016
dernier inscrit
Mokson