Se connecter avec
S'enregistrer | Connectez-vous

[Résolu] Probleme sur une macro de recherche

Dernière réponse : dans Programmation

Bonjour,

je cherche a créer une macro de recherche qui remplacerai la fonction ctrl+F. Après quelques recherches, j'ai pu écrire cette dernière:

  1. Sub recherche()
  2.  
  3. Application.ScreenUpdating = False
  4.  
  5. Dim recherche As String
  6. Dim cellules As Range
  7. Dim plage As Range
  8.  
  9.  
  10. Set plage = Range("J4:R6")
  11.  
  12.  
  13. recherche = InputBox("Quel type de risque cherchez-vous?" & Chr(10) & Chr(10) & "(recherche par mot-clé ou élément-clé )", "Aide à la recherche")
  14.  
  15.  
  16. If recherche = "" Then
  17. MsgBox ("recherche annulée")
  18. Exit Sub
  19.  
  20. Else
  21.  
  22. For Each cellules In plage
  23. cellules.EntireRow.Hidden = True
  24. If InStr(cellules.Text, recherche) Then
  25. cellules.EntireRow.Hidden = False
  26. End If
  27.  
  28. Next
  29.  
  30. Application.ScreenUpdating = True
  31.  
  32. End If
  33.  
  34. End Sub


Malgré tout, un probleme subsiste, la macro ne tient absolument pas compte du texte entré dans l'inputbox. Pour moi le probléme viendra de l'utilisation du InStr.

Merci d'avance pour votre aide

Autres pages sur : resolu probleme macro recherche

Lassé par la pub ? Créez un compte

Meilleure solution

Donc j'ai réussi à compléter la macro, je vous affiche le code utilisé

  1. Sub recherche()
  2.  
  3. Application.ScreenUpdating = False
  4.  
  5. Dim recherche As String
  6. Dim i As Long
  7. Dim j As Long
  8. Dim plage As Range
  9.  
  10. Set plage = Range("F4:H105")
  11.  
  12. recherche = InputBox("Quel type de risque cherchez-vous?" & Chr(10) & Chr(10) & "(recherche par mot-clé)" & Chr(10) & Chr(10) & "(écrire en minuscule)", "Aide à la recherche")
  13.  
  14. If recherche = "" Then
  15. MsgBox ("recherche annulée")
  16. Exit Sub
  17.  
  18. Else
  19.  
  20. For i = plage.Cells.Count To 1 Step -1
  21. j = 1
  22. plage.Cells(i, j).EntireRow.Hidden = True
  23.  
  24. If InStr(plage.Cells(i, j).Text, recherche) > 0 Then
  25. plage.Cells(i, j).EntireRow.Hidden = False
  26. Else
  27. j = j + 1
  28. If InStr(plage.Cells(i, j).Text, recherche) > 0 Then
  29. plage.Cells(i, j).EntireRow.Hidden = False
  30.  
  31. Else
  32. j = j + 1
  33. If InStr(plage.Cells(i, j).Text, recherche) > 0 Then
  34. plage.Cells(i, j).EntireRow.Hidden = False
  35. End If
  36.  
  37. End If
  38.  
  39. End If
  40.  
  41. Next
  42.  
  43. Application.ScreenUpdating = True
  44.  
  45. End If
  46.  
  47. End Sub
Expert Programmation

salut Sepr145,

PLusieurs choses a ajouter a ton code :
1 .crée une variable pour chaque feuille parce que là ton code cherche sur un Range, oui, mais lequel (sur quelle feuille ?)
définie mieux ta plage

2. As tu chercher a voir ce que la fonction Instr() te renvoyait dans l'état actuel des choses ?
si non, affiche son contenu a l'aide d'une "message box", ça pourrai t'aiguiller..

3. tu ne prend pas en compte l'option "ta recherche n'a rien donné". Si tu as effectivement entrer un mot, une recherche mais qu'il ne trouve rien ? et si c'est un chiffre ? Never Trust User Input

++

Bonjour oozenot,

Citation :
1 .crée une variable pour chaque feuille parce que là ton code cherche sur un Range, oui, mais lequel (sur quelle feuille ?)
définie mieux ta plage


Pour moi, il n'est pas nécessaire de définir la feuille vu qu'une seule existe.

Citation :
2. As tu chercher a voir ce que la fonction Instr() te renvoyait dans l'état actuel des choses ?
si non, affiche son contenu a l'aide d'une "message box", ça pourrai t'aiguiller..


afficher le contenu à l'aide d'une "message box" m'a permis de voir que le probléme ne venait pas de la fonction InStr() mais que sa pourrait venir du fait que les colonnes du tableau soit des cellules fusionnées. :??: 

Citation :
3. tu ne prend pas en compte l'option "ta recherche n'a rien donné". Si tu as effectivement entrer un mot, une recherche mais qu'il ne trouve rien ? et si c'est un chiffre

Lors de mes essais, je n'utilisez que des mots que je savais être présent dans le tableau.
Lassé par la pub ? Créez un compte