Recherche valeur partielle avec XlPart + Selection combobox comme valeur à rechercher

ExcelNoob00

XLDnaute Nouveau
Bonjour à tous.

Je reviens vers vous pour obtenir de l'aide à propos de cette fonction

Vu que j'ai deux problèmes que je n'arrive pas à résoudre, je vais donc diviser ce post en deux :

1) XlPart
Je possède déjà cette fonction :

Code:
Private Sub textbox_1_afterupdate()
'Stop
recherche = TextBox_1.Value
n1 = 30: n2 = 40: n3 = 50: n4 = 60: n5 = 70: n6 = 80: n7 = 90: n8 = 100: n9 = 110

Set Plage = Range("B2", Cells(Rows.Count, "B").End(xlDown))
With Plage
Set c = .Find(recherche)
If Not c Is Nothing Then
adresse = c.Address
'a = Range(adresse).Row
'Stop

 Do
 If n1 > 38 Then MsgBox ("Tous les emplacements sont complétés"): Exit Sub
 If UCase(recherche) = UCase(Left(c, Len(recherche))) Then
 Me.Controls("Textbox_" & n1) = c.Offset(0, -1)
 Me.Controls("Textbox_" & n2) = c.Offset(0, 0)
 Me.Controls("Textbox_" & n3) = c.Offset(0, 1)
 Me.Controls("Textbox_" & n4) = c.Offset(0, 2)
 Me.Controls("Textbox_" & n5) = c.Offset(0, 3)
 Me.Controls("Textbox_" & n6) = c.Offset(0, 4)
 Me.Controls("Textbox_" & n7) = c.Offset(0, 5)
 Me.Controls("Textbox_" & n8) = c.Offset(0, 6)
 Me.Controls("Textbox_" & n9) = c.Offset(0, 7)


 n1 = n1 + 1: n2 = n2 + 1: n3 = n3 + 1: n4 = n4 + 1: n5 = n5 + 1: n6 = n6 + 1: n7 = n7 + 1: n8 = n8 + 1: n9 = n9 + 1
 End If
' Stop
 Set c = .FindNext(c)
 Loop While Not c Is Nothing And c.Address <> adresse
 End If: End With: Beep
End Sub

Celle-ci fonctionne très bien, MAIS, car il y a un mais, la recherche n'est pas optimale.

Je m'explique : Si je recherche le mot "Graisse", il va me ressortir toutes les valeurs des cellules commençant par Graisse.
Mais si je recherche "Température", il va afficher les valeurs "Température XXXX" mais pas "XXXXXX Température"

J'ai essayé d'incorporer XlPart, mais le code ne semble absolument rien changer :confused:

2) J'ai la fonction combobox suivante

Code:
Private Sub UserForm_Initialize()
    Dim Cell As Range
     
    'Supprime les données existantes dans le ComboBox
    Me.ComboBox1.Clear
     
    'Boucle sur les cellules de la plage pour
    'alimenter le ComboBox
    For Each Cell In Worksheets("Stockage Essais").Range("B6:B130")
        Me.ComboBox1 = Cell
        'remplissage sans doublon
        If Me.ComboBox1.ListIndex = -1 Then _
            Me.ComboBox1.AddItem Cell
    Next Cell
End Sub

Dans mon userform, je veux implanter deux solutions de recherche
La 1ere par une textbox, et l'autre par le choix d'une valeur via la combobox

J'ai essayé diverses solutions mais je n'arrive pas à faire en sorte que si une valeur de la combobox est sélectionnée, c'est cette valeur qui devient la variable à rechercher.


--

Je vous remercie par avance de tout aide apportée pouvant me diriger vers une solution adéquat des problèmes
 
Dernière édition:

GIBI

XLDnaute Impliqué
Re : Recherche valeur partielle avec XlPart + Selection combobox comme valeur à reche

Bonjour,

Find est sensible à la casse pour que cela fonction il faut rajouter en début de module "Option Compare Text" pour que la recherche ne tienne pas compte des minuscule et majuscule
 

ExcelNoob00

XLDnaute Nouveau
Re : Recherche valeur partielle avec XlPart + Selection combobox comme valeur à reche

Bonjour,

Find est sensible à la casse pour que cela fonction il faut rajouter en début de module "Option Compare Text" pour que la recherche ne tienne pas compte des minuscule et majuscule

Merci pour ta réponse

J'ai essayé ce code, mais je ne pense pas qu'il puisse régler le problème, qui n'est pas lié à la case mais à la position de la valeur dans la cellule.
 

GIBI

XLDnaute Impliqué
Re : Recherche valeur partielle avec XlPart + Selection combobox comme valeur à reche

Re-bonjour,

Je confirme le "find" recherche la valeur dans tout le contenu de la cellule donc indépendamment de la position de cette valeur

alors persévère

Comme tu es septique je t'annexe un exemple
 

Pièces jointes

  • FIND.xlsm
    14.8 KB · Affichages: 39
  • FIND.xlsm
    14.8 KB · Affichages: 33
  • FIND.xlsm
    14.8 KB · Affichages: 36
Dernière édition:

ExcelNoob00

XLDnaute Nouveau
Re : Recherche valeur partielle avec XlPart + Selection combobox comme valeur à reche

Re-bonjour,

Je confirme le "find" recherche la valeur dans tout le contenu de la cellule donc indépendamment de la position de cette valeur

alors persévère

Comme tu es septique je t'annexe un exemple

Je t'ai joint le classeur avec la macro :)

J'étais sceptique sur le Option Compare Text, l'impression que cela ne change rien ( peut-être l'ai-je mal placé ? ) :rolleyes:

Je vois pas ce qui permet d'obtenir ce que je veux dans ton exemple, et pourquoi je n'y arrive pas avec mon propre code, ils sont identiques ( même si le mien a plus de paramètres )..
 

Pièces jointes

  • test1.xlsm
    34.8 KB · Affichages: 43
  • test1.xlsm
    34.8 KB · Affichages: 44
  • test1.xlsm
    34.8 KB · Affichages: 55
Dernière édition:

GIBI

XLDnaute Impliqué
Re : Recherche valeur partielle avec XlPart + Selection combobox comme valeur à reche

Bonjour,

je n'ai pas réussià lancer ton userform : il doit manquer quelque chose

la seule différence, c'est que ton code est dans le UserForm : essai avec le code mis à jour cela évite la notion d'"option" ou met le "Sub dans un module et appelle le à partir du UserForm

NB : j'ai complété mon exemple pour l'utiliser sans "Option"
 

Paf

XLDnaute Barbatruc
Re : Recherche valeur partielle avec XlPart + Selection combobox comme valeur à reche

Bonjour à tous

Pour le problème 1, le soucis n'est pas le find mais le test qui suit:

remplacer
Code:
If UCase(recherche) = UCase(Left(c, Len(recherche))) Then
par
Code:
If UCase(c.Value) Like "*" & UCase(recherche) & "*" Then


je regarde pour le problème 2

A+
 

Paf

XLDnaute Barbatruc
Re : Recherche valeur partielle avec XlPart + Selection combobox comme valeur à reche

Re,

pour le 2

la saisie dans la textbox et la sélection dans la combobox vont déclencher la même recherche

Code:
Private Sub ComboBox1_Change()
 Marecherche ComboBox1.Value
End Sub
Code:
Private Sub textbox_1_afterupdate()
 Marecherche TextBox_1.Value
End Sub

le code qui était dans Private Sub textbox_1_afterupdate() est déporté dans une sub avec paramètre et quelques modifs
Code:
Sub Marecherche(Valeur)
 Dim recherche
 recherche = Valeur
 n1 = 30: n2 = 40: n3 = 50: n4 = 60: n5 = 70: n6 = 80: n7 = 90: n8 = 100: n9 = 110
 
 '*********effacement des textbox
 For i = 30 To 110 Step 10
    For j = 1 To 8
        Me("Textbox_" & i + j).Value = ""
    Next
 Next
 '******** fin effacement

 Set Plage = Range("B2", Cells(Rows.Count, "B").End(xlUp))
 With Plage
 Set c = .Find(recherche)
 If Not c Is Nothing Then
    adresse = c.Address
'a = Range(adresse).Row
'Stop

    Do
    If n1 > 38 Then MsgBox ("Tous les emplacements sont complétés"): Exit Sub
    'If UCase(recherche) = UCase(Left(c, Len(recherche))) Then
    If UCase(c.Value) Like "*" & UCase(recherche) & "*" Then
        Me.Controls("Textbox_" & n1) = c.Offset(0, -1)
        Me.Controls("Textbox_" & n2) = c.Offset(0, 0)
        Me.Controls("Textbox_" & n3) = c.Offset(0, 1)
        Me.Controls("Textbox_" & n4) = c.Offset(0, 2)
        Me.Controls("Textbox_" & n5) = c.Offset(0, 3)
        Me.Controls("Textbox_" & n6) = c.Offset(0, 4)
        Me.Controls("Textbox_" & n7) = c.Offset(0, 5)
        Me.Controls("Textbox_" & n8) = c.Offset(0, 6)
        Me.Controls("Textbox_" & n9) = c.Offset(0, 7)


        n1 = n1 + 1: n2 = n2 + 1: n3 = n3 + 1: n4 = n4 + 1: n5 = n5 + 1: n6 = n6 + 1: n7 = n7 + 1: n8 = n8 + 1: n9 = n9 + 1
    End If
' Stop
    Set c = .FindNext(c)
    Loop While Not c Is Nothing And c.Address <> adresse
 End If: End With: Beep
End Sub

A+
 

Discussions similaires

Réponses
14
Affichages
959

Statistiques des forums

Discussions
312 294
Messages
2 086 950
Membres
103 404
dernier inscrit
sultan87