VBA - Besoin d'aide pour adapter une macro pour effectuer une recherche

JONEY76

XLDnaute Occasionnel
Bonsoir à toutes et à tous

Voici le petit soucis,

Ci dessous, c'est le code pour effectuer une recherche sur toutes les feuilles d'un classeur et pour afficher les résultats dans une listbox

La modification que je souhaiterai, c'est de faire cette même recherche mais sur 1 feuille précise uniquement nommée "base" et d'afficher les résultats

Je pense que le problème vient en partie du DIM WS et du For Each ws In Worksheets
With ws


Code:
Private Sub CommandButton1_Click()
Dim ws
On Error Resume Next

ListBox1.Clear
If TextBox1 = "" Then Exit Sub
For Each ws In Worksheets
   With ws

        Set C = .UsedRange.Find(TextBox1, LookIn:=xlValues)
        If Not C Is Nothing Then
            firstAddress = C.Address
            Do
                dcol = .Cells(C.Row, 256).End(xlToLeft).Column
                With ListBox1
                    If dcol > .ColumnCount Then .ColumnCount = dcol
                    .ColumnWidths = "100" & "20" & "20" & "120" & "120"
                    
                    .AddItem ws.Cells(C.Row, 1)
                    X = ListBox1.ListCount - 1
                    For i = 2 To dcol
                        ListBox1.List(X, i - 1) = ws.Cells(C.Row, i)
                    Next
                End With
                Set C = .UsedRange.FindNext(C)
            Loop While Not C Is Nothing And C.Address <> firstAddress
        End If
    End With
Next
End Sub



Merci d'avance pour le coup de pouce !!!
 

Pièces jointes

  • joney search.xlsm
    22.4 KB · Affichages: 75
Dernière édition:

Yaloo

XLDnaute Barbatruc
Re : VBA - Besoin d'aide pour adapter une macro pour effectuer une recherche

Bonsoir JONEY76, le forum,

Comme ça sûrement :

VB:
Private Sub CommandButton1_Click()

On Error Resume Next
'effacer la recherche précédente
ListBox1.Clear

'si le textbox est vide alors on sort
If TextBox1 = "" Then Exit Sub

   With Sheets("Base")
   

        Set C = .UsedRange.Find(TextBox1, LookIn:=xlValues)
        If Not C Is Nothing Then
            firstAddress = C.Address
            Do
                dcol = .Cells(C.Row, 256).End(xlToLeft).Column
                With ListBox1
                    If dcol > .ColumnCount Then .ColumnCount = dcol
                    .ColumnWidths = "70" & "70" & "70" & "70" & "70"
                    
                    .AddItem Sheets("Base").Cells(C.Row, 1)
                    X = ListBox1.ListCount - 1
                    For i = 2 To dcol
                       ListBox1.List(X, i - 1) = Sheets("Base").Cells(C.Row, i)
                   Next
                End With
                Set C = .UsedRange.FindNext(C)
            Loop While Not C Is Nothing And C.Address <> firstAddress
        End If
    End With
End Sub

A te relire

Yaloo
 

JONEY76

XLDnaute Occasionnel
Re : VBA - Besoin d'aide pour adapter une macro pour effectuer une recherche

Re,

Dans la listbox, je souhaiterai afficher 20 colonnes, il m'en affiche 10 max

Quelle est la partie du code à modifier pour lui faire dire 20 ??

Merci pour vos réponses
 

Yaloo

XLDnaute Barbatruc
Re : VBA - Besoin d'aide pour adapter une macro pour effectuer une recherche

Bonsoir Joney, le forum,

Dans l'aide de la listbox, plus particulièrement dans l'aide du ColumnCount nous avons ceci :

ColumnCount, propriété
Voir aussi Exemple S'applique à Spécificités

Spécifie le nombre de colonne à afficher dans une zone de liste ou une liste modifiable.

Syntaxe

object.ColumnCount [= Long]

La syntaxe de la propriété ColumnCount comprend les éléments suivants :

Élément Description
object Objet valide.
Long Facultatif. Spécifie le nombre de colonnes à afficher.


Remarques

Si vous définissez la propriété ColumnCount pour une zone de liste sur 3 dans une feuille employés, une colonne peut lister les noms, une autre peut lister les prénoms et la troisième peut lister les numéros d'identification des employés.

La définition de la propriété ColumnCount sur 0 affiche zéro colonne et la définition sur -1 affiche toutes les colonnes disponibles. Pour une source de données indépendante, il y a une limite de 10 colonnes (0 à 9).

Vous pouvez utiliser la propriété ColumnWidths pour définir la largeur des colonnes affichées dans le contrôle.

Utilises plutôt une listview si tu veux avoir plus de 10 colonnes.

A+
Yaloo
 
Dernière édition:

Discussions similaires

Réponses
8
Affichages
447
Réponses
12
Affichages
537

Statistiques des forums

Discussions
311 709
Messages
2 081 756
Membres
101 812
dernier inscrit
trufu