XL 2010 Combobox de recherche

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

  • ListBoxColonneNonContigue.xlsm
    24.3 KB · Affichages: 44

Robert

XLDnaute Barbatruc
Repose en paix
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
 

phlaurent55

Nous a quittés en 2020
Repose en paix
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
 

JCGL

XLDnaute Barbatruc
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:

JBARBE

XLDnaute Barbatruc
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 !
 

Scorpio

XLDnaute Impliqué
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.
 

Scorpio

XLDnaute Impliqué
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

  • ListBoxColonneNonContigueV3.xlsm
    25.9 KB · Affichages: 24

JBARBE

XLDnaute Barbatruc
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
 

Discussions similaires

Réponses
2
Affichages
318
Réponses
28
Affichages
1 K
Réponses
2
Affichages
193
Réponses
19
Affichages
632