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