Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Listbox et affichage

3 réponses
Avatar
Hubert
Bonjour !
Je voudrais afficher dans une listbox des cellules ou groupe de cellules
provenant d'un classeur fermé, est-ce possible?
J'ai cette formule qui me permet d'afficher des données de cellules "nomées"
venant du classeur ou se trouve l'userform : Me.Listbox1.RowSource =
"Feuil1!Liste" ça marche bien mais cela m'oblige à importer des donnés dans
la feuil1 du classeur. Merci d'avance !!!
Cordialement.

3 réponses

Avatar
MsNews
Bonjour Hubert,

Voici un exemple, pour un combobox situé sur la feuil1 d'un classeur.
Il ne te reste plus qu'à adapter. IL est possible d'ajouter un gestion d'erreur
à tout cela si besoin il y a.

Tu dois ajouter la référence suivante à ton projet :

"Microsoft Activex Data objets 2.0 Librairy"

'---------------------------------------
Sub Renseigner_Le_Combobox()

Dim CheminFichier As String
Dim NomDeLaPlage As String

CheminFichier = "C:ExcelNomDufichier.xls!
NomDeLaPlage = "Toto"
'Toto doit représenter la plage de données(colonne) de ton fichier fermé
'où sont les données pour le combobox. Le NOM de la plage
'doit être celui de L'ÉTIQUETTE DE LA COLONNE.

With Worksheets("Feuil1")
'S'assure que le combobox n'affiche aucune entrée
.ListIndex = -1
'Vide le contenu du combobox
.Clear
'Remplir le combobox à l'aide de la fonction "MaListe"
.List = MaListe(NomDeLaPlage, CheminFichier)
End With
Set Rg = Nothing
End Sub
'---------------------------------------


Dans un module standard :
'---------------------------------------
Public Function MaListe(ByVal NomColonne As String, Fichier As String) As Variant

Dim Conn As ADODB.Connection, Rst As New ADODB.Recordset
Dim Requete As String

Requete = "SELECT " & NomColonne & " From " & NomColonne & "" _
& vbCrLf & "Where " & NomColonne & " <> Null " & vbCrLf & _
"Group By " & NomColonne

Set Conn = New ADODB.Connection
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Fichier & ";" & _
"Extended Properties=""Excel 8.0;HDR=Yes;"""

Rst.Open Requete, Conn, adOpenForwardOnly, adLockOptimistic

MaListe = Application.Transpose(Rst.GetRows)
Rst.Close: Set Rst = Nothing
Conn.Close: Set Conn = Nothing

End Function
'---------------------------------------






"Hubert" a écrit dans le message de news:

Bonjour !
Je voudrais afficher dans une listbox des cellules ou groupe de cellules
provenant d'un classeur fermé, est-ce possible?
J'ai cette formule qui me permet d'afficher des données de cellules "nomées"
venant du classeur ou se trouve l'userform : Me.Listbox1.RowSource "Feuil1!Liste" ça marche bien mais cela m'oblige à importer des donnés dans
la feuil1 du classeur. Merci d'avance !!!
Cordialement.
Avatar
Hubert
bonjour
J'ai essayé, mais je n'y arrive pas, trop compliqué pour moi je pense !!
Merci tout de meme !!
Cordialement

"MsNews" wrote:

Bonjour Hubert,

Voici un exemple, pour un combobox situé sur la feuil1 d'un classeur.
Il ne te reste plus qu'à adapter. IL est possible d'ajouter un gestion d'erreur
à tout cela si besoin il y a.

Tu dois ajouter la référence suivante à ton projet :

"Microsoft Activex Data objets 2.0 Librairy"

'---------------------------------------
Sub Renseigner_Le_Combobox()

Dim CheminFichier As String
Dim NomDeLaPlage As String

CheminFichier = "C:ExcelNomDufichier.xls!
NomDeLaPlage = "Toto"
'Toto doit représenter la plage de données(colonne) de ton fichier fermé
'où sont les données pour le combobox. Le NOM de la plage
'doit être celui de L'ÉTIQUETTE DE LA COLONNE.

With Worksheets("Feuil1")
'S'assure que le combobox n'affiche aucune entrée
.ListIndex = -1
'Vide le contenu du combobox
.Clear
'Remplir le combobox à l'aide de la fonction "MaListe"
.List = MaListe(NomDeLaPlage, CheminFichier)
End With
Set Rg = Nothing
End Sub
'---------------------------------------


Dans un module standard :
'---------------------------------------
Public Function MaListe(ByVal NomColonne As String, Fichier As String) As Variant

Dim Conn As ADODB.Connection, Rst As New ADODB.Recordset
Dim Requete As String

Requete = "SELECT " & NomColonne & " From " & NomColonne & "" _
& vbCrLf & "Where " & NomColonne & " <> Null " & vbCrLf & _
"Group By " & NomColonne

Set Conn = New ADODB.Connection
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Fichier & ";" & _
"Extended Properties=""Excel 8.0;HDR=Yes;"""

Rst.Open Requete, Conn, adOpenForwardOnly, adLockOptimistic

MaListe = Application.Transpose(Rst.GetRows)
Rst.Close: Set Rst = Nothing
Conn.Close: Set Conn = Nothing

End Function
'---------------------------------------






"Hubert" a écrit dans le message de news:

Bonjour !
Je voudrais afficher dans une listbox des cellules ou groupe de cellules
provenant d'un classeur fermé, est-ce possible?
J'ai cette formule qui me permet d'afficher des données de cellules "nomées"
venant du classeur ou se trouve l'userform : Me.Listbox1.RowSource > "Feuil1!Liste" ça marche bien mais cela m'oblige à importer des donnés dans
la feuil1 du classeur. Merci d'avance !!!
Cordialement.





Avatar
MsNews
Bonjour Hubert,

Pour ce qui est de la référence :

Tu ouvres Visual basic editor et à partir de la barre de menu de cette fenêtre, Outils / référence et tu coches la
référence mentionnée : "Microsoft Activex Data Object 2.0 librairy"

Concernant La Fonction "Public Function MaListe() As Variant", tu n'as qu'à la copier dans un module standard de ton
classeur.

Pour ce qui est de la procédure : "Sub Renseigner_Le_Combobox()" , Tu n'as qu'à modifier le nom de la feuille où se
trouve ta listBox ( ce contrôle doit provenir de la barre d'outils Contrôle et NON formulaire.

Comme mon exemple est fait pour un combobox, tu n'as qu'à changer le combobox pour un contrôle LisBox dans la procédure
... le résultat est le même !

L'essentiel de la procédure est cette ligne de code :
.List = MaListe(NomDeLaPlage, CheminFichier)

NomDeLaPlage = Pour que cette variable, tu dois entrer le nom de la plage nommée de ton classeur fermé.
Cependant, le nom que tu as choisis pour cette plage de cellule doit être en même temps l'étiquette de colonne des
données de ton classeur fermé.

Exemple : Le nom de la plage nommée du classeur fermé représentant la colonne s'appelle "Toto"
La première cellule (l'étiquette de colonne) de cette colonne doit avoir "Toto" comme nom.

Ce qui précède n'est pas obligatoire mais dans ce cas ci, ce l'est à cause de la façon dont est écrite la requête de la
fonction.

Si tu désires tu peux écrire cette ligne de cette façon :

.List = MaListe("Toto", "C:LeCheminLeFichier.xls")
"Toto" est le nom de la plage nommée du classeur fermé.
Si tu as un problème spécifique... il faudra donner plus de détails et les messages d'erreur que tu as.


Salutations!










"Hubert" a écrit dans le message de news:

bonjour
J'ai essayé, mais je n'y arrive pas, trop compliqué pour moi je pense !!
Merci tout de meme !!
Cordialement

"MsNews" wrote:

Bonjour Hubert,

Voici un exemple, pour un combobox situé sur la feuil1 d'un classeur.
Il ne te reste plus qu'à adapter. IL est possible d'ajouter un gestion d'erreur
à tout cela si besoin il y a.

Tu dois ajouter la référence suivante à ton projet :

"Microsoft Activex Data objets 2.0 Librairy"

'---------------------------------------
Sub Renseigner_Le_Combobox()

Dim CheminFichier As String
Dim NomDeLaPlage As String

CheminFichier = "C:ExcelNomDufichier.xls!
NomDeLaPlage = "Toto"
'Toto doit représenter la plage de données(colonne) de ton fichier fermé
'où sont les données pour le combobox. Le NOM de la plage
'doit être celui de L'ÉTIQUETTE DE LA COLONNE.

With Worksheets("Feuil1")
'S'assure que le combobox n'affiche aucune entrée
.ListIndex = -1
'Vide le contenu du combobox
.Clear
'Remplir le combobox à l'aide de la fonction "MaListe"
.List = MaListe(NomDeLaPlage, CheminFichier)
End With
Set Rg = Nothing
End Sub
'---------------------------------------


Dans un module standard :
'---------------------------------------
Public Function MaListe(ByVal NomColonne As String, Fichier As String) As Variant

Dim Conn As ADODB.Connection, Rst As New ADODB.Recordset
Dim Requete As String

Requete = "SELECT " & NomColonne & " From " & NomColonne & "" _
& vbCrLf & "Where " & NomColonne & " <> Null " & vbCrLf & _
"Group By " & NomColonne

Set Conn = New ADODB.Connection
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Fichier & ";" & _
"Extended Properties=""Excel 8.0;HDR=Yes;"""

Rst.Open Requete, Conn, adOpenForwardOnly, adLockOptimistic

MaListe = Application.Transpose(Rst.GetRows)
Rst.Close: Set Rst = Nothing
Conn.Close: Set Conn = Nothing

End Function
'---------------------------------------






"Hubert" a écrit dans le message de news:

Bonjour !
Je voudrais afficher dans une listbox des cellules ou groupe de cellules
provenant d'un classeur fermé, est-ce possible?
J'ai cette formule qui me permet d'afficher des données de cellules "nomées"
venant du classeur ou se trouve l'userform : Me.Listbox1.RowSource > "Feuil1!Liste" ça marche bien mais cela m'oblige à importer des donnés dans
la feuil1 du classeur. Merci d'avance !!!
Cordialement.