Partage
  • Partager sur Facebook
  • Partager sur Twitter

VBA - Recherche

    18 mai 2019 à 15:37:54

    Bonjour à tous,

    Je suis entrain de bosser sur un fichier excel en utilisant du VBA.

    J'ai dans mon fichier excel deux feuilles (une principale et un tableau avec les infos concernant des produits)

    Sur mon formulaire principal j'ai une textbox que j'utilise pour rechercher dans les colonnes E à G de mon tableau 

    Private Sub TextBox1_Change()
    Dim Rng As Range
    If Len(TextBox1.Text) > 2 Then
          With Sheets("database").Range("E:G")
            Set Rng = .Find(What:=TextBox1.Text, After:=.Cells(.Cells.count), LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False)
            If Not Rng Is Nothing Then
                [J1] = "trouvé"
            Else
                [J1] = "pas trouvé"
            End If
        End With
      Else
        [J1] = "trop court"
      End If
    End Sub

    Dans la suite de ce code je souhaiterai apporter deux améliorations où je bloque et je ne trouve aucunes infos...

    La recherche actuelle fonctionne qu'il faut que ma cellule corresponde exactement à ma textbox. J'aimerai par exemple mettre dans ma textbox les premiers caractères et que ça me retourne les différents numéros de ligne où ce trouve ce qu'il y a dans ma textbox. 

    Exemple : Ma textbox contient 123

    Ligne 1 : 23456
    Ligne 2 : 12345
    Ligne 3 : 45678
    Ligne 4 : 12366
    Ligne 5 : 12397

    J1 devra alors indiquer : 2,4,5.

    Quelqu'un qui pourrait m'aiguiller sur les solutions possible?

    Merci par avance :)

    -
    Edité par Lotherion 18 mai 2019 à 15:41:14

    • Partager sur Facebook
    • Partager sur Twitter
      20 mai 2019 à 11:02:26

      Salut,

      Doc de Range.Find : https://docs.microsoft.com/fr-fr/office/vba/api/excel.range.find

      Regarde la partie "Remarques" qui donne un exemple de ce que tu pourrais faire avec la boucle et le mot-clé "Like", à l'exception que tu devrais regarder les valeurs des cellules (pas leur police). Bon du coup ça n'utilise plus Find et ça risque de prendre un temps fou s'il y a beaucoup de lignes.

      Une autre solution pourrait être d'utiliser un filtre et récupérer le numéro des lignes affichées (si c'est possible, je ne sais pas exactement comment c'est géré en VBA le filtre).

      • Partager sur Facebook
      • Partager sur Twitter

      VBA - Recherche

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown