Recherche dans feuille Excel

Bonjour,

voîlà mon petit problème, je souhaite chercher un MotClés associé à différent enseignant, que j'ai noté dans une feuille excel

N'arrivant pas à faire fonctionner la macro Ctrl-F, j'essaye de le faire avec un While mais toujours des erreurs, que je n'arrive pas à corriger. L'onjectif étant de rentrer les différents enseignant associé à ce motclé dans une listbox

Voîlà le code :

Sub Recherche_MotClés_Dans_Classeur_Excel(MotClés As String)

Dim Ligne As Integer

Dim Colonne As Integer

Dim Nb As Integer

Dim Ensei As String

Ligne = 2

MotClés = Mid(MotClés, 7)

With Workbooks("PFE.xlsx").Sheets("MotClés")

While MotClés <> .Range("A" & Ligne).Value

Ligne = Ligne + 1

Wend

If Ligne = 2 Then 'Traitement d'erreur

'A voir plus tard

Else

.Range("A" & Ligne).Select

Selection.End(xlToRight).Select

Nb = ActiveCell.Column

For i = 2 To Nb

Colonne = Asc("B") + i - 2

Ensei = .Range(Str(Colonne) & Ligne).Value 'Dans mon programme j'ai une erreur ici : Erreur définie par l'application ou par l'objet, erreur d'écriture donc, je crois mais je ne trouve pas

Usf_Ensei.LBo_Ensei.AddItem (Ensei)

Next i

End If

End With

End Sub

18motcles.xlsm (22.79 Ko)

Bonjour,

Str() te transforme un nombre en une chaine. C'est dire 66 => "66"

Fais 'affichage / fenetre espions' et quand ça plante sélectionne Str(Colonne) & Ligne et fais un cliqué-glissé dans la fenetre espion pour visualiser le contenu de l'expression.

C'est Chr() que tu voulais.

Tu as cells(ligne,colonne) qui t'évite cette gymnastique.

Sinon essaie plutôt :

Sub test(MotClés As String)
    Dim c As Range
    UserForm1.ListBox1.Clear
    Set c = [A:A].Find(MotClés, LookIn:=xlValues, lookat:=xlWhole)
    If Not c Is Nothing Then
        If c.Offset(, 1) <> "" Then
            UserForm1.ListBox1.List = Application.Transpose(c.Offset(, 1).Resize(, Cells(c.Row, Columns.Count).End(xlToLeft).Column - 1).Value)
        End If
    Else
        MsgBox "mot clé non trouvé"
    End If
    UserForm1.Show
End Sub
36classeur2.xlsm (29.29 Ko)

Je te remercie, ton find a éclairé ma journée, par contre je n'ai pas compris ta ligne :

UserForm1.ListBox1.List = Application.Transpose(c.Offset(, 1).Resize(, Cells(c.Row, Columns.Count).End(xlToLeft).Column - 1).Value)

Et j'ai modifié le codage du find car celui ci ne fonctionnais pas

Voîlà ce que ça donne :

Sub test(MotClés As String)
    Dim c As Range
    Dim Colonne As Integer
    Colonne = 1

    Usf_Ensei.LBo_Ensei.Clear

    x = Workbooks("PFE.xlsx").Sheets("MotClés").[A:A].Find(What:=MotClés, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByColumns).Address 'J'ai utilisé cette méthode à partir de ce [url=http://www.excel-downloads.com/forum/63274-methode-find-en-vba.html]post[/url]

    If Not x = "" Then
        Set c = Range(x)
        While c.Offset(0, Colonne) <> ""
            Ensei = c.Offset(0, Colonne)
            Usf_Ensei.LBo_Ensei.AddItem (Ensei)
            'Usf_Ensei.LBo_Ensei.List = Application.Transpose(c.Offset(, 1).Resize(, Cells(c.Row, Columns.Count).End(xlToLeft).Column - 1).Value)
            Colonne = Colonne + 1
        Wend
    Else
        MsgBox "mot clé non trouvé"
    End If
End Sub

Re,

UserForm1.ListBox1.List = Application.Transpose(c.Offset(, 1).Resize(, Cells(c.Row, Columns.Count).End(xlToLeft).Column - 1).Value)

Calcule la plage des mots clés et fourni la liste en 1 fois par son range (décaler la cellule du mot clé d'une colonne et l'agrandir du nombre de colonnes -1 de la ligne).

Et comme .List n'accepte qu'un range en colonne et que tu es en ligne j'ai ajouté un transpose().

LookIn:=xlFormulas : recherche dans la formule et non le résultat. Ne marchera plus si demain tu y mets des formules.

LookAt:=xlPart : recherche si la cellule contient et non strictement égale. Te retournera des valeurs que tu ne veux pas.

Un conseil : remet LookIn:=xlValues et lookat:=xlWhole

eric

Rechercher des sujets similaires à "recherche feuille"