Bonjour,

Je suis face à un nouveau problème sur VBA, après pas mal de recherche j'ai décidé de créer cette discussion. Je débute sur VBA (je connais depuis à peine une semaine)

Je souhaiterais faire une recherche via un userform, l'idée est qu'une combobox me donne la feuille où chercher, la textbox me donne la valeur que je veux chercher et le reste c'est du code pour trouver les lignes correspondantes à ma valeur. Pour se faire j'ai utilisé la fonction .find (xlpart) pour trouver toutes les lignes qui correspondraient à ce que j'écrit en partie. (j'espère que c'est clair )

Mon problème est que quand j'ai un équipement qui porte uniquement 2 lettres, la copie ne se fait pas dans le tableau sur la feuille "recherche", pour que ca fonctionne je dois activer le Matchcase, mais je ne veux pas le faire sinon la recherche deviendra trop compliqué (entre autre, certains équipements sont rentrés en acronymes et d'autre en toutes lettres, la recherche dois pouvoir se faire avec et sans majuscules donc)

Je dois donc pouvoir rechercher n'importe quoi dans ma feuille active, dans la colonne A, et renvoyer une erreur quand aucune occurrence n'est trouvée.

Ma recherche ne fonctionne pas quand il y a moins de 3 lettres et l'erreur m'est renvoyée systématiquement même si je trouve une occurrence.

Merci d'avance pour votre aide.

Voici mon code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
Private Sub CommandButton2_Click()
 
 
 
Sheets("Recherche").Cells.Clear 'supression de ce qui se trouve sur la feuille recherche
 
 
 
If ComboBox1.Value = "" Then MsgBox "Veuillez indiquer le domaine d'application de votre recherche.", 64, "Erreur"
 
If TextBox1.Value = "" Then MsgBox "Veuillez indiquer un nom d'équipement pour effectuer une recherche.", 64, "Erreur"
 
 
 
Dim valcherche As String
 
Dim i As Long
 
Dim domaine As String
 
Dim trouve As Variant
 
Dim adressetrouvee As String
 
Dim plage As String
 
 
 
domaine = ComboBox1.Value
 
valcherche = TextBox1.Value
 
trouve = Sheets(domaine).Cells.Find(what:=valcherche, SearchOrder:=xlByRows, MatchCase:=False, LookAt:=xlPart)
 
 
 
For i = 1 To Sheets(domaine).Range("A65536").End(xlUp).Row
 
 
 
If Sheets(domaine).Cells(i, 1) = trouve Then
 
        Sheets(domaine).Rows(i).Copy Worksheets("Recherche").Rows(Worksheets("Recherche").Range("A65536").End(xlUp).Row + 1)
 
 
 
        With Selection                              ' mise en page de la copie
 
        .HorizontalAlignment = xlCenter
 
        .VerticalAlignment = xlCenter
 
        .WrapText = True
 
        .Orientation = 0
 
        .AddIndent = False
 
        .IndentLevel = 0
 
        .ShrinkToFit = False
 
        .ReadingOrder = xlContext
 
        .MergeCells = False
 
    End With
 
   If trouve = "" Then
 
    MsgBox "Aucune occurance trouvée ! Essayez de changer le nom de l'équipement ou le domaine d'application.", 64, "Erreur"
 
    End If
 
End If
 
 
 
Next i
 
 
 
Sheets("recherche").Activate    'pour visualiser notre recherche dans la feuille en question
 
 
 
End Sub