liste déroulante à partir d'un autre fichier excel

PATSAB

XLDnaute Nouveau
Bonjour à tout le forum,

J'ai cherché et cherché encore sur les forums, peut-être mal !, mais je n'ai pas trouvé la solution à mon problème, qui pourtant me paraissait simple.

J'utilise dans le fichier joint "TEST LISTE DEROULANTE BIS" un onglet nommé TABLE contenant mes données de base : articles, code, prix unitaire, unité de facturation.
Dans les fiches numérotées, en double-cliquant en cellule C16-C25 j'appelle par VBA une fenêtre déroulante dans laquelle je choisis mon article. Par ce libellé et les formules de RECHERCHEV idoines, mes colonnes "code, PU, U se remplissent automatiquement.
Mon problème est que je veux détacher l'onglet "TABLE" pour en faire un fichier séparé, pour l'utiliser avec d'autres fichiers. Ainsi si je modifie des valeurs à l'intérieur, tous les fichiers en liaison avec cette TABLE travailleront avec des données à jour.

J'ai été un peu long ! Je vous prie de m'en excuser.
Je vous remercie tous de l'aide que vous pourrer m'apporter.
Patrick
 

Pièces jointes

  • TEST LISTE DEROULANTE BIS.zip
    37.3 KB · Affichages: 118

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : liste déroulante à partir d'un autre fichier excel

Bonsoir,


Utiliser ADO. Voir PJ

Code:
Private Sub UserForm_Initialize()
  'Microsoft ActiveX DataObject doit être coché
  ' Champ nommé BD
  Set cnn = New ADODB.Connection
  cnn.Open "DRIVER={Microsoft Excel Driver (*.xls)};ReadOnly=1;DBQ=" & _
      ThisWorkbook.Path & "\" & "BDPROD.xls"
  Set rs = cnn.Execute("SELECT libellé FROM BD")
  Me.ListBox1.List = Application.Transpose(rs.GetRows)
  Temp = Me.ListBox1.List
  rs.Close
  cnn.Close
  Set rs = Nothing
  Set cnn = Nothing
End Sub

JB
Formation Excel VBA JB
 

Pièces jointes

  • LISTEDEROUL.zip
    34.4 KB · Affichages: 173
  • BDPROD.xls
    20.5 KB · Affichages: 426
  • BDPROD.xls
    20.5 KB · Affichages: 437
  • BDPROD.xls
    20.5 KB · Affichages: 434
G

Guest

Guest
Re : liste déroulante à partir d'un autre fichier excel

Bonsoir PAtSab,

Voici une solution avec MsAdo

nécessite de cocher la référence à 'Microsoft Activex Datas Objects 2.x' dans le menu Outils/Référence de l'éditeur Visual Basic (VBE). Ou x diffère selon la version Ado de la machine.

Un fichier nommé Datas.xls a été créé avec la feuille Table. Ce fichier doit être dans le même répertoir que l'autre. (Le chemin du fichier peut-être adapter facilement dans le module de code du userform)

A+
 

PATSAB

XLDnaute Nouveau
Re : liste déroulante à partir d'un autre fichier excel

:) Bonjour à tous
Et merci encore à tous ceux qui se sont penchés sur mon problème.

And the winner is BOISGONTIER ! Un merci spécial à vous !

Excellent ! Tout à fait ce que je voulais. Ca fonctionne à merveille, et plus rapidement que ma version précédente, qui avait du mal à me laisser saisir les premières lettres de mon produit.
Au plaisir de vous lire une prochaine fois
Patrick
 

PATSAB

XLDnaute Nouveau
Re : liste déroulante à partir d'un autre fichier excel

Bonsoir Boisgontier
Cela fait déjà plus de 4 ans que tu m'avais dépanné avec ce code pour utiliser une liste déroulante alors que j'étais sous excel 2003. Je l'ai beaucoup utilisé.
Excel 2003 a vécu. Je suis maintenant sous excel 2010 et la macro refuse de fonctionner. Elle coince au niveau "cnn.Open "DRIVER={Microsoft Excel Driver (*.xls)};ReadOnly=1;DBQ=" & _
ThisWorkbook.Path & "\" & "BDPROD.xls".
Peut-être aurais-tu une idée pour débloquer la situation ?
Je te remercie déjà de m'avoir lu pour te pencher sur mon problème.
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : liste déroulante à partir d'un autre fichier excel

Bonjour,

Code:
Private Sub UserForm_Initialize()
  'Microsoft ActiveX DataObject doit être coché
  ' Champ nommé BD
  Set cnn = New ADODB.Connection    
  cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.Path & "\" & "BDPROD.xlsx" & ";Extended Properties='Excel 12.0;HDR=Yes'"

  Set rs = cnn.Execute("SELECT libellé FROM BD")
  Me.ListBox1.List = Application.Transpose(rs.GetRows)
  Temp = Me.ListBox1.List
  rs.Close
  cnn.Close
  Set rs = Nothing
  Set cnn = Nothing
End Sub

JB
 

Pièces jointes

  • Copie de LISTEDEROUL.zip
    72.9 KB · Affichages: 95
Dernière édition:

PATSAB

XLDnaute Nouveau
Re : liste déroulante à partir d'un autre fichier excel

Bonjour Boisgontier

Je vois que tu es toujours aussi véloce et efficace. Tu es un superchampion du VBA. Je te remercie grandement de ton aide. Mon problème est résolu.
Où note-t-on que le cas est résolu ?
Au plaisir de te relire. Merci encore.
 

Discussions similaires

Statistiques des forums

Discussions
312 393
Messages
2 088 006
Membres
103 698
dernier inscrit
Guillaume MPOYI