Bonjour à tous, bonjour le forum.
J'ai créé un bout de code qui permet de faire une recherche dans une feuille d'un classeur.
Et en fait, j'aimerai faire cette recherche sur des feuilles différentes de mon classeur.
En écrivant le code, je me suis rendu compte qu'à part le nom de la feuille où s'effectue la recherche, le code est absolument identique.
Ma macro fonctionne parfaitement bien, mais elle est très longue et très répétitive.
J'aimerai donc alléger mon code en créant une fonction que j’appellerai suivant la feuille sur laquelle je fais la recherche.
Mais voilà, je ne sais pas vraiment faire une fonction, comment définir la variable et comment l'appeler dans la macro principale
J'ai regardé un peu les tutoriaux mais bon, voilà, j'ai pas vraiment réussi...
La seule chose qui change est le nom de la feuille qui dans cet exemple s'appelle "PRODUCT KNOWLEDGE".
Dans ce code, j'ai un moteur de recherche sur la feuille SEARCH ENGINE, suivant les critères rentrés je vais chercher mes info dans la feuille PRODUCT KNOWLEDGE et je les copie dans un tableau dans la feuille SEARCH RESULTS.
Ceci n'est qu'une partie du code mais c'est celle qui revient à l'identique si je veux faire une recherche dans une autre feuille.
Si vous pouviez m''aider que vous en serait très très reconnaissante !!!
Par avance merci
Gwen
J'ai créé un bout de code qui permet de faire une recherche dans une feuille d'un classeur.
Et en fait, j'aimerai faire cette recherche sur des feuilles différentes de mon classeur.
En écrivant le code, je me suis rendu compte qu'à part le nom de la feuille où s'effectue la recherche, le code est absolument identique.
Ma macro fonctionne parfaitement bien, mais elle est très longue et très répétitive.
J'aimerai donc alléger mon code en créant une fonction que j’appellerai suivant la feuille sur laquelle je fais la recherche.
Mais voilà, je ne sais pas vraiment faire une fonction, comment définir la variable et comment l'appeler dans la macro principale
J'ai regardé un peu les tutoriaux mais bon, voilà, j'ai pas vraiment réussi...
Code:
If Not Sheets("SEARCH ENGINE").Range("g" & i & ":J" & i).Find(True) Is Nothing Then
valeur = Sheets("SEARCH ENGINE").Range("A" & i).Value
Set r = Sheets("PRODUCT KNOWLEDGE").Rows(2).Find(valeur, , xlValues, xlWhole)
If Not r Is Nothing Then col = r.Column
If Sheets("SEARCH RESULTS").Columns(l).Value = "" Then
Sheets("PRODUCT KNOWLEDGE").Cells(2, col).Copy
Sheets("SEARCH RESULTS").Cells(2, l).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
colnew = Sheets("SEARCH RESULTS").Cells(2, l).Column
Else:
Sheets("SEARCH RESULTS").Cells(2, l + 1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
colnew = Sheets("SEARCH RESULTS").Cells(2, l + 1).Column
End If
l = l + 1
For j = 3 To fintableau
If Sheets("SEARCH ENGINE").Range("G" & i).Value = True Then
If Sheets("PRODUCT KNOWLEDGE").Cells(j, col).Value = "1" Then
If Sheets("SEARCH RESULTS").Range("a" & k).Value = "" Then
Sheets("PRODUCT KNOWLEDGE").Range("A" & j & ":D" & j).Copy
Sheets("SEARCH RESULTS").Range("a" & k).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("SEARCH RESULTS").Cells(k, colnew).Value = "1"
Else:
Sheets("SEARCH RESULTS").Range("a" & k + 1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("SEARCH RESULTS").Cells(k + 1, colnew).Value = "1"
End If
k = k + 1
End If
End If
Next
End if
La seule chose qui change est le nom de la feuille qui dans cet exemple s'appelle "PRODUCT KNOWLEDGE".
Dans ce code, j'ai un moteur de recherche sur la feuille SEARCH ENGINE, suivant les critères rentrés je vais chercher mes info dans la feuille PRODUCT KNOWLEDGE et je les copie dans un tableau dans la feuille SEARCH RESULTS.
Ceci n'est qu'une partie du code mais c'est celle qui revient à l'identique si je veux faire une recherche dans une autre feuille.
Si vous pouviez m''aider que vous en serait très très reconnaissante !!!
Par avance merci
Gwen