Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Liste déroulante à partir d'un autre fichier

  • Initiateur de la discussion Initiateur de la discussion picronte
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

picronte

XLDnaute Occasionnel
Re bonjour le forum,
j'ai trouvé un programme vba sur le net mais j'ai essayé de l'adapté à mon fichier mais la je bloc.
j'ai bien dans le fichier essai en cliquant deux fois sur la cellule H8 le useform qui apparait mais je n'arrive pas a avoir la liste du fichier essai 1 colonne a
pouvez-vous m'aider
je joint les deux fichiers
Picronte
 

Pièces jointes

Re : Liste déroulante à partir d'un autre fichier

Bonjour picronte,

Il faut utiliser 2 noms définis, le 2ème faisant référence au 1er.

Fichiers joints.

A+
 

Pièces jointes

Re : Liste déroulante à partir d'un autre fichier

Bonjour Job75
J'ai renommé la liste dans le fichier essai1et modifié le code VBA du fichier essai mais cela ne fonctionne toujours pas
Ci-joint le code

Dim Temp
Private Sub TextBox1_Change()
Me.ListBox1.Clear
For Each c In Temp
If UCase(c) Like UCase(Me.TextBox1) & "*" Then
Me.ListBox1.AddItem c
End If
Next c
End Sub
Private Sub ListBox1_Click()
ActiveCell = Me.ListBox1
Unload Me
End Sub
Private Sub UserForm()
'Microsoft ActiveX DataObject doit être coché
' Champ nommé Liste
Set cnn = New ADODB.Connection
cnn.Open "DRIVER={Microsoft Excel Driver (*.xlsm)};ReadOnly=1;DBQ=" & _
ThisWorkbook.Path & "\" & "essai1.xlsm"
Set rs = cnn.Execute("SELECT libellé FROM Liste")
Me.ListBox1.List = Application.Transpose(rs.GetRows)
Temp = Me.ListBox1.List
rs.Close
cnn.Close
Set rs = Nothing
Set cnn = Nothing
End Sub
merci de ton aide
picronte
 

Pièces jointes

Dernière édition:
Re : Liste déroulante à partir d'un autre fichier

Re bonjour a tous
N'ayant personne pour m'aider pour le code VBA
J'ai une formule mais la fonction INDIRECT ne fonctionne pas sur fichier fermé.
ci-joint la formule: =DECALER(INDIRECT(appel);;;NBVAL(INDIRECT)appel));1)

Quelqu'un m'aider
Merci
Picronte
 
Re : Liste déroulante à partir d'un autre fichier

Re,

Je n'avais pas prété attention à votre UserForm.

Pour créer la liste utilisée par la ListBox le plus simple est d'ouvrir le fichier source :

Code:
Private Sub UserForm_Initialize()
Dim Wb As Workbook
Application.ScreenUpdating = False
Application.DisplayAlerts = False 'si le fichier est déjà ouvert
Set Wb = Workbooks.Open(ThisWorkbook.Path & "\" & "essai1.xlsm")
temp = Evaluate(Wb.Name & "!Liste").Value
ListBox1.List = temp
Wb.Close
Application.ScreenUpdating = True
End Sub
Nota : j'ai remplacé le double-clic par un clic droit sur H8.

En effet le double-clic perturbait l'UserForm...

Fichiers joints.

A+
 

Pièces jointes

Re : Liste déroulante à partir d'un autre fichier

re Job,
Cela fonctionne sur les fichiers essai.
mais sur mes deux fichiers orignaux cela ne fonctionne pas j'ai pourtant remplacé dans le code la source du fichier!!!
peux-tu regarder ou j'ai fait l'erreur
merci
 
Dernière édition:
Re : Liste déroulante à partir d'un autre fichier

Re,

Dans la macro UserForm_Initialize qui ouvre le fichier à copier il faut :

1) neutraliser le déclenchement de la macro Workbook_Open par Application.EnableEvents = False

2) mettre des guillemets anglais (apostrophes) car le nom du fichier contient des espaces.

Voici la macro corrigée, je l'ai testée OK :

Code:
Private Sub UserForm_Initialize()
Dim Wb As Workbook
Application.ScreenUpdating = False
Application.DisplayAlerts = False 'si le fichier est déjà ouvert
Application.EnableEvents = False 'évite le déclenchement de la Workbook_Open
On Error Resume Next 'sécurité
Set Wb = Workbooks.Open(ThisWorkbook.Path & "\" & "suivi des producteurs Région Normandie 1.xlsm")
temp = Evaluate("'" & Wb.Name & "'!Liste").Value 'avec guillemets anglais
ListBox1.List = temp
Wb.Close
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
Edit : oublié de remettre Application.EnableEvents à True !!

A+
 
Dernière édition:
Re : Liste déroulante à partir d'un autre fichier

Bonjour picronte, le forum,

En complément du post précédent, si l'on veut éviter les textes vides dans la liste :

- soit on rend le nom "Liste" dynamique (avec DECALER et NBVAL)

- soit on redimensionne la plage dans la macro :

Code:
Private Sub UserForm_Initialize()
Dim Wb As Workbook
Application.ScreenUpdating = False
Application.DisplayAlerts = False 'si le fichier est déjà ouvert
Application.EnableEvents = False 'évite le déclenchement de la Workbook_Open
On Error Resume Next 'sécurité
Set Wb = Workbooks.Open(ThisWorkbook.Path & "\" & "suivi des producteurs Région Normandie 1.xlsm")
With Evaluate("'" & Wb.Name & "'!Liste") 'avec guillemets anglais
  temp = .Resize(Application.CountA(.Cells)) 'redimensionne la plage
End With
ListBox1.List = temp
Wb.Close
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
A+
 
Dernière édition:
Re : Liste déroulante à partir d'un autre fichier

Re,
merci pour tous vos explications, j'apprends énormément sur ce forum et je vous en remercie de tous ces bénévoles qui passent du temps sur nos fichiers et surtout je suis en admiration pour votre patience.
j'espère être un jour aussi calé que vous en excel
Picronte
 
Re : Liste déroulante à partir d'un autre fichier

Re,

Un essai avec une ComboBox dans la feuille au lieu de l'UserForm.

Le code de la feuille :

Code:
Option Explicit
Dim temp 'mémorisation

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ComboBox1.Visible = ActiveCell.Address = "$H$8"
End Sub

Private Sub ComboBox1_GotFocus()
Dim Wb As Workbook
Application.ScreenUpdating = False
Application.DisplayAlerts = False 'si le fichier est déjà ouvert
Application.EnableEvents = False 'évite le déclenchement de la Workbook_Open
On Error Resume Next 'sécurité
Set Wb = Workbooks.Open(ThisWorkbook.Path & "\" & "suivi des producteurs Région Normandie 1.xlsm")
With Evaluate("'" & Wb.Name & "'!Liste") 'avec guillemets anglais
  temp = .Resize(Application.CountA(.Cells))
End With
Wb.Close
ComboBox1.List = temp
ComboBox1 = ""
ComboBox1.SelStart = 0
ComboBox1.DropDown
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub

Private Sub ComboBox1_Change()
Dim t(), c, n As Long
If ComboBox1.ListIndex = -1 Then
  ReDim t(0)
  For Each c In temp
    If UCase(c) Like UCase(ComboBox1) & "*" Then
      ReDim Preserve t(n)
      t(n) = c
      n = n + 1
    End If
  Next
  ComboBox1.List = t
  ComboBox1.DropDown
Else
 [H8] = ComboBox1
 [H8].Select
End If
End Sub
Pour tester téléchargez les fichiers joints mais n'ouvrez que le fichier "Recap".

Edit : ne pas oublier de mettre la propriété MatchEntry de la ComboBox sur 2 - fmMatchEntryNone.

A+
 

Pièces jointes

Dernière édition:
Re : Liste déroulante à partir d'un autre fichier

re,
c'est vrai que c'est plus esthétique avec un combobox et peut-être un peu plus rapide.
Mais sur exemple ça décale de 11 lignes en prenant un N° 37338 il reprend les données de la 11 lignes au dessus (du n° 15687)et de plus je suis obligé de rechercher le lien à chaque fois, car il ne trouve pas le lien.
Cordialemnt
Picronte
 
Re : Liste déroulante à partir d'un autre fichier

Re,
je vais essaye d'être plus clair dans mon explication. j'ai enregistré le deux fichiers sur le bureau; a l'ouverture de recap la fenêtre de mise a jour s'ouvre si je clic sur continuer il ne reconnait pas le fichier suivi....., je retourne sur donnée\modifier les liens d'accés il me m'ouvre la boite de dialogue et le fichier suivi.. est inconnu, je clic sur mettre à jour les valeurs et je suis obligé d'aller chercher le fichier suivi dans le bureau pour qu'il se met à jour (OK) quand tous cela est fait dans le combobox les 11 premiers numeros rien ne se passe il n'y a que le 12 ième numero qui reconnait et reprend les donnés de la ligne A11 du fichier suivi. si je veux prendre un autre numero je suis obligé de remettre le fichier à jour.
picronte
 
Re : Liste déroulante à partir d'un autre fichier

re,
correction du post 13 dans le combobox même si je prend un N° après il me redonne les données de la première ligne du fichier suivi...,
Picronte
 
Re : Liste déroulante à partir d'un autre fichier

Re,

La valeur de H8 n'était pas reconnue car avec l'instruction [H8] = ComboBox1 c'était du texte.

Avec l'instruction [H8] = ComboBox1.Text H8 est bien un nombre.

Voyez les fichiers joints avec le code modifié. J'ai mis des dates en colonne I du fichier "suivi".

Concernant la validité des liens je ne peux guère vous aider car chez moi aucun problème.

A+
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
XL 2016 liste
Réponses
10
Affichages
386
Réponses
10
Affichages
493
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…