XL 2013 listbox avec + de 11 colonnes (colonne A à colonne L)

CGU2022.

XLDnaute Junior
Bonjour c'est la première fois que je m'inscris sur un forum.
Jusqu'à présent j'ai beaucoup travailler avec les formules mais suis novice en Vba.
Je récupère des codes et j'essaie de comprendre et d'adapter.

A l'heure actuelle je bloque sur une recherche via textbox est envoi les résultats vers une listbox.

Je bloque sur le nombre de colonne et j'ai beau changer, modifier, essayer différents paramètres je bloque "A l'aide".

ci joint mon code de recherche:

'ca marche----------mais pas assez de colonnes avec ma listbox------------------------------------------------------------------------------


'ICI C'est le Moteur de Recherche
Private Sub CommandButton1_Click()
Dim F As Worksheet 'déclare la variable F comme un onglet ou feuille
Dim Plage As Range, c As Range 'déclare les variables Plage et C comme des plages de cellules
Dim T As String, Firstaddress As String 'déclare les variables T et Firstaddress comme du texte
Dim X As Integer 'déclare la variabe X comme un entier
Dim tablo

ListBox1.Clear
T = Me.Txt_recherche 'définit la variable T (le texte édité dans la TextBox nommée "recherche"
If T = "" Then Exit Sub 'si T est vide, sort de la procédure
'For Each F In Worksheets 'boucle sur tous les onglets du classeur
Set F = ActiveSheet
With F 'prend en compte l'onglet de la boucle

'définit la plage (intersection de l'ensemble des cellules utilisées dans cet onglet avec la plage définie par les cellules : A11 et la dernière cellule de l'onglet)
Set Plage = Application.Intersect(.UsedRange.Cells, .Range(.Cells(11, 2), .Cells(.Rows.Count, .Columns.Count)))
End With 'fin de la prise en compte de l'onglet de la boucle
Set c = Plage.Find(T, LookIn:=xlValues, LookAt:=xlPart) 'définit la recherche C (recherche dans plage le texte tapé dans la textbox)

If Not c Is Nothing Then 'condition : si il existe au moins une occurrence trouvée
Firstaddress = c.Address 'définit l'adresse de la première occurrence trouvée
Do 'exécute
With ListBox1

.AddItem F.Name 'ajoute le nom de l'onglet (dans la colonne 0)
For X = 1 To 9
.List(.ListCount - 1, X - 1) = F.Cells(c.Row, X).Text
Next X
.List(.ListCount - 1, 9) = c.Address(False, False) 'ajoute en colonne 10 (cachée) de la ListBox l'adresse de l'ocurrence trouvée
End With
Set c = Plage.FindNext(c)
Loop While Not c Is Nothing And c.Address <> Firstaddress
End If
'Next F

If ListBox1.ListCount = 0 Then
MsgBox "Le Texte " & T & " n'a pas été trouvé" & vbLf & "Faites un essai sur une partie du nom", vbCritical, Sign
End If
End Sub

ci dessous toutes mes textbox, combobox, label qui récupère par clic dans la listbox des valeurs
'ca marche----------------------------------------------------------------------------------------------------------------------------------------

Private Sub ListBox1_Click() 'renvoie les valeurs de la list box vers txt box

Me.Txt_label = Me.ListBox1.Column(0)
Me.Cbx_budget = Me.ListBox1.Column(1)
Me.Txt_marque = Me.ListBox1.Column(2)
Me.Txt_designation = Me.ListBox1.Column(3)
Me.Txt_dimension = Me.ListBox1.Column(4)
Me.Cbx_unite = Me.ListBox1.Column(5)
Me.Txt_F1 = Me.ListBox1.Column(6)
Me.Txt_F2 = Me.ListBox1.Column(7)
Me.Txt_F3 = Me.ListBox1.Column(8)
'Me.Txt_F4 = Me.ListBox1.Column(9) 'va pas plus Loin (limite listbox)
'Me.Txt_F5 = Me.ListBox1.Column(10) 'va pas plus loin (limite listbox)


End Sub


C'est la première fois que je post alors veuillez m'excuser et me rediriger si cette conversation n'est pas à la bonne place ou conforme à la règlementation de ce site.
 

JM27

XLDnaute Barbatruc
Bonjour
Pour une première c'est pas mal du tout
Il manque:
1/ un fichier exemple ( c'est plus concret)
2/ merci d'indenter ton code ( retrait entre if et end if par exemple , de with et end with) : c'est beaucoup plus lisible

Ci joint un exemple de list box sup à 10 colonnes
 

Pièces jointes

  • list box sup à 10 colonnes.xlsm
    42.3 KB · Affichages: 44
Dernière édition:

CGU2022.

XLDnaute Junior
Ci-dessous mon Tableau1 pour la liste box
1640876208614.png
 

CGU2022.

XLDnaute Junior
Merci du retour si rapide je vais analyser cela.

ci dessous le fichier qui peut servir à certains, l'Userform concerné est UserFormrecherche.

qui recherche dans la liste textbox du haut.
click dans userform charge les infos dans textbox pour modif ou suppressions.

Quand j'aurai toutes les colonnes donc les values j'enverrai vers une feuille "chantier1" "Chantier2"etc...
Mais j'en suis pas la :)
 

Pièces jointes

  • test4.xlsm
    139.7 KB · Affichages: 18

CGU2022.

XLDnaute Junior
Bonjour à tous,

Un autre fichier fait pour un autre demandeur.
Le code est commenté.
Bonjour le filtre de recherche que tu m'as transmit est sur une colonne définie est la recherche et vraiment de lettre a lettre l'une après l'autre cela ne me conviens pas.

J'ai identifier dans mon fichier la partie de macro ou je pense que peut être, avec une autre commande on peut remplacer cette partie pour avoir plus de 10 colonnes......
D'après différentes recherches c'est peut être le additem qui limite les colonnes....


With ListBox1

.AddItem F.Name '
For X = 1 To 10
.List(.ListCount - 1, X - 1) = F.Cells(C.Row, X).Text
Next X
.List(.ListCount - 1, 10) = C.Address(False, False)

End With



Quelqu'un à une idée ???
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour le filtre de recherche que tu m'as transmit est sur une colonne définie est la recherche et vraiment de lettre a lettre l'une après l'autre cela ne me conviens pas.
J'avais mal interprété la question.
Je pensais que le problème était le nombre de colonne dans une listbox (mal lu :()
En fait, c'est la recherche au sein de toutes les colonnes de la listbox, non ?

Le mieux est de joindre un fichier représentatif :)
 
Dernière édition:

CGU2022.

XLDnaute Junior
Merci à Tous pour vos efforts mais je ne trouve pas la solution adéquate.
Je veux a tous prix garder ma sub de recherche car elle permet de rechercher une lettre dans plusieurs colonnes à n'importe quel endroit dans un mot ou phrase chiffre ou lettre ......
Je vais donc changer mon fusil d'épaule :
1 - limiter les colonnes de ma listbox...(revoir à la baisse).

2- J'ai déjà récupéré dans une Txtbox un "Numero d'article du tableau" par click dans la listbox
je vais m'en servir pour faire une recherche (style formule) pour renvoyer la valeur de la colonne voulue dans les différents textbox (vides car limité à 10 colonnes dans la listbox)....

Encore un merci a tous. je mettrai le fichier une fois fini pour peut etre aider une autre personne.

Cdt.
 

patricktoulon

XLDnaute Barbatruc
re
bonsoir
j'ai vu dans le fichier original find, firtsadress,,etc...
méthode archaïque lente et chronophage
pour une listbox intuitive on travail avec une variable tableau que ce soit pour une recherche sur 1 colonnes ou toutes
de exemples il y en a à foison sur le forum et même certaines très récentes
surtout que là il y a utilisation de find sur une plage x lignes y colonnes
donc find peut donner x fois la même ligne
WRONG WAY!!!
 

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 885
Membres
101 830
dernier inscrit
sonia poulaert