Find sans recommencer

Le
Denys
Bonjour tous,

Sur un userform, j'ai cr deux boutons de commandes "Suivant" et
"Prcdent", utilisant tous les deux la fonction Find.

Cependant, peu importe le bouton utilis, Excel recommence sans cesse
la recherche, alors que je voudrais qu'il ne le fasse que dans une
direction seulement. Si, en descendant dans la colonne il ne rencontre
plus le numro demand, alors qu'un message apparaisse disant que ce
numro n'apparait plus. On devra alors utiliser le bouton "Prcdent"
pour revoir les numros apparaissant avant

Voici le code:

Sub RechercheApres()
Dim valeur, vt
valeur = ActiveCell.Value
ActiveCell.Select
ActiveSheet.Cells.Find(What:=valeur, After:=ActiveCell, _
LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=True) _
.Activate

If ActiveCell <> valeur Then MsgBox ("La valeur n'apparait plus
ensuite dans cette colonne")

Unload Userform4
Userform4.Show
End Sub

Quelqu'un aurait une ide pour qu'Excel ne recommence pas la recherche
encore et encore
J'appliquerai la mme mthode pour Sub RechercheAvant()

Merci pour votre temps

Denys
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Modeste
Le #4394741
Bonsour® Denys avec ferveur ;o))) vous nous disiez :

Cependant, peu importe le bouton utilisé, Excel recommence sans cesse
la recherche, alors que je voudrais qu'il ne le fasse que dans une
direction seulement. Si, en descendant dans la colonne il ne rencontre
plus le numéro demandé, alors qu'un message apparaisse disant que ce
numéro n'apparait plus. On devra alors utiliser le bouton "Précédent"
pour revoir les numéros apparaissant avant...


tiré directement de l'aide en ligne :

Methode Find telle qu'elle s'applique à l'objet Range :
Lorsque la recherche atteint la fin de la plage de recherche spécifiée, elle
revient au début de cette plage.
Pour arrêter une recherche lorsqu'elle revient au point de départ,
enregistrez l'adresse de la première cellule trouvée,
puis comparez l'adresse de chaque cellule ultérieurement trouvée avec l'adresse
enregistrée.

Exemple
Cet exemple montre comment rechercher toutes les cellules de la plage A1:A500
dans la feuille de calcul Worksheet 1 contenant la valeur 2
et comment la remplacer par la valeur 5.

With Worksheets(1).Range("a1:a500")
Set c = .Find(2, lookin:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
c.Value = 5
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End With


--
--
@+
;o)))

Denys
Le #4394731
On 10 avr, 15:46, "Modeste"
Bonsour® Denys avec ferveur ;o))) vous nous disiez :

Cependant, peu importe le bouton utilisé, Excel recommence sans cesse
la recherche, alors que je voudrais qu'il ne le fasse que dans une
direction seulement. Si, en descendant dans la colonne il ne rencontre
plus le numéro demandé, alors qu'un message apparaisse disant que ce
numéro n'apparait plus. On devra alors utiliser le bouton "Précéd ent"
pour revoir les numéros apparaissant avant...


tiré directement de l'aide en ligne :

Methode Find telle qu'elle s'applique à l'objet Range :
Lorsque la recherche atteint la fin de la plage de recherche spécifié e, elle
revient au début de cette plage.
Pour arrêter une recherche lorsqu'elle revient au point de départ,
enregistrez l'adresse de la première cellule trouvée,
puis comparez l'adresse de chaque cellule ultérieurement trouvée avec l'adresse
enregistrée.

Exemple
Cet exemple montre comment rechercher toutes les cellules de la plage A1: A500
dans la feuille de calcul Worksheet 1 contenant la valeur 2
et comment la remplacer par la valeur 5.

With Worksheets(1).Range("a1:a500")
Set c = .Find(2, lookin:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
c.Value = 5
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End With

--
--
@+
;o)))


Bonjour Modeste,

Merci, j'avais consulté l'aide en ligne. J'aurais dû préciser que la
plage est variable. Mais je vais quand même essayer avec G2:G50000
pour voir, et je reviendrai si ça ne fonctionne pas....

Si entretemps il y a d'autres suggestions...

Merci

Denys


MichDenis
Le #4394631
Voici une façon de faire .... http://cjoint.com/?eleTFRce4f

IMPORTANT : tu dois ajouter la référence suivante à ton projet :
"Microsoft activex data object 2.8 librairy"

dans la fenêtre de l'éditeur de code : barre des menus / outils / référence...
et tu coches la référence suivante :



"Denys"
Bonjour à tous,

Sur un userform, j'ai créé deux boutons de commandes "Suivant" et
"Précédent", utilisant tous les deux la fonction Find.

Cependant, peu importe le bouton utilisé, Excel recommence sans cesse
la recherche, alors que je voudrais qu'il ne le fasse que dans une
direction seulement. Si, en descendant dans la colonne il ne rencontre
plus le numéro demandé, alors qu'un message apparaisse disant que ce
numéro n'apparait plus. On devra alors utiliser le bouton "Précédent"
pour revoir les numéros apparaissant avant...

Voici le code:

Sub RechercheApres()
Dim valeur, vt
valeur = ActiveCell.Value
ActiveCell.Select
ActiveSheet.Cells.Find(What:=valeur, After:¬tiveCell, _
LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=True) _
.Activate

If ActiveCell <> valeur Then MsgBox ("La valeur n'apparait plus
ensuite dans cette colonne")

Unload Userform4
Userform4.Show
End Sub

Quelqu'un aurait une idée pour qu'Excel ne recommence pas la recherche
encore et encore...
J'appliquerai la même méthode pour Sub RechercheAvant()

Merci pour votre temps

Denys
Publicité
Poster une réponse
Anonyme