OVH Cloud OVH Cloud

excel & listes déroulantes

1 réponse
Avatar
seb
Bonjour,

J'ai besoin d'utiliser excel pour de la saisie de données destinées ensuite
à être importées dans une base de données.

Seulement ma base de données possède des champs croisés entre différentes
tables. Comment reproduire cela sous excel ?
Il faudrait que je puisse définir des champs sous forme de listes
déroulantes dons les données sont modifiables (issues d'autres feuilles de
calcul par exemple), et mieux encore, l'utilisation de listes à selection
multiple.

Par exemple, pour remplir la colonne "zone géographique", je souhaiterait
avoir une liste déroulante donc les données serait issues d'une autre
feuille de calcul. Mieux encore serait la possibilité de sélectionner
plusieurs lignes dans la liste déroulante.

Est-ce possible sous excel ?
Faut-il nécessairement passer par VBA ou y a-t-il ce qui faut directement
dans les fonctionnalités de base de excel ?

merci d'avance,
seb

1 réponse

Avatar
MichDenis
Je n'ai pas vraiment tout compris, mais si tu cherches à
renseigner un contrôle "listBox" à colonne multiples
dans une feuille de calcul avec des données de colonnes
non adjacentes provenant d'un même tableau, tu peux
utiliser ceci :

P.S- Comme la procédure est écrite, les colonnes sur
lequellles doivent s'effecteur la requête ne doivent pas
avoir des lignes vides !

Tu dois ajouter la bibliothèque suivante à ton projet :
"Microsoft Activex Data Object 2.x Librairy"
'----------------------------------
Sub MaRequêteAvecADO()

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

'Fichier sur lequel se fera la requête :
File = ThisWorkbook.FullName

'Nom de la feuille du fichier où sont les données
'Dans la requête, j'utilise la variable.
NomFeuille = "denis"

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

'La requête qui sera exécutée.
'Titre1, titre4 = Étiquette des colonnes ....
Requete = "SELECT Titre1, Titre4 From [" & NomFeuille & "$]"

Rst.Open Requete, Conn, adOpenForwardOnly, adLockOptimistic

'Copie les étiquettes du recordset vers Excel
With Worksheets("Feuil1")
With .Shapes("ListBox1").OLEFormat.Object.Object
.Clear
.ColumnCount = 2
.ColumnWidths = "50;50"
.List = Application.Transpose(Rst.GetRows)
End With
End With

Rst.Close: Conn.Close
Set Rst = Nothing: Set Conn = Nothing

End Sub
'----------------------------------




"seb" a écrit dans le message de news: O8$
Bonjour,

J'ai besoin d'utiliser excel pour de la saisie de données destinées ensuite
à être importées dans une base de données.

Seulement ma base de données possède des champs croisés entre différentes
tables. Comment reproduire cela sous excel ?
Il faudrait que je puisse définir des champs sous forme de listes
déroulantes dons les données sont modifiables (issues d'autres feuilles de
calcul par exemple), et mieux encore, l'utilisation de listes à selection
multiple.

Par exemple, pour remplir la colonne "zone géographique", je souhaiterait
avoir une liste déroulante donc les données serait issues d'une autre
feuille de calcul. Mieux encore serait la possibilité de sélectionner
plusieurs lignes dans la liste déroulante.

Est-ce possible sous excel ?
Faut-il nécessairement passer par VBA ou y a-t-il ce qui faut directement
dans les fonctionnalités de base de excel ?

merci d'avance,
seb