[Excel] Fonction de recherche sur un fichier

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
A voir également:

3 réponses

pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 770
 
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) 

0
Paf
 
désolé pour le doublon !

pas vu de réponse quand j'ai commencé à répondre
0
yy
 
J'avais essayé mais ça ne fonctionnait pas non plus, c'est le lien pour passer de la fin de la colonne A vers la colonne B que j'arrive pas à lier
0
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 770
 
Bonjour,
Pour comprendre comment fonctionne le For Each, essaye cette procédure de test :
Sub Essai() 
Dim rngTrouve As Range 
Static Ligne As Long 
Ligne = 1
For Each rngTrouve In Range("A" & Ligne & ":C" & 2) 
MsgBox rngTrouve.Address 
Next
End Sub 
0
yy
 
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?
0
yy
 
En fait si je teste la valeur 'test" dans A1 A2 B1 B2 B6 A8 B10

Il va le trouver partout sauf dans B1 et B2
0
Paf
 
Bonjour
au lieu de
For Each rngTrouve In Range("A" & Ligne & ":A" & [A65536].End(xlUp).Row + 1) 
, écris
For Each rngTrouve In Range("A" & Ligne & ":Z" & [A65536].End(xlUp).Row + 1)
ou Z sera la dernière colonne à parcourir

Bonne suite
0
Paf
 
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+
0