[Excel] Fonction de recherche sur un fichier
yy
-
yy -
yy -
Bonjour,
J'avais demandé de l'aide pour effectuer une recherche d'une valeur ou données sur un fichier et on m'avait donné une explication qui fonctionne la voici :
Sub recherche()
Dim rngTrouve As Range
Static strChaine As String
Static Ligne As Long
If Ligne = 0 Then
strChaine = InputBox("Nom à rechercher :")
If strChaine = "" Then Exit Sub
Ligne = 1
End If
For Each rngTrouve In Range("A" & Ligne & ":A" & [A65536].End(xlUp).Row + 1)
If LCase(rngTrouve.Text) = LCase(strChaine) Then
rngTrouve.Activate
Ligne = rngTrouve.Row + 1
Exit Sub
End If
Next
MsgBox "Plus d'occurence ou pas trouvé"
Ligne = 0
Set rngTrouve = Nothing
End Sub
Bref j'ai bien testé le code etc il fonctionne ok mais simplement pour la colonne A du fichier, si je recherche le mot ' test' il le trouvera en A1 A 2 A 3 A5 mais pas en B1 par exemple
Je vois bien que le soucis vient de :
For Each rngTrouve In Range("A" & Ligne & ":A" & [A65536].End(xlUp).Row + 1)
Mais comment parcourir alors tout le fichier colonne par colonne? je vais faire une trentaine de for each pour chaque colonne quand même..
Merci
J'avais demandé de l'aide pour effectuer une recherche d'une valeur ou données sur un fichier et on m'avait donné une explication qui fonctionne la voici :
Sub recherche()
Dim rngTrouve As Range
Static strChaine As String
Static Ligne As Long
If Ligne = 0 Then
strChaine = InputBox("Nom à rechercher :")
If strChaine = "" Then Exit Sub
Ligne = 1
End If
For Each rngTrouve In Range("A" & Ligne & ":A" & [A65536].End(xlUp).Row + 1)
If LCase(rngTrouve.Text) = LCase(strChaine) Then
rngTrouve.Activate
Ligne = rngTrouve.Row + 1
Exit Sub
End If
Next
MsgBox "Plus d'occurence ou pas trouvé"
Ligne = 0
Set rngTrouve = Nothing
End Sub
Bref j'ai bien testé le code etc il fonctionne ok mais simplement pour la colonne A du fichier, si je recherche le mot ' test' il le trouvera en A1 A 2 A 3 A5 mais pas en B1 par exemple
Je vois bien que le soucis vient de :
For Each rngTrouve In Range("A" & Ligne & ":A" & [A65536].End(xlUp).Row + 1)
Mais comment parcourir alors tout le fichier colonne par colonne? je vais faire une trentaine de for each pour chaque colonne quand même..
Merci
3 réponses
-
Bonjour,
As tu au moins essayé de changer quelque chose dans la ligne :For Each rngTrouve In Range("A" & Ligne & ":A" & [A65536].End(xlUp).Row + 1)
Essaye, par pur hasard ceci :For Each rngTrouve In Range("A" & Ligne & ":Z" & [A65536].End(xlUp).Row + 1)
-
-
-
-
Hum ok daccord merci pour l'exemple je vois bien qu'avec ce code il parcourt A1 B1 C1 A2 B2 C2 etc ok donc
For Each rngTrouve In Range("A" & Ligne & ":Z" & [A65536].End(xlUp).Row + 1)
Avec ce bout de code il devrait donc effectivement parcourir l'ensemble du fichier, quand je teste ton code il m'affiche bien le msgbox mais quand je teste ce dernier avec : Z il ne passe pas par B1 pour vérifier la valeur pourquoi? -
-
-
Bonjour
au lieu deFor Each rngTrouve In Range("A" & Ligne & ":A" & [A65536].End(xlUp).Row + 1), écrisFor Each rngTrouve In Range("A" & Ligne & ":Z" & [A65536].End(xlUp).Row + 1)ou Z sera la dernière colonne à parcourir
Bonne suite -
Re
Le problème c'est la variable Ligne qui n'est remise à zéro qu' en fin de sub.
Mais de toutes façons dès qu'une occurrence est trouvée on sort de la sub !!
Essaie :For Each rngTrouve In Range("A1" & ":Z" & [A65536].End(xlUp).Row + 1)
A+