recherche de caractères dans une colonne

Francis

XLDnaute Junior
Bonjour
J’ai réalisé une petite application pour rechercher des caractères dans une colonne. Cela marche, mais dès que je mets ces lignes dans un formulaire. Rien ne va plus :
Soit qu’on me dit ' Bloc if sans end if ', et si j’en mets un on me signale ' erreur d’execution13 '
Quelqu'un pourrait-il me guider pour corriger ces lignes
et me conseiller pour que mon application ne tienne pas compte de la casse lors de la recherche.
Merci
Francis

Sub motàtrouver()
Dim MotCherché As Variant
Dim ValTest As String
Application.ScreenUpdating = False

ValTest = ActiveCell.Value
derligne = Cells(Rows.Count, 'f').End(xlUp).Row
Range(Cells(11, 1), Cells(derligne, 9)).EntireRow.Select
Selection.EntireRow.Hidden = True

n = 6
For l = derligne To 11 Step -1
MotCherché = Application.Find(ValTest, Cells(l, n))
If Not (IsError(MotCherché)) Then _
Cells(l, n).EntireRow.Hidden = False
Next
Range('a1').Select
End Sub
 

Léa

Nous a quitté
Repose en paix
Bonjour Francis,


J'ai testé ton code et tout marche bien, je ne vois aucune erreur flagrante
Un petit conceil si je peux me permettre : évite les accents en VBA
exemple :
Sub motàtrouver()
ou encore
Dim MotCherché As Variant
c'est parfois cause d'erreur, tout comme les espaces

Bon dimanche
 

CBernardT

XLDnaute Barbatruc
Bonjour Francis et Léa


Effectivement, comme le dit Léa, quelques petites corrections doivent apporter un plus :

Il est préférable de déclarer toutes les variables.

Cells(Rows.Count, 'f') peu être remplacer par Range('F65536')

Le code devient :

Sub Recherche()
Dim MotCherche As String
Dim ValTest As String
Dim Derligne As Integer
Dim n As Integer
Dim l As Integer
Application.ScreenUpdating = False

ValTest = ActiveCell.Value
Derligne = Cells(Rows.Count, 'f').End(xlUp).Row
Range(Cells(11, 1), Cells(Derligne, 1)).EntireRow.Hidden = True
n = 6
For l = Derligne To 11 Step -1
MotCherche = Application.Find(ValTest, Cells(l, n))
If Not (IsError(MotCherche)) Then
Cells(l, n).EntireRow.Hidden = False
End If
Next
Range('a1').Select
Application.ScreenUpdating = True
End Sub

Cordialement

CBernardT
 
F

Francis

Guest
Merci à vous deux Léa et CBernardT pour votre rapidité, un petit plus pour CBernardT qui m'a déja répondu l'année derniere dans un tri d'une base de données en généalogie.
Mais pourriez vous me guider pour que mon application ne tienne pas compte de la casse : Si je tape Pierre ou pierre on doit trouver le même résultat .
Merci
Francis
 

Léa

Nous a quitté
Repose en paix
Re

et si tu ajoutais un petit bout de code qui transformerait automatiquement 'pierre' en 'Pierre' ou le contraire selon ton choix

exemple :
prenom = Range('A1').Value
If prenom = 'pierre' Then
prenom = UCase(Left(prenom, 1)) & Right(prenom, Len(prenom) - 1)
Range('A1') = prenom

End If


Bon courage
 

Discussions similaires

Statistiques des forums

Discussions
312 243
Messages
2 086 551
Membres
103 246
dernier inscrit
blablasss