XL 2010 Combobox de recherche

  • Initiateur de la discussion Initiateur de la discussion Scorpio
  • 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 !

Scorpio

XLDnaute Impliqué
Bonjour à vous tous,

J'ai ici, un classeur que j'ai récupéré sur le net, bien sur qui m'intéresse, je suis pas un as en VBA, et j'aimerais bien un coup de pouce s'il vous plaît, pour finaliser ce classeur.
En fait, j'aimerais faire dans le Combobox qui est dans le formulaire une recherche par nom, qui se trouve en colonne A, voilà
Merci à qui voudrais bien me donner de l'aide
A+++++
 

Pièces jointes

Bonjour Scorpio, bonjour le forum,

Essaie comme ça :

VB:
Private Sub ComboBox1_Change()
Dim O As Worksheet 'déclare la variable OL (Onglet)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim I As Integer 'déclare la variable I (Incrément)
Dim K As Integer 'déclare la variable K (incrément)
Dim TL() As Variant 'déclare la variable TL (Tableau des Lignes)

Me.ListBox1.Clear 'vide la ListBox1
Set O = Worksheets("Feuil1") 'définit l'onglet O
TV = O.Range("A1").CurrentRegion 'définit le tableau des valeurs TV
K = 1 'initialise la variable K
For I = 2 To UBound(TV) 'boucle sur toutes les lignes I du tableau des valeurs TV (en partant de la seconde)
    If TV(I, 1) = Me.ComboBox1.Value Then 'condition : si la donnée ligne I colonne 1 de TV est égale à la valeur de la ComboBox1
        ReDim Preserve TL(1 To 5, 1 To K) 'redimensionne le tableau des lignes TL (5 lignes, K colonnes)
        TL(1, K) = TV(I, 1) 'récupère dans la ligne 1 de TL la donnée en colonne 1 de TV
        TL(2, K) = TV(I, 3) 'récupère dans la ligne 2 de TL la donnée en colonne 3 de TV
        TL(3, K) = TV(I, 6) 'récupère dans la ligne 3 de TL la donnée en colonne 6 de TV
        TL(4, K) = TV(I, 8) 'récupère dans la ligne 4 de TL la donnée en colonne 8 de TV
        TL(5, K) = TV(I, 9) 'récupère dans la ligne 5 de TL la donnée en colonne 9 de TV
        K = K + 1 'incrément K (ajoute une colonne au tableau des lignes TL)
    End If 'fin de la condition
Next I 'prochaine ligne de la boucle
Me.ListBox1.Column = TL 'alimente la ListBox1 avec le tableai TL (je ne connaissais pas cette méthode j'utilisais Me.ListBox1.List=Application.Transpose(TL), elle m'a plu...)
End Sub
 
Bonjour à tous,

Code:
Private Sub ComboBox1_Change()
Dim i As Single
Dim MyArray(20, 5)
ListBox1.ColumnCount = 5
ligne = 0
DerLigne = Range("A65535").End(xlUp).Row
    For i = 2 To DerLigne
        If Cells(i, 1) = ComboBox1 Then
            MyArray(ligne, 0) = Cells(i, 1)
            MyArray(ligne, 1) = Cells(i, 3)
            MyArray(ligne, 2) = Cells(i, 6)
            MyArray(ligne, 3) = Cells(i, 8)
            MyArray(ligne, 4) = Cells(i, 9)
            ligne = ligne + 1
        End If
    Next i
ListBox1.List() = MyArray
End Sub

à+
Philippe
 
Bonjour à tous,
Salut Robert,

Si le VBA n’est pas indispensable, un filtre peut faire l'affaire.

upload_2017-3-18_13-56-9.png


A+ à tous

Edition : Pas vu Bernard et Philippe... Bises chez toi Philippe.
 
Dernière édition:
Bonjour à tous,
Pour avoir tout les noms de la colonne A mettre dans le module 1 :
Code:
Sub Bouton1_QuandClic()
Dim Cellule As Object
For Each Cellule In Sheets("Feuil1").Range("A2:A65536")
If Cellule = " " Then Exit For
  UserForm1.ComboBox1.AddItem Cellule.Value
Next
UserForm1.Show
End Sub
bonne journée !
 
Re bonjour à tous, et un grand merci de votre aide
J'ai bien trop de proposition c'est super, et je ne sais pas lequel choisir pour faire au plus simple, quand même j'aimerais bien travailler avec un formulaire et la VBA, mais à ce que je remarque, les codes sont important, et ma compréhension en VBA un peut faible.
C'est vrai je pourrais servir le filtre Excel, et vous sauvez ce que c'est, on est toujours tenté d'avoir mieux.
 
Bonjour,

VB:
Dim f, BD
Private Sub UserForm_Initialize()
  Set f = Sheets("feuil1")
  Set d = CreateObject("Scripting.Dictionary")
  ListBox1.ColumnCount = 5 'on définit le nombre de colonnes
  BD = f.Range("A2:I" & f.[I65000].End(xlUp).Row)
  For i = LBound(BD) To UBound(BD)
     If BD(i, 1) <> "" Then d(BD(i, 1)) = ""
  Next i
  ComboBox1.List = d.keys
End Sub

Private Sub ComboBox1_click()
  Dim Tbl: ReDim Tbl(1 To Application.CountIf(f.[A:A], Me.ComboBox1), 1 To 5)
  For i = 1 To UBound(BD)
    If BD(i, 1) = Me.ComboBox1 Then
      j = j + 1: c = 0
      For Each k In Array(1, 3, 6, 8, 9)
        c = c + 1: Tbl(j, c) = BD(i, k)
      Next k
    End If
  Next i
  Me.ListBox1.List = Tbl
End Sub

BISSON
Salut Nicole,
Merci de ton aide, mais OUPS, ça fonctionne pas bien
A+++
 

Pièces jointes

Salut Nicole,
Alors, cela ne vas pas encore, est-ce Excel qui ne fonctionne pas bien
Moi, j'ai Excel 2010, avec Office 365.
Les classeurs avec macro ont l'extension xlsm et non xls
A++++
Re,
Scorpio, j'ai Excel 2007 et ton fichier bug lorsqu'on l'ouvre !
En ce qui concerne les extension xlsm ou xls n'importe qu'elle fichier excel avec xls peut être ouvert avec toutes les versions d'Excel !

Bug_formule.jpg
 
- 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

Réponses
17
Affichages
800
Réponses
12
Affichages
280
  • Question Question
XL 2013 VBA Excel
Réponses
2
Affichages
575
Réponses
5
Affichages
217
Retour