aurelien2723
Messages postés181Date d'inscriptionjeudi 12 janvier 2006StatutMembreDernière intervention26 janvier 2011
-
11 avril 2007 à 08:45
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 2018
-
12 avril 2007 à 00:16
Salut!
J'aimerais faire une recherche d'un mot entré dans une "entry" dans une feuille excel, en excluant la première colonne.
Le but étant de récupérer toutes les lignes correspondante aux cellule trouvée.
J'ai ceci :
Dim resultatRecherche As Variant
Dim chaine As String ' rempli plus haut
Sheets(2).Activate
'on recherche sur toutes la feuille, sauf la première colonne,
Columns("B:IV").Select
' si aucun résultat est renvoyé, on affiche une popup
If (resultatRecherche Is Nothing) Then
rmsgbox = MsgBox("Aucun résultat trouvé pour " + Chr(34) + chaine + Chr(34), vbOKOnly + vbExclamation, "Recherche")
Exit Sub
End If
Dim ligne As Integer
ligne = ActiveCell.Row
le problème est que mon numéro de ligne est toujours à 1... alors que le premier résultat devrait être 4.
En débuggant, on voit bien que le cellule active ne se met pas sur le résultat de la recherche. pourquoi?
Merci beaucoup pour votre aide! :)
A voir également:
Rechercher une valeur dans une autre feuille excel vba
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 11 avril 2007 à 08:52
Salut,
Normal, car ActiveCell ne change pas si tu n'actives pas resultatRecherche
En ajoutant ceic cela devrait fonctionner. Essaies ceci
Dim resultatRecherche As Range
Dim chaine As String ' rempli plus haut
Sheets(2).Activate
'on recherche sur toutes la feuille, sauf la première colonne,
Columns("B:IV").Select
' si aucun résultat est renvoyé, on affiche une popup
If (resultatRecherche Is Nothing) Then
rmsgbox = MsgBox("Aucun résultat trouvé pour " + Chr(34) + chaine + Chr(34), vbOKOnly + vbExclamation, "Recherche")
Else
resultatRecherche.Activate
Dim ligne As Integer
ligne = ActiveCell.Row
End If , ----
[code.aspx?ID=41455 By Renfield]
aurelien2723
Messages postés181Date d'inscriptionjeudi 12 janvier 2006StatutMembreDernière intervention26 janvier 20111 11 avril 2007 à 08:58
Ok merci!!! :)
Ca fonctionne, merci julien ;)
Vraiment du mal en VBA... :(
Je voulais essayer d'utiliser aussi
....find(....).row pour avoir directement la ligne, mais le type ne correspond pas d'après le debugger... (j'ai testé variant et integer)
Savez vous où trouver une doc correct sur toutes ces fonctions VBA svp?
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 11 avril 2007 à 09:07
Re,
"Savez vous où trouver une doc correct sur toutes ces fonctions VBA svp?" Oula ben alors là j'en ai aucune idée. Parce que tu as d'autres soucis? En revanche je sais que ce forum pourra t'être très utile si tu viens avec des problèmes bien décrits (comme celui que tu viens d'exposer)
NOTE: Si tu estimes que ton problème est résolu, penses à appuyer sur le bouton "réponse acceptée" sur le ou les posts qui ont pu t'aider.
aurelien2723
Messages postés181Date d'inscriptionjeudi 12 janvier 2006StatutMembreDernière intervention26 janvier 20111 11 avril 2007 à 09:41
"Oula ben alors là j'en ai aucune idée."
C'est bien ce que je craignait... :(
J'ai pas spécialement de soucis, mais tu sais jamais ce que renvoi les fonction, ou encore par exemple le find ben tu découvres en te promenant sur les forums que tu peux mettre .row après ou encore .address ... enfin des trucs que tu sais pas d'où ça vient et à quoi ça sert.
Pour "réponse acceptée" j'attendais que le sujet soit clos, sinon plus personne vient lire :P
Merci :)
Vous n’avez pas trouvé la réponse que vous recherchez ?
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 11 avril 2007 à 09:54
Salut,
En fait ce qu'il te faut c'est utiliser l'explorateur d'objets correctement (F2 dans l'IDE VBA)
En fait il te permettra de découvrir plein de chose.
Continuons avec notre exemple
Déjà il faut connaitre le Type de Selection: = > pas donné mais c'est un Type Range .
En partant de là, dans l'explorateur d'objet, Recherche Range en filtrant Pour les objet Excel (la ou il y a marque <toutes les bibliothèques>) . Recherche dans la liste Bibliothèque : Excel Class: Range Tu as alors toutes les méthodes et propriétés disponibles pour Range.
Recherche Alors dans la nouvelle liste la methode Find.
Tu as alors tout en bas ceci qui s'affiche.
Function Find(What, [After], [LookIn], [LookAt], [SearchOrder], [SearchDirection As XlSearchDirection = xlNext], [MatchCase], [MatchByte]) As Range
Membre de Excel.Range
Et hoop tu sais a présent que le résultat retourne est de type Range. Donc à partir de la tu peux considérer
Selection.Find(chaine, ActiveCell, xlFormulas, xlPart, xlByColumns, xlNext, False, False)
Comme une range et donc Mettre .Row, Ou .Adresse Bref tu peux mettre tout ce qui caractérise une Range.
En revanche Si tu stocke le résultat il faut t'assurer que tu le stocke dans une variable de meme type.
=> Dim resultatRecherche As Range
Si tu veux stocke .Row (=> Explorateur d'objet et tu verras que Row et de type Long)
Voila j'espère avoir été clair et avoir pu t'aider un peu plus.
@+: Ju£i?n
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 11 avril 2007 à 11:51
Je ne suis pas certain, mais je pense qu'en mettant .Select à la recherche, ça peut planter si la recherche n'a rien trouvé... (?)
Tu peux aussi retracer la ligne en utilisant l'adresse de la Recherche
Set Recherche = Columns("B:IV").Find(chaine,,xlValues)
If Not Recherche Is Nothing then
Ligne = Recherche.Row ' ou Range(Recherche.Address).Row
Else
Msgbox "Donnée introuvable"
End if
Attention aussi en mettant xlFormulas qui semble être par défaut. Préfère xlValues si tu ne dois pas rechercher du texte à l'intérieur d'une formule, mais plutôt dans le texte d'une cellule.
aurelien2723
Messages postés181Date d'inscriptionjeudi 12 janvier 2006StatutMembreDernière intervention26 janvier 20111 11 avril 2007 à 14:08
Merci Julien ;)
J'avais déjà regarder un peu, mais la c'est plus clair :)
Sinon oui j'y avais penser Mpi, d'ailleurs ça ne marche pas :( :
'resultatRecherche est un variant
Sheets(2).Cells(1, 1).Activate
' et on recherche sur toutes la feuille, sauf la première colonne,
Set resultatRecherche = Columns("B:IV").Find(What:=chaine, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False)