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

boucle sur recherche FindNext

5 réponses
Avatar
Serge
Bonjour ,
voilà un problème certainement très simple pour les cadors d'excel-VBA :
Je cherche toutes les occurences de "SPARE PARTS" en colonne A et B.
Le code que j'ai écrit boucle : je trouve bien toutes les occurences (avec
récupération d'un objet Range) mais je reviens à la première occurence et
c'est donc sans fin.
Je me suis demandé si ce n'était le After:=activeCell du FindNext qui était
mauvais mais dans ce cas, je trouverais toujours la 1ère occurence ?
Ensuite je voulais essayer de me positionner par rapport au résultat
précédent avec After:=spare(i-1).xxxxx mais je ne sais pas quoi mettre pour
le xxxxx

Bref si qqun peut m'aider, merci.
Serge


code :
------
Dim spare(16) As Range
i = 0
Set spare(i) = Range("A:B").Find("SPARE PART", _
LookIn:=xlValues, LookAt:=xlPart, _
After:=ActiveCell, SearchDirection:=xlNext, _
SearchFormat:=False )
Do
If spare(i) Is Nothing Then Exit Do
i = i + 1
Set spare(i) = Range("A:B").FindNext(After:=ActiveCell)
Loop

5 réponses

Avatar
anonymousA
bonjour,

un code pour détecter et constituer une plage de toutes les cellules
disposant d'une valeur déetrminée.A adapter bien sur.

Sub recherchevaleurs_et_selection_plages_discontinues()

Dim plage As Range

With Worksheets(1).Range("A1:A65536") 'recherche dans colonne A.Pour
ensemeble feuille remplacer par cells
Set C = .Find(What:="60")
If Not C Is Nothing Then
firstAddress = C.Address
Set plage = C
Do
Set plage = Union(C, plage)
Set C = .FindNext(C)
Loop While Not C Is Nothing And C.Address <> firstAddress
End If



End With

end sub

A+

Bonjour ,
voilà un problème certainement très simple pour les cadors d'excel-VBA :
Je cherche toutes les occurences de "SPARE PARTS" en colonne A et B.
Le code que j'ai écrit boucle : je trouve bien toutes les occurences (avec
récupération d'un objet Range) mais je reviens à la première occurence et
c'est donc sans fin.
Je me suis demandé si ce n'était le After:¬tiveCell du FindNext qui était
mauvais mais dans ce cas, je trouverais toujours la 1ère occurence ?
Ensuite je voulais essayer de me positionner par rapport au résultat
précédent avec After:=spare(i-1).xxxxx mais je ne sais pas quoi mettre pour
le xxxxx

Bref si qqun peut m'aider, merci.
Serge


code :
------
Dim spare(16) As Range
i = 0
Set spare(i) = Range("A:B").Find("SPARE PART", _
LookIn:=xlValues, LookAt:=xlPart, _
After:¬tiveCell, SearchDirection:=xlNext, _
SearchFormat:úlse )
Do
If spare(i) Is Nothing Then Exit Do
i = i + 1
Set spare(i) = Range("A:B").FindNext(After:¬tiveCell)
Loop




Avatar
Serge
merci pour le code.
serge

"anonymousA" a écrit dans le message de news:
421743f8$0$828$
bonjour,

un code pour détecter et constituer une plage de toutes les cellules
disposant d'une valeur déetrminée.A adapter bien sur.

Sub recherchevaleurs_et_selection_plages_discontinues()

Dim plage As Range

With Worksheets(1).Range("A1:A65536") 'recherche dans colonne A.Pour
ensemeble feuille remplacer par cells
Set C = .Find(What:="60")
If Not C Is Nothing Then
firstAddress = C.Address
Set plage = C
Do
Set plage = Union(C, plage)
Set C = .FindNext(C)
Loop While Not C Is Nothing And C.Address <> firstAddress
End If



End With

end sub

A+

Bonjour ,
voilà un problème certainement très simple pour les cadors d'excel-VBA :
Je cherche toutes les occurences de "SPARE PARTS" en colonne A et B.
Le code que j'ai écrit boucle : je trouve bien toutes les occurences
(avec récupération d'un objet Range) mais je reviens à la première
occurence et c'est donc sans fin.
Je me suis demandé si ce n'était le After:¬tiveCell du FindNext qui
était mauvais mais dans ce cas, je trouverais toujours la 1ère occurence
?
Ensuite je voulais essayer de me positionner par rapport au résultat
précédent avec After:=spare(i-1).xxxxx mais je ne sais pas quoi mettre
pour le xxxxx

Bref si qqun peut m'aider, merci.
Serge


code :
------
Dim spare(16) As Range
i = 0
Set spare(i) = Range("A:B").Find("SPARE PART", _
LookIn:=xlValues, LookAt:=xlPart, _
After:¬tiveCell, SearchDirection:=xlNext, _
SearchFormat:úlse )
Do
If spare(i) Is Nothing Then Exit Do
i = i + 1
Set spare(i) = Range("A:B").FindNext(After:¬tiveCell)
Loop





Avatar
Serge
ça fonctionne bien j'ai bien mes cellules dans plage
Par contre j'ai encore un problème jsute après pour parcourir la plage. Je
pensais qu'un simple for each allait fonctionner mais j'ai une erreur sur
l'appel de subroutine. je ne comprends car pourtant cc est bien un objet
Range.


For Each cc In plage
rtn (cc) ====> erreur '424' : "objet requis"
Next

sub rtn (rg as range)


merci.
Serge



"anonymousA" a écrit dans le message de news:
421743f8$0$828$
bonjour,

un code pour détecter et constituer une plage de toutes les cellules
disposant d'une valeur déetrminée.A adapter bien sur.

Sub recherchevaleurs_et_selection_plages_discontinues()

Dim plage As Range

With Worksheets(1).Range("A1:A65536") 'recherche dans colonne A.Pour
ensemeble feuille remplacer par cells
Set C = .Find(What:="60")
If Not C Is Nothing Then
firstAddress = C.Address
Set plage = C
Do
Set plage = Union(C, plage)
Set C = .FindNext(C)
Loop While Not C Is Nothing And C.Address <> firstAddress
End If



End With

end sub

A+

Bonjour ,
voilà un problème certainement très simple pour les cadors d'excel-VBA :
Je cherche toutes les occurences de "SPARE PARTS" en colonne A et B.
Le code que j'ai écrit boucle : je trouve bien toutes les occurences
(avec récupération d'un objet Range) mais je reviens à la première
occurence et c'est donc sans fin.
Je me suis demandé si ce n'était le After:¬tiveCell du FindNext qui
était mauvais mais dans ce cas, je trouverais toujours la 1ère occurence
?
Ensuite je voulais essayer de me positionner par rapport au résultat
précédent avec After:=spare(i-1).xxxxx mais je ne sais pas quoi mettre
pour le xxxxx

Bref si qqun peut m'aider, merci.
Serge


code :
------
Dim spare(16) As Range
i = 0
Set spare(i) = Range("A:B").Find("SPARE PART", _
LookIn:=xlValues, LookAt:=xlPart, _
After:¬tiveCell, SearchDirection:=xlNext, _
SearchFormat:úlse )
Do
If spare(i) Is Nothing Then Exit Do
i = i + 1
Set spare(i) = Range("A:B").FindNext(After:¬tiveCell)
Loop





Avatar
anonymousA
re,

écire call rtn(cc) ou rtn cc car le call exige qu'un argument soit passé
par parentèses alors que l'absence de call s'en dispense et même ne
pourrait fonctionner avec.

A+

ça fonctionne bien j'ai bien mes cellules dans plage
Par contre j'ai encore un problème jsute après pour parcourir la plage. Je
pensais qu'un simple for each allait fonctionner mais j'ai une erreur sur
l'appel de subroutine. je ne comprends car pourtant cc est bien un objet
Range.


For Each cc In plage
rtn (cc) ====> erreur '424' : "objet requis"
Next

sub rtn (rg as range)


merci.
Serge



"anonymousA" a écrit dans le message de news:
421743f8$0$828$

bonjour,

un code pour détecter et constituer une plage de toutes les cellules
disposant d'une valeur déetrminée.A adapter bien sur.

Sub recherchevaleurs_et_selection_plages_discontinues()

Dim plage As Range

With Worksheets(1).Range("A1:A65536") 'recherche dans colonne A.Pour
ensemeble feuille remplacer par cells
Set C = .Find(What:="60")
If Not C Is Nothing Then
firstAddress = C.Address
Set plage = C
Do
Set plage = Union(C, plage)
Set C = .FindNext(C)
Loop While Not C Is Nothing And C.Address <> firstAddress
End If



End With

end sub

A+


Bonjour ,
voilà un problème certainement très simple pour les cadors d'excel-VBA :
Je cherche toutes les occurences de "SPARE PARTS" en colonne A et B.
Le code que j'ai écrit boucle : je trouve bien toutes les occurences
(avec récupération d'un objet Range) mais je reviens à la première
occurence et c'est donc sans fin.
Je me suis demandé si ce n'était le After:¬tiveCell du FindNext qui
était mauvais mais dans ce cas, je trouverais toujours la 1ère occurence
?
Ensuite je voulais essayer de me positionner par rapport au résultat
précédent avec After:=spare(i-1).xxxxx mais je ne sais pas quoi mettre
pour le xxxxx

Bref si qqun peut m'aider, merci.
Serge


code :
------
Dim spare(16) As Range
i = 0
Set spare(i) = Range("A:B").Find("SPARE PART", _
LookIn:=xlValues, LookAt:=xlPart, _
After:¬tiveCell, SearchDirection:=xlNext, _
SearchFormat:úlse )
Do
If spare(i) Is Nothing Then Exit Do
i = i + 1
Set spare(i) = Range("A:B").FindNext(After:¬tiveCell)
Loop









Avatar
Serge
D'un autre côté, je me suis aussi lancé dans le VB standard où les appels se
font par "rtn (cc)". C'est bien du Microsoft ça !

Maintenant tout marche nickel.
Merci.
Serge


"anonymousA" a écrit dans le message de news:
42176ab2$0$828$
re,

écire call rtn(cc) ou rtn cc car le call exige qu'un argument soit passé
par parentèses alors que l'absence de call s'en dispense et même ne
pourrait fonctionner avec.

A+

ça fonctionne bien j'ai bien mes cellules dans plage
Par contre j'ai encore un problème jsute après pour parcourir la plage.
Je pensais qu'un simple for each allait fonctionner mais j'ai une erreur
sur l'appel de subroutine. je ne comprends car pourtant cc est bien un
objet Range.


For Each cc In plage
rtn (cc) ====> erreur '424' : "objet requis"
Next

sub rtn (rg as range)


merci.
Serge



"anonymousA" a écrit dans le message de news:
421743f8$0$828$

bonjour,

un code pour détecter et constituer une plage de toutes les cellules
disposant d'une valeur déetrminée.A adapter bien sur.

Sub recherchevaleurs_et_selection_plages_discontinues()

Dim plage As Range

With Worksheets(1).Range("A1:A65536") 'recherche dans colonne A.Pour
ensemeble feuille remplacer par cells
Set C = .Find(What:="60")
If Not C Is Nothing Then
firstAddress = C.Address
Set plage = C
Do
Set plage = Union(C, plage)
Set C = .FindNext(C)
Loop While Not C Is Nothing And C.Address <> firstAddress
End If



End With

end sub

A+


Bonjour ,
voilà un problème certainement très simple pour les cadors d'excel-VBA :
Je cherche toutes les occurences de "SPARE PARTS" en colonne A et B.
Le code que j'ai écrit boucle : je trouve bien toutes les occurences
(avec récupération d'un objet Range) mais je reviens à la première
occurence et c'est donc sans fin.
Je me suis demandé si ce n'était le After:¬tiveCell du FindNext qui
était mauvais mais dans ce cas, je trouverais toujours la 1ère occurence
?
Ensuite je voulais essayer de me positionner par rapport au résultat
précédent avec After:=spare(i-1).xxxxx mais je ne sais pas quoi mettre
pour le xxxxx

Bref si qqun peut m'aider, merci.
Serge


code :
------
Dim spare(16) As Range
i = 0
Set spare(i) = Range("A:B").Find("SPARE PART", _
LookIn:=xlValues, LookAt:=xlPart, _
After:¬tiveCell, SearchDirection:=xlNext, _
SearchFormat:úlse )
Do
If spare(i) Is Nothing Then Exit Do
i = i + 1
Set spare(i) = Range("A:B").FindNext(After:¬tiveCell)
Loop