Liaison avec un fichier pour alimenter une combobox
2 réponses
ats.ccs
Bonjour,
Sous Excel 2002,
Je souhaite que dans un formulaire une combobox soit alimentée par une liste
d'un autre fichier et si possible triée.
Si je n'ouvre pas préalablement à la saisie du formulaire, le fichier qui
contient la liste, j'obtiens un message d'erreur.
Grace à la contribution de JB, j'ai obtenu le code suivant qui fonctionne
parfaitement SAUF si la liste contient des chiffres.
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
Dans l'exemple transmis par JB, si je prends les champs nom ou prenom, c'est
parfait, si je prends le champs salaire, j'obtiens :
Erreur d'exécution '-2147217913 (80040e07)
[Microsoft][Pilote ODBC Excel] Type de données incompatible dans
l'expression du critère.
Gérant des plaques d'immatriculation, je souhaiterais que ma combobox se
mette à jour sans avoir à ouvrir le fichier contenant la liste des plaques.
Quel est le code approprié ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
JB
Bonjour,
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 salaire FROM MaBD WHERE salaire<>0 Order By salaire") Me.ComboBox1.List = Application.Transpose(rs.GetRows) rs.Close cnn.Close Set rs = Nothing Set cnn = Nothing End Sub
JB On 11 fév, 12:29, wrote:
Bonjour,
Sous Excel 2002,
Je souhaite que dans un formulaire une combobox soit alimentée par une l iste d'un autre fichier et si possible triée. Si je n'ouvre pas préalablement à la saisie du formulaire, le fichier qui contient la liste, j'obtiens un message d'erreur. Grace à la contribution de JB, j'ai obtenu le code suivant qui fonctionn e parfaitement SAUF si la liste contient des chiffres. 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 no m") Me.ComboBox1.List = Application.Transpose(rs.GetRows) rs.Close cnn.Close Set rs = Nothing Set cnn = Nothing
Dans l'exemple transmis par JB, si je prends les champs nom ou prenom, c'e st parfait, si je prends le champs salaire, j'obtiens : Erreur d'exécution '-2147217913 (80040e07) [Microsoft][Pilote ODBC Excel] Type de données incompatible dans l'expression du critère. Gérant des plaques d'immatriculation, je souhaiterais que ma combobox se mette à jour sans avoir à ouvrir le fichier contenant la liste des pla ques. Quel est le code approprié ?
Merci pour votre aide. BH.
Bonjour,
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 salaire FROM MaBD WHERE salaire<>0
Order By salaire")
Me.ComboBox1.List = Application.Transpose(rs.GetRows)
rs.Close
cnn.Close
Set rs = Nothing
Set cnn = Nothing
End Sub
JB
On 11 fév, 12:29, ats....@hotmail.fr
<atsccshotmai...@discussions.microsoft.com> wrote:
Bonjour,
Sous Excel 2002,
Je souhaite que dans un formulaire une combobox soit alimentée par une l iste
d'un autre fichier et si possible triée.
Si je n'ouvre pas préalablement à la saisie du formulaire, le fichier qui
contient la liste, j'obtiens un message d'erreur.
Grace à la contribution de JB, j'ai obtenu le code suivant qui fonctionn e
parfaitement SAUF si la liste contient des chiffres.
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 no m")
Me.ComboBox1.List = Application.Transpose(rs.GetRows)
rs.Close
cnn.Close
Set rs = Nothing
Set cnn = Nothing
Dans l'exemple transmis par JB, si je prends les champs nom ou prenom, c'e st
parfait, si je prends le champs salaire, j'obtiens :
Erreur d'exécution '-2147217913 (80040e07)
[Microsoft][Pilote ODBC Excel] Type de données incompatible dans
l'expression du critère.
Gérant des plaques d'immatriculation, je souhaiterais que ma combobox se
mette à jour sans avoir à ouvrir le fichier contenant la liste des pla ques.
Quel est le code approprié ?
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 salaire FROM MaBD WHERE salaire<>0 Order By salaire") Me.ComboBox1.List = Application.Transpose(rs.GetRows) rs.Close cnn.Close Set rs = Nothing Set cnn = Nothing End Sub
JB On 11 fév, 12:29, wrote:
Bonjour,
Sous Excel 2002,
Je souhaite que dans un formulaire une combobox soit alimentée par une l iste d'un autre fichier et si possible triée. Si je n'ouvre pas préalablement à la saisie du formulaire, le fichier qui contient la liste, j'obtiens un message d'erreur. Grace à la contribution de JB, j'ai obtenu le code suivant qui fonctionn e parfaitement SAUF si la liste contient des chiffres. 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 no m") Me.ComboBox1.List = Application.Transpose(rs.GetRows) rs.Close cnn.Close Set rs = Nothing Set cnn = Nothing
Dans l'exemple transmis par JB, si je prends les champs nom ou prenom, c'e st parfait, si je prends le champs salaire, j'obtiens : Erreur d'exécution '-2147217913 (80040e07) [Microsoft][Pilote ODBC Excel] Type de données incompatible dans l'expression du critère. Gérant des plaques d'immatriculation, je souhaiterais que ma combobox se mette à jour sans avoir à ouvrir le fichier contenant la liste des pla ques. Quel est le code approprié ?
Merci pour votre aide. BH.
ats.ccs
Bonsoir,
Encore besoin de vous.
Cela fonctionne parfaitement dans un premier formulaire.
Dans un autre fichier, j'obtiens ce message d'erreur sur la ligne Set cnn = New ADODB.Connection Erreur de compilation / Type défini par l'utilisateur non défini Je précise que je fais appel à la meme liaison, avec les memes noms, c'est "un simple copier/coller" dans un formulaire légérement différent sur le meme ordinateur.
Pourquoi ?
Un grand merci pour votre aide.
BH.
"JB" wrote:
Bonjour,
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 salaire FROM MaBD WHERE salaire<>0 Order By salaire") Me.ComboBox1.List = Application.Transpose(rs.GetRows) rs.Close cnn.Close Set rs = Nothing Set cnn = Nothing End Sub
JB On 11 fév, 12:29, wrote:
Bonjour,
Sous Excel 2002,
Je souhaite que dans un formulaire une combobox soit alimentée par une liste d'un autre fichier et si possible triée. Si je n'ouvre pas préalablement à la saisie du formulaire, le fichier qui contient la liste, j'obtiens un message d'erreur. Grace à la contribution de JB, j'ai obtenu le code suivant qui fonctionne parfaitement SAUF si la liste contient des chiffres. 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
Dans l'exemple transmis par JB, si je prends les champs nom ou prenom, c'est parfait, si je prends le champs salaire, j'obtiens : Erreur d'exécution '-2147217913 (80040e07) [Microsoft][Pilote ODBC Excel] Type de données incompatible dans l'expression du critère. Gérant des plaques d'immatriculation, je souhaiterais que ma combobox se mette à jour sans avoir à ouvrir le fichier contenant la liste des plaques. Quel est le code approprié ?
Merci pour votre aide. BH.
Bonsoir,
Encore besoin de vous.
Cela fonctionne parfaitement dans un premier formulaire.
Dans un autre fichier, j'obtiens ce message d'erreur sur la ligne
Set cnn = New ADODB.Connection
Erreur de compilation / Type défini par l'utilisateur non défini
Je précise que je fais appel à la meme liaison, avec les memes noms, c'est
"un simple copier/coller" dans un formulaire légérement différent sur le meme
ordinateur.
Pourquoi ?
Un grand merci pour votre aide.
BH.
"JB" wrote:
Bonjour,
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 salaire FROM MaBD WHERE salaire<>0
Order By salaire")
Me.ComboBox1.List = Application.Transpose(rs.GetRows)
rs.Close
cnn.Close
Set rs = Nothing
Set cnn = Nothing
End Sub
JB
On 11 fév, 12:29, ats....@hotmail.fr
<atsccshotmai...@discussions.microsoft.com> wrote:
Bonjour,
Sous Excel 2002,
Je souhaite que dans un formulaire une combobox soit alimentée par une liste
d'un autre fichier et si possible triée.
Si je n'ouvre pas préalablement à la saisie du formulaire, le fichier qui
contient la liste, j'obtiens un message d'erreur.
Grace à la contribution de JB, j'ai obtenu le code suivant qui fonctionne
parfaitement SAUF si la liste contient des chiffres.
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
Dans l'exemple transmis par JB, si je prends les champs nom ou prenom, c'est
parfait, si je prends le champs salaire, j'obtiens :
Erreur d'exécution '-2147217913 (80040e07)
[Microsoft][Pilote ODBC Excel] Type de données incompatible dans
l'expression du critère.
Gérant des plaques d'immatriculation, je souhaiterais que ma combobox se
mette à jour sans avoir à ouvrir le fichier contenant la liste des plaques.
Quel est le code approprié ?
Cela fonctionne parfaitement dans un premier formulaire.
Dans un autre fichier, j'obtiens ce message d'erreur sur la ligne Set cnn = New ADODB.Connection Erreur de compilation / Type défini par l'utilisateur non défini Je précise que je fais appel à la meme liaison, avec les memes noms, c'est "un simple copier/coller" dans un formulaire légérement différent sur le meme ordinateur.
Pourquoi ?
Un grand merci pour votre aide.
BH.
"JB" wrote:
Bonjour,
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 salaire FROM MaBD WHERE salaire<>0 Order By salaire") Me.ComboBox1.List = Application.Transpose(rs.GetRows) rs.Close cnn.Close Set rs = Nothing Set cnn = Nothing End Sub
JB On 11 fév, 12:29, wrote:
Bonjour,
Sous Excel 2002,
Je souhaite que dans un formulaire une combobox soit alimentée par une liste d'un autre fichier et si possible triée. Si je n'ouvre pas préalablement à la saisie du formulaire, le fichier qui contient la liste, j'obtiens un message d'erreur. Grace à la contribution de JB, j'ai obtenu le code suivant qui fonctionne parfaitement SAUF si la liste contient des chiffres. 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
Dans l'exemple transmis par JB, si je prends les champs nom ou prenom, c'est parfait, si je prends le champs salaire, j'obtiens : Erreur d'exécution '-2147217913 (80040e07) [Microsoft][Pilote ODBC Excel] Type de données incompatible dans l'expression du critère. Gérant des plaques d'immatriculation, je souhaiterais que ma combobox se mette à jour sans avoir à ouvrir le fichier contenant la liste des plaques. Quel est le code approprié ?