Bonsoir Thicker,
Peut être que tu préfères travailler avec DAO
Tu ajoutes la bibliothèque suivante ;
"Microsoft DAO 3.51 Objects Librairy"
ATTENTION : Vous allez éprouver des difficultés si les données
de la plage n'appartiennent pas au même type comme par
exemple du Numérique avec du texte. La liste ne contiendra
qu'un type de données...
2 Procédures selon que ta colonne a une étiquette de colonnes ou non.
Si ta plage de cellules a une étiquette de colonne
L'étiquette ne fera pas parti de la liste du combobox
'-------------------------------------------
Private Sub UserForm_Initialize()
'Avec Étiquettes de colonnes
Dim bd As Database, Rst As Recordset, Rg As Range
Dim Requete As String, Titre As String
With Worksheets("Denis")
Set Rg = .Range("A1:A" & .Range("A65356").End(xlUp).Row)
Rg.Name = "NomColonne"
Titre = Rg(1, 1).Text
End With
Set bd = OpenDatabase(ThisWorkbook.Name, False, False, "excel 8.0")
Requete = "SELECT " & Titre & " From NomColonne " & vbCrLf & _
"Where " & Titre & " <> Null " & vbCrLf & _
"Group By " & Titre & " ORDER By " & Titre & ""
Set Rst = bd.OpenRecordset(Requete)
Rst.MoveLast
Rst.MoveFirst
Rst.MoveNext
Do Until Rst.EOF
Me.ComboBox1.AddItem Rst(0)
Rst.MoveNext
Loop
Rst.Close
bd.Close
Set Rg = Nothing
Set Rst = Nothing
Set bd = Nothing
End Sub
'-------------------------------------------
Sans étiquettes de colonne, la première cellule de la plage signifiée
dans la procédure doit être vide. Avec DAO, on ne peut spécifier
explicitement comme ADO que l'étiquette est absente. Pour DAO,
la première donnée est résevée au nom du champ.
'--------------------------------------------
Private Sub UserForm_Initialize()
'Sans étiquettes de colonnes
Dim bd As Database, Rst As Recordset, Rg As Range
Dim Requete As String
With Worksheets("Denis")
.Range("A1:A" & .Range("A65356").End(xlUp).Row).Name "NomColonne"
End With
Set bd = OpenDatabase(ThisWorkbook.Name, False, False, "excel 8.0")
Requete = "SELECT F1 From NomColonne " & vbCrLf & _
"Where F1 <> Null " & vbCrLf & _
"Group By F1 ORDER By F1"
Set Rst = bd.OpenRecordset(Requete)
Rst.MoveLast
Rst.MoveFirst
Do Until Rst.EOF
Me.ComboBox1.AddItem Rst(0)
Rst.MoveNext
Loop
Rst.Close 'ferme le recordset
bd.Close
'Libère la mémoir des objets
Set Rst = Nothing
Set bd = Nothing
Set Rg = Nothing
End Sub
'--------------------------------------------
Salutations!
"Ticker" a écrit dans le message de
news:
Bonsoir à tous
Je viens d'avoir un doute affreux, est ce qu'il est possible que les
petits
gars de chez Microsoft aient oublié de mettre une fonction de tri dans les
listbox dans VBA. Je crois que en VB, il y a une fonction ("sort", je
crois), mais je ne l'ai pas vu dans VBA. Suis je donc obligé de passer par
des cellules ?
Merci de me répondre (j'espère que je me trompe)
Bonsoir Thicker,
Peut être que tu préfères travailler avec DAO
Tu ajoutes la bibliothèque suivante ;
"Microsoft DAO 3.51 Objects Librairy"
ATTENTION : Vous allez éprouver des difficultés si les données
de la plage n'appartiennent pas au même type comme par
exemple du Numérique avec du texte. La liste ne contiendra
qu'un type de données...
2 Procédures selon que ta colonne a une étiquette de colonnes ou non.
Si ta plage de cellules a une étiquette de colonne
L'étiquette ne fera pas parti de la liste du combobox
'-------------------------------------------
Private Sub UserForm_Initialize()
'Avec Étiquettes de colonnes
Dim bd As Database, Rst As Recordset, Rg As Range
Dim Requete As String, Titre As String
With Worksheets("Denis")
Set Rg = .Range("A1:A" & .Range("A65356").End(xlUp).Row)
Rg.Name = "NomColonne"
Titre = Rg(1, 1).Text
End With
Set bd = OpenDatabase(ThisWorkbook.Name, False, False, "excel 8.0")
Requete = "SELECT " & Titre & " From NomColonne " & vbCrLf & _
"Where " & Titre & " <> Null " & vbCrLf & _
"Group By " & Titre & " ORDER By " & Titre & ""
Set Rst = bd.OpenRecordset(Requete)
Rst.MoveLast
Rst.MoveFirst
Rst.MoveNext
Do Until Rst.EOF
Me.ComboBox1.AddItem Rst(0)
Rst.MoveNext
Loop
Rst.Close
bd.Close
Set Rg = Nothing
Set Rst = Nothing
Set bd = Nothing
End Sub
'-------------------------------------------
Sans étiquettes de colonne, la première cellule de la plage signifiée
dans la procédure doit être vide. Avec DAO, on ne peut spécifier
explicitement comme ADO que l'étiquette est absente. Pour DAO,
la première donnée est résevée au nom du champ.
'--------------------------------------------
Private Sub UserForm_Initialize()
'Sans étiquettes de colonnes
Dim bd As Database, Rst As Recordset, Rg As Range
Dim Requete As String
With Worksheets("Denis")
.Range("A1:A" & .Range("A65356").End(xlUp).Row).Name "NomColonne"
End With
Set bd = OpenDatabase(ThisWorkbook.Name, False, False, "excel 8.0")
Requete = "SELECT F1 From NomColonne " & vbCrLf & _
"Where F1 <> Null " & vbCrLf & _
"Group By F1 ORDER By F1"
Set Rst = bd.OpenRecordset(Requete)
Rst.MoveLast
Rst.MoveFirst
Do Until Rst.EOF
Me.ComboBox1.AddItem Rst(0)
Rst.MoveNext
Loop
Rst.Close 'ferme le recordset
bd.Close
'Libère la mémoir des objets
Set Rst = Nothing
Set bd = Nothing
Set Rg = Nothing
End Sub
'--------------------------------------------
Salutations!
"Ticker" <no-spam-ticker.alpha@wanadoo.fr> a écrit dans le message de
news:ONnrP0zmDHA.3024@tk2msftngp13.phx.gbl...
Bonsoir à tous
Je viens d'avoir un doute affreux, est ce qu'il est possible que les
petits
gars de chez Microsoft aient oublié de mettre une fonction de tri dans les
listbox dans VBA. Je crois que en VB, il y a une fonction ("sort", je
crois), mais je ne l'ai pas vu dans VBA. Suis je donc obligé de passer par
des cellules ?
Merci de me répondre (j'espère que je me trompe)
Bonsoir Thicker,
Peut être que tu préfères travailler avec DAO
Tu ajoutes la bibliothèque suivante ;
"Microsoft DAO 3.51 Objects Librairy"
ATTENTION : Vous allez éprouver des difficultés si les données
de la plage n'appartiennent pas au même type comme par
exemple du Numérique avec du texte. La liste ne contiendra
qu'un type de données...
2 Procédures selon que ta colonne a une étiquette de colonnes ou non.
Si ta plage de cellules a une étiquette de colonne
L'étiquette ne fera pas parti de la liste du combobox
'-------------------------------------------
Private Sub UserForm_Initialize()
'Avec Étiquettes de colonnes
Dim bd As Database, Rst As Recordset, Rg As Range
Dim Requete As String, Titre As String
With Worksheets("Denis")
Set Rg = .Range("A1:A" & .Range("A65356").End(xlUp).Row)
Rg.Name = "NomColonne"
Titre = Rg(1, 1).Text
End With
Set bd = OpenDatabase(ThisWorkbook.Name, False, False, "excel 8.0")
Requete = "SELECT " & Titre & " From NomColonne " & vbCrLf & _
"Where " & Titre & " <> Null " & vbCrLf & _
"Group By " & Titre & " ORDER By " & Titre & ""
Set Rst = bd.OpenRecordset(Requete)
Rst.MoveLast
Rst.MoveFirst
Rst.MoveNext
Do Until Rst.EOF
Me.ComboBox1.AddItem Rst(0)
Rst.MoveNext
Loop
Rst.Close
bd.Close
Set Rg = Nothing
Set Rst = Nothing
Set bd = Nothing
End Sub
'-------------------------------------------
Sans étiquettes de colonne, la première cellule de la plage signifiée
dans la procédure doit être vide. Avec DAO, on ne peut spécifier
explicitement comme ADO que l'étiquette est absente. Pour DAO,
la première donnée est résevée au nom du champ.
'--------------------------------------------
Private Sub UserForm_Initialize()
'Sans étiquettes de colonnes
Dim bd As Database, Rst As Recordset, Rg As Range
Dim Requete As String
With Worksheets("Denis")
.Range("A1:A" & .Range("A65356").End(xlUp).Row).Name "NomColonne"
End With
Set bd = OpenDatabase(ThisWorkbook.Name, False, False, "excel 8.0")
Requete = "SELECT F1 From NomColonne " & vbCrLf & _
"Where F1 <> Null " & vbCrLf & _
"Group By F1 ORDER By F1"
Set Rst = bd.OpenRecordset(Requete)
Rst.MoveLast
Rst.MoveFirst
Do Until Rst.EOF
Me.ComboBox1.AddItem Rst(0)
Rst.MoveNext
Loop
Rst.Close 'ferme le recordset
bd.Close
'Libère la mémoir des objets
Set Rst = Nothing
Set bd = Nothing
Set Rg = Nothing
End Sub
'--------------------------------------------
Salutations!
"Ticker" a écrit dans le message de
news:
Bonsoir à tous
Je viens d'avoir un doute affreux, est ce qu'il est possible que les
petits
gars de chez Microsoft aient oublié de mettre une fonction de tri dans les
listbox dans VBA. Je crois que en VB, il y a une fonction ("sort", je
crois), mais je ne l'ai pas vu dans VBA. Suis je donc obligé de passer par
des cellules ?
Merci de me répondre (j'espère que je me trompe)