Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Find sans recommencer

3 réponses
Avatar
Denys
Bonjour =E0 tous,

Sur un userform, j'ai cr=E9=E9 deux boutons de commandes "Suivant" et
"Pr=E9c=E9dent", utilisant tous les deux la fonction Find.

Cependant, peu importe le bouton utilis=E9, 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=E9ro demand=E9, alors qu'un message apparaisse disant que ce
num=E9ro n'apparait plus. On devra alors utiliser le bouton "Pr=E9c=E9dent"
pour revoir les num=E9ros apparaissant avant...

Voici le code:

Sub RechercheApres()
Dim valeur, vt
valeur =3D ActiveCell.Value
ActiveCell.Select
ActiveSheet.Cells.Find(What:=3Dvaleur, After:=3DActiveCell, _
LookIn:=3DxlFormulas, LookAt:=3D _
xlPart, SearchOrder:=3DxlByRows, SearchDirection:=3DxlNext, _
MatchCase:=3DTrue) _
.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=E9e pour qu'Excel ne recommence pas la recherche
encore et encore...
J'appliquerai la m=EAme m=E9thode pour Sub RechercheAvant()

Merci pour votre temps

Denys

3 réponses

Avatar
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é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)))

Avatar
Denys
On 10 avr, 15:46, "Modeste" wrote:
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


Avatar
MichDenis
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" a écrit dans le message de news:

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