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

Combobox trié à partir d'une liaison

8 réponses
Avatar
Bruno RCSC
Bonsoir,

Sous Excel 2002.

Dans un formulaire, j'utilise une liste déroulante qui va chercher les
valeurs dans un autre fichier.
Private Sub UserForm_Initialize()
Nom.RowSource = "'C:\BH\Liste et suivi 2008-1.xls'!immat"
End sub

Comment dois je faire pour que dans le formulaire la liste soit triée par
ordre croissant ?

"Immat" est un nom définit avec la fonction Décaler sans tri particulier.

Merci pour votre aide.

BH.

8 réponses

Avatar
LSteph
Bonjour,

Suppose que l'autre classeur soit ouvert pour pouvoir faire simple:

Private Sub UserForm_Initialize()
Dim c As Range
Application.ScreenUpdating = False
Workbooks("monclasseur.xls").Worksheets(3).[maplage].Copy
ActiveWorkbook.Sheets.Add
[b2].PasteSpecial Paste:=xlPasteValues
With Worksheets(1)
.[b2:b9].Sort key1:=.[b2]
End With
For Each c In Range("b2:b" & [b65536].End(xlUp).Row)
ComboBox1.AddItem c
Next
Application.DisplayAlerts = False
ActiveSheet.Delete
Application.DisplayAlerts = True
End Sub

'lSteph


Bonsoir,

Sous Excel 2002.

Dans un formulaire, j'utilise une liste déroulante qui va chercher les
valeurs dans un autre fichier.
Private Sub UserForm_Initialize()
Nom.RowSource = "'C:BHListe et suivi 2008-1.xls'!immat"
End sub

Comment dois je faire pour que dans le formulaire la liste soit triée par
ordre croissant ?

"Immat" est un nom définit avec la fonction Décaler sans tri particulier.

Merci pour votre aide.

BH.




Avatar
LSteph
... dans l'exemple j'avais b2:b9,
With Worksheets(1)
.[b2:b9].Sort key1:=.[b2]
End With
en fait comme plus bas on peut prendre

Range("b2:b" & [b65536].End(xlUp).Row)

...

Bonjour,

Suppose que l'autre classeur soit ouvert pour pouvoir faire simple:

Private Sub UserForm_Initialize()
Dim c As Range
Application.ScreenUpdating = False
Workbooks("monclasseur.xls").Worksheets(3).[maplage].Copy
ActiveWorkbook.Sheets.Add
[b2].PasteSpecial Paste:=xlPasteValues
With Worksheets(1)
.[b2:b9].Sort key1:=.[b2]
End With
For Each c In Range("b2:b" & [b65536].End(xlUp).Row)
ComboBox1.AddItem c
Next
Application.DisplayAlerts = False
ActiveSheet.Delete
Application.DisplayAlerts = True
End Sub

'lSteph


Bonsoir,

Sous Excel 2002.

Dans un formulaire, j'utilise une liste déroulante qui va chercher les
valeurs dans un autre fichier.
Private Sub UserForm_Initialize()
Nom.RowSource = "'C:BHListe et suivi 2008-1.xls'!immat"
End sub

Comment dois je faire pour que dans le formulaire la liste soit triée
par ordre croissant ?

"Immat" est un nom définit avec la fonction Décaler sans tri particulier.

Merci pour votre aide.

BH.





Avatar
JB
Bonjour,

ComboBox alimenté par un source externe:

Private Sub UserForm_Initialize()
'Microsoft ActiveX DataObject doit être coché
' Champ nommé MaBD avec lignes vides
répertoire = ThisWorkbook.Path
Set cnn = New ADODB.Connection
cnn.Open "DRIVER={Microsoft Excel Driver (*.xls)};ReadOnly=1;DBQ=" &
_
répertoire & "" & "ADOsource.xls"
Set rs = cnn.Execute("SELECT nom FROM MaBD WHERE nom<>'' Order By
nom")
Me.ComboBox1.List = Application.Transpose(rs.GetRows)
rs.Close
cnn.Close
Set rs = Nothing
Set cnn = Nothing
End Sub

http://cjoint.com/?ciixX3uGdl

JB

On 7 fév, 21:36, "Bruno RCSC" wrote:
Bonsoir,

Sous Excel 2002.

Dans un formulaire, j'utilise une liste déroulante qui va chercher les
valeurs dans un autre fichier.
Private Sub UserForm_Initialize()
Nom.RowSource = "'C:BHListe et suivi 2008-1.xls'!immat"
End sub

Comment dois je faire pour que dans le formulaire la liste soit triée pa r
ordre croissant ?

"Immat" est un nom définit avec la fonction Décaler sans tri particuli er.

Merci pour votre aide.

BH.


Avatar
Bruno RCSC
Bonjour,

Merci à vous deux pour vos réponses, je vais tester en fin d'après midi..

Peut être que dans le code de JB, j'ai la réponse à une autre question :
Si le fichier qui contient la liste n'est pas ouvert au moment où je saisis
dans le formulaire, j'ai le message d'erreur suivant :
Erreur d'exécution 380
Impossible de définir la propriété RowSource, valeur de propriété non
valide.
Si le fichier est ouvert, c'est OK.

Comment utiliser une liste modifiable qui va chercher des valeurs dans un
autre fichier sans avoir à ouvrir ce fichier ?

Merci.

BH.
Avatar
JB
Dans la solution proposée, le fichier source (ADOsource.xls) n'est pas
ouvert.

http://cjoint.com/?cinaNWVemN

JB

On 8 fév, 12:55, "Bruno RCSC" wrote:
Bonjour,

Merci à vous deux pour vos réponses, je vais tester en fin d'après m idi..

Peut être que dans le code de JB, j'ai la réponse à une autre questi on :
Si le fichier qui contient la liste n'est pas ouvert au moment où je sai sis
dans le formulaire, j'ai le message d'erreur suivant :
Erreur d'exécution 380
Impossible de définir la propriété RowSource, valeur de propriét é non
valide.
Si le fichier est ouvert, c'est OK.

Comment utiliser une liste modifiable qui va chercher des valeurs dans un
autre fichier sans avoir à ouvrir ce fichier ?

Merci.

BH.


Avatar
ats.ccs
Je m'arrache les cheveux !!

JB, votre exemple fonctionne parfaitement.
Sur le même ordinateur, j'ai transposé votre code à mon cas en renommant mon
fichier liaison ADOsource.xls, le nom est bruno1 au lieu de MaBD, le titre de
la colonne est nom.
et j'obtiens un message d'erreur
Erreur d'exécution '-2147217913 (80040e07)
[Microsoft][Pilote ODBC Excel] Type de données incompatible dans
l'expression du critère

Je joins le code :
répertoire = ThisWorkbook.Path
Set cnn = New ADODB.Connection
cnn.Open "DRIVER={Microsoft Excel Driver (*.xls)};ReadOnly=1;DBQ=" & _
répertoire & "" & "ADOsource.xls"
Set rs = cnn.Execute("SELECT nom FROM bruno1 WHERE nom<>'' Order By nom")
Immatriculation.Text = Application.Transpose(rs.GetRows)
rs.Close
cnn.Close
Set rs = Nothing
Set cnn = Nothing

Une explication rationnelle me comblerait.
Merci.
BH.

"JB" wrote:

Dans la solution proposée, le fichier source (ADOsource.xls) n'est pas
ouvert.

http://cjoint.com/?cinaNWVemN

JB

On 8 fév, 12:55, "Bruno RCSC" wrote:
Bonjour,

Merci à vous deux pour vos réponses, je vais tester en fin d'après midi..

Peut être que dans le code de JB, j'ai la réponse à une autre question :
Si le fichier qui contient la liste n'est pas ouvert au moment où je saisis
dans le formulaire, j'ai le message d'erreur suivant :
Erreur d'exécution 380
Impossible de définir la propriété RowSource, valeur de propriété non
valide.
Si le fichier est ouvert, c'est OK.

Comment utiliser une liste modifiable qui va chercher des valeurs dans un
autre fichier sans avoir à ouvrir ce fichier ?

Merci.

BH.






Avatar
JB
-Microsoft ActiveX DataObject doit être coché avec Outils/Référence
-Dans ADOsource.XLS, la BD doit être nommée BRUNO1
-Me.Immatriculation.List = Application.Transpose(rs.GetRows)

JB

On 8 fév, 16:31,
@discussions.microsoft.com> wrote:
Je m'arrache les cheveux !!

JB, votre exemple fonctionne parfaitement.
Sur le même ordinateur, j'ai transposé votre code à mon cas en renom mant mon
fichier liaison ADOsource.xls, le nom est bruno1 au lieu de MaBD, le titre de
la colonne est nom.
et j'obtiens un message d'erreur
Erreur d'exécution '-2147217913 (80040e07)
[Microsoft][Pilote ODBC Excel] Type de données incompatible dans
l'expression du critère

Je joins le code :
répertoire = ThisWorkbook.Path
  Set cnn = New ADODB.Connection
  cnn.Open "DRIVER={Microsoft Excel Driver (*.xls)};ReadOnly=1;DBQ =" & _
      répertoire & "" & "ADOsource.xls"
  Set rs = cnn.Execute("SELECT nom FROM bruno1 WHERE nom<>'' Order By nom")
 Immatriculation.Text = Application.Transpose(rs.GetRows)
 rs.Close
 cnn.Close
 Set rs = Nothing
 Set cnn = Nothing

Une explication rationnelle me comblerait.
Merci.
BH.



"JB" wrote:
Dans la solution proposée, le fichier source (ADOsource.xls) n'est pas
ouvert.

http://cjoint.com/?cinaNWVemN

JB

On 8 fév, 12:55, "Bruno RCSC" wrote:
Bonjour,

Merci à vous deux pour vos réponses, je vais tester en fin d'apr ès midi..

Peut être que dans le code de JB, j'ai la réponse à une autre qu estion :
Si le fichier qui contient la liste n'est pas ouvert au moment où je saisis
dans le formulaire, j'ai le message d'erreur suivant :
Erreur d'exécution 380
Impossible de définir la propriété RowSource, valeur de propri été non
valide.
Si le fichier est ouvert, c'est OK.

Comment utiliser une liste modifiable qui va chercher des valeurs dans un
autre fichier sans avoir à ouvrir ce fichier ?

Merci.

BH.- Masquer le texte des messages précédents -



- Afficher le texte des messages précédents -




Avatar
ats.ccs
Je pense avoir trouver l'origine du problème :

Tout fonctionne parfaitement si la liste est alphanumérique.
Si elle est numérique (je gère des plaques d'immatriculations), le message
d'erreur s'affiche.
Y a t'il une solution ?
Merci.

BH.