VBA INDEX EQUIV avec liste déroulante ComboBox

Bonjour à tous !

Je cherche depuis quelques jours à créer un Userform permettant à partir de choix dans des listes déroulantes de trouver une valeur dans un tableau Excel. Je voulais de base créer ce userform sur un classeur pour aller chercher sur différents classeur en fonction du choix fait sur la liste déroulante. Je n'ai malheuresement pas les compétences pour réaliser le code.

Je me suis donc résigné à créer un userform par classeur. J'ai cru comprendre que EQUIV devient MATCH en vba. Je pense que mon code n'est pas bon lorsque j'utilise ComboBox.Value dans MATCH pour déterminer la ligne et la colonne voulue. Je joins mon fichier excel.

Merci d'avance pour vos conseils !

14lotgo.xlsm (28.85 Ko)

bonjour,

voici ton instruction adaptée

Private Sub CommandButton1_Click()

Me.TextBox1.Value = Application.Index(Range("TableauGO"), Application.Match(Me.ComboBox1.Value, Range("ListeOpé"), 0) + 1, Application.Match(Me.ComboBox2.Value, Range("ListeC"), 0))

End Sub

Merci bcp !!

Que penses-tu d'adapter ce userform pour qu'il aille chercher dans des classeurs fermés ? En ajoutant [nomfichier.xlsm] avant chaque range(..) ?

Bonjour,

c'est possible, mais à ma connaissance, cela ne fonctionnera pas en ajoutant simplement le nom du fichier. il faut également que tous ces fichiers soient ouverts.

3rex-lots.zip (158.16 Ko)

Bonjour,

J'ai crée un code qui me permet d'ouvrir mes fichiers via ma liste déroulante. Il marche sur Powerpoint (utilisation de base) et j'ai essayé de le modifier pour Excel. En plus d'ouvrir mon fichier, il me permet de récupérer l'adresse pour ensuite l'incorporer dans mon INDEX EQUIV.

Malheureusement mon fichier ne s'ouvre pas avec Workbooks.Open Filename =

Avez-vous une idée de pourquoi?

J'ai ajouté le zip pour que la liste déroulante fonctionne.

bonjour,

pour rendre la variable accessible à tous les subs et functions de ton module tu dois la définir en tête de module en dehors de toute sub ou function. ton workbooks.open donne une erreur (très probablement, mais non testé) car la variable adresse est vide et donc le fichier à ouvrir n'est pas trouvé.

Dim adresse
Private Sub ComboBox1_DropButtonClick()

Set fso = CreateObject("Scripting.FileSystemObject")

adresse = "D:\PFE TMH\BDD\REX LOTS\" 'Adresse du dossier

Set dossier = fso.GetFolder(adresse) 'Récupère le dossier à l'adresse indiquée

ComboBox1.Clear
With ComboBox1
    For Each fc In dossier.Files 'Répète l'action pour chaque fichier du dossier
        .AddItem fc.Name 'Ajoute a la combobox le nom de chaque fichier du dossier
    Next
End With

End Sub

Private Sub CommandButton1_Click()

Dim MonApplication As Object
Dim MonFichier As String

With ThisWorkbook

MonFichier = adresse & [ComboBox1.Value] 'Cree la chaine de caractere du fichier a ouvrir avec l'adresse du dossier que tu as précisée au dessus & le texte de ta combobox

If (ComboBox1.Value <> "") Then 'Verifie s'il y a bien un fichier selectionné dans la ComboBox

    Workbooks.Open Filename = MonFichier 'Ouvre le fichier en question
End If
    Set MonApplication = Nothing

End With

Me.TextBox1.Value = Application.Index(MonFichier.Range("TableauGO"), Application.Match(Me.ComboBox1.Value, .MonFichier.Range("ListeOpé"), 0), Application.Match(Me.ComboBox2.Value, MonFichier.Range("ListeC"), 0))

End Sub
Rechercher des sujets similaires à "vba index equiv liste deroulante combobox"