Dans une procédure, je dois chercher toutes les occurences correspondant à
un critère, je fais donc une recherche (PlageA) avec la fonction "find" puis
parcoure la suite avec la fonction "findnext". Jusque là tout va bien.
Le problème se pose lorsque au sein de cette boucle de recherche, j'insère
une seconde recherche unique (PlageR) avec la fonction "find".
Il semble que cette seconde recherche fasse bugger la fonction findnext
suivante. En effet lorsque l'instruction Findnext s'exécute, le résultat est
"Nothing" alors qu'il existe d'autres occurences.
A noter que si je supprime la seconde recherche (PlageR) la routine
fonctionne parfaitement et toutes les occurences répondant au critère de la
première recherche sont parcourues...
Sub test()
Dim PlageA As Range
Dim PlageR As Range
Set PlageA = Feuil4.Range("A:A").Find(IDSem, LookAt:=xlWhole)
If Not PlageA Is Nothing Then
FirstAddress = PlageA.Address
'Boucle tant qu'il trouve des lignes correspondant
Do
///ACTIONS DIVERSES///
Set PlageR = Feuil2.Range("A:A").Find(FamArt, LookAt:=xlWhole)
If Not PlageR Is Nothing Then
///ACTIONS DIVERSES///
End If
'Cherche l'occurence suivante
Set PlageA = Feuil4.Range("A:A").FindNext(PlageA)
'Boucle tant qu'il y a une occurence différente de la première trouvée
Loop While Not PlageA Is Nothing And PlageA.Address <> FirstAddress
End If
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
MichDenis
Bonjour Thierry,
Je modifierais ta procédure comme ceci :
'------------------------------------------- Sub test() Dim PlageA As Range Dim PlageR As Range Dim Adr As String
With Feuil4.Range("A:A") Set PlageA = .Find(what:=IDSem, LookAt:=xlWhole) If Not PlageA Is Nothing Then FirstAddress = PlageA.Address Adr = FirstAddress 'Boucle tant qu'il trouve des lignes correspondant Do
Set PlageR = Feuil2.Range("A:A").Find(FamArt, LookAt:=xlWhole) If Not PlageR Is Nothing Then
End If
'Cherche l'occurence suivante Set PlageA = .Range("A:A").Find(what:=IDSem, _ After:=.Range(Adr), LookAt:=xlWhole) Adr = PlageA.Address 'Boucle tant qu'il y a une occurence différente de la première trouvée Loop While Not PlageA Is Nothing And PlageA.Address <> FirstAddress End If End With End Sub '-------------------------------------------
"Thierry.E" <aucune_at_aucune.fr> a écrit dans le message de groupe de discussion : OGjjw4Y# Bonjour,
Dans une procédure, je dois chercher toutes les occurences correspondant à un critère, je fais donc une recherche (PlageA) avec la fonction "find" puis parcoure la suite avec la fonction "findnext". Jusque là tout va bien. Le problème se pose lorsque au sein de cette boucle de recherche, j'insère une seconde recherche unique (PlageR) avec la fonction "find". Il semble que cette seconde recherche fasse bugger la fonction findnext suivante. En effet lorsque l'instruction Findnext s'exécute, le résultat est "Nothing" alors qu'il existe d'autres occurences. A noter que si je supprime la seconde recherche (PlageR) la routine fonctionne parfaitement et toutes les occurences répondant au critère de la première recherche sont parcourues...
Sub test() Dim PlageA As Range Dim PlageR As Range
Set PlageA = Feuil4.Range("A:A").Find(IDSem, LookAt:=xlWhole) If Not PlageA Is Nothing Then FirstAddress = PlageA.Address
'Boucle tant qu'il trouve des lignes correspondant Do ///ACTIONS DIVERSES///
Set PlageR = Feuil2.Range("A:A").Find(FamArt, LookAt:=xlWhole) If Not PlageR Is Nothing Then ///ACTIONS DIVERSES/// End If
'Cherche l'occurence suivante Set PlageA = Feuil4.Range("A:A").FindNext(PlageA) 'Boucle tant qu'il y a une occurence différente de la première trouvée Loop While Not PlageA Is Nothing And PlageA.Address <> FirstAddress End If
End Sub
Merci par avance pour votre aide, Thierry
Bonjour Thierry,
Je modifierais ta procédure comme ceci :
'-------------------------------------------
Sub test()
Dim PlageA As Range
Dim PlageR As Range
Dim Adr As String
With Feuil4.Range("A:A")
Set PlageA = .Find(what:=IDSem, LookAt:=xlWhole)
If Not PlageA Is Nothing Then
FirstAddress = PlageA.Address
Adr = FirstAddress
'Boucle tant qu'il trouve des lignes correspondant
Do
Set PlageR = Feuil2.Range("A:A").Find(FamArt, LookAt:=xlWhole)
If Not PlageR Is Nothing Then
End If
'Cherche l'occurence suivante
Set PlageA = .Range("A:A").Find(what:=IDSem, _
After:=.Range(Adr), LookAt:=xlWhole)
Adr = PlageA.Address
'Boucle tant qu'il y a une occurence différente de la première trouvée
Loop While Not PlageA Is Nothing And PlageA.Address <> FirstAddress
End If
End With
End Sub
'-------------------------------------------
"Thierry.E" <aucune_at_aucune.fr> a écrit dans le message de groupe de discussion :
OGjjw4Y#JHA.1336@TK2MSFTNGP05.phx.gbl...
Bonjour,
Dans une procédure, je dois chercher toutes les occurences correspondant à
un critère, je fais donc une recherche (PlageA) avec la fonction "find" puis
parcoure la suite avec la fonction "findnext". Jusque là tout va bien.
Le problème se pose lorsque au sein de cette boucle de recherche, j'insère
une seconde recherche unique (PlageR) avec la fonction "find".
Il semble que cette seconde recherche fasse bugger la fonction findnext
suivante. En effet lorsque l'instruction Findnext s'exécute, le résultat est
"Nothing" alors qu'il existe d'autres occurences.
A noter que si je supprime la seconde recherche (PlageR) la routine
fonctionne parfaitement et toutes les occurences répondant au critère de la
première recherche sont parcourues...
Sub test()
Dim PlageA As Range
Dim PlageR As Range
Set PlageA = Feuil4.Range("A:A").Find(IDSem, LookAt:=xlWhole)
If Not PlageA Is Nothing Then
FirstAddress = PlageA.Address
'Boucle tant qu'il trouve des lignes correspondant
Do
///ACTIONS DIVERSES///
Set PlageR = Feuil2.Range("A:A").Find(FamArt, LookAt:=xlWhole)
If Not PlageR Is Nothing Then
///ACTIONS DIVERSES///
End If
'Cherche l'occurence suivante
Set PlageA = Feuil4.Range("A:A").FindNext(PlageA)
'Boucle tant qu'il y a une occurence différente de la première trouvée
Loop While Not PlageA Is Nothing And PlageA.Address <> FirstAddress
End If
'------------------------------------------- Sub test() Dim PlageA As Range Dim PlageR As Range Dim Adr As String
With Feuil4.Range("A:A") Set PlageA = .Find(what:=IDSem, LookAt:=xlWhole) If Not PlageA Is Nothing Then FirstAddress = PlageA.Address Adr = FirstAddress 'Boucle tant qu'il trouve des lignes correspondant Do
Set PlageR = Feuil2.Range("A:A").Find(FamArt, LookAt:=xlWhole) If Not PlageR Is Nothing Then
End If
'Cherche l'occurence suivante Set PlageA = .Range("A:A").Find(what:=IDSem, _ After:=.Range(Adr), LookAt:=xlWhole) Adr = PlageA.Address 'Boucle tant qu'il y a une occurence différente de la première trouvée Loop While Not PlageA Is Nothing And PlageA.Address <> FirstAddress End If End With End Sub '-------------------------------------------
"Thierry.E" <aucune_at_aucune.fr> a écrit dans le message de groupe de discussion : OGjjw4Y# Bonjour,
Dans une procédure, je dois chercher toutes les occurences correspondant à un critère, je fais donc une recherche (PlageA) avec la fonction "find" puis parcoure la suite avec la fonction "findnext". Jusque là tout va bien. Le problème se pose lorsque au sein de cette boucle de recherche, j'insère une seconde recherche unique (PlageR) avec la fonction "find". Il semble que cette seconde recherche fasse bugger la fonction findnext suivante. En effet lorsque l'instruction Findnext s'exécute, le résultat est "Nothing" alors qu'il existe d'autres occurences. A noter que si je supprime la seconde recherche (PlageR) la routine fonctionne parfaitement et toutes les occurences répondant au critère de la première recherche sont parcourues...
Sub test() Dim PlageA As Range Dim PlageR As Range
Set PlageA = Feuil4.Range("A:A").Find(IDSem, LookAt:=xlWhole) If Not PlageA Is Nothing Then FirstAddress = PlageA.Address
'Boucle tant qu'il trouve des lignes correspondant Do ///ACTIONS DIVERSES///
Set PlageR = Feuil2.Range("A:A").Find(FamArt, LookAt:=xlWhole) If Not PlageR Is Nothing Then ///ACTIONS DIVERSES/// End If
'Cherche l'occurence suivante Set PlageA = Feuil4.Range("A:A").FindNext(PlageA) 'Boucle tant qu'il y a une occurence différente de la première trouvée Loop While Not PlageA Is Nothing And PlageA.Address <> FirstAddress End If
End Sub
Merci par avance pour votre aide, Thierry
Caetera
"Thierry.E" <aucune_at_aucune.fr> a écrit dans le message de news: OGjjw4Y%
Bonjour,
Dans une procédure, je dois chercher toutes les occurences correspondant à un critère, je fais donc une recherche (PlageA) avec la fonction "find" puis parcoure la suite avec la fonction "findnext". Jusque là tout va bien. Le problème se pose lorsque au sein de cette boucle de recherche, j'insère une seconde recherche unique (PlageR) avec la fonction "find".
Il serait beaucoup plus judicieux de filtrer et de ne parcourir que les cellules visibles...
Etc
"Thierry.E" <aucune_at_aucune.fr> a écrit dans le message de news:
OGjjw4Y%23JHA.1336@TK2MSFTNGP05.phx.gbl...
Bonjour,
Dans une procédure, je dois chercher toutes les occurences correspondant à un
critère, je fais donc une recherche (PlageA) avec la fonction "find" puis
parcoure la suite avec la fonction "findnext". Jusque là tout va bien.
Le problème se pose lorsque au sein de cette boucle de recherche, j'insère une
seconde recherche unique (PlageR) avec la fonction "find".
Il serait beaucoup plus judicieux de filtrer et de ne parcourir que les cellules
visibles...
"Thierry.E" <aucune_at_aucune.fr> a écrit dans le message de news: OGjjw4Y%
Bonjour,
Dans une procédure, je dois chercher toutes les occurences correspondant à un critère, je fais donc une recherche (PlageA) avec la fonction "find" puis parcoure la suite avec la fonction "findnext". Jusque là tout va bien. Le problème se pose lorsque au sein de cette boucle de recherche, j'insère une seconde recherche unique (PlageR) avec la fonction "find".
Il serait beaucoup plus judicieux de filtrer et de ne parcourir que les cellules visibles...
Etc
Thierry.E
Merci beaucoup Michel, ta solution fonctionne parfaitement !
Thierry
"MichDenis" a écrit dans le message de news: ujYvvLZ%
Bonjour Thierry,
Je modifierais ta procédure comme ceci :
'------------------------------------------- Sub test() Dim PlageA As Range Dim PlageR As Range Dim Adr As String
With Feuil4.Range("A:A") Set PlageA = .Find(what:=IDSem, LookAt:=xlWhole) If Not PlageA Is Nothing Then FirstAddress = PlageA.Address Adr = FirstAddress 'Boucle tant qu'il trouve des lignes correspondant Do
Set PlageR = Feuil2.Range("A:A").Find(FamArt, LookAt:=xlWhole) If Not PlageR Is Nothing Then
End If
'Cherche l'occurence suivante Set PlageA = .Range("A:A").Find(what:=IDSem, _ After:=.Range(Adr), LookAt:=xlWhole) Adr = PlageA.Address 'Boucle tant qu'il y a une occurence différente de la première trouvée Loop While Not PlageA Is Nothing And PlageA.Address <> FirstAddress End If End With End Sub '-------------------------------------------
"Thierry.E" <aucune_at_aucune.fr> a écrit dans le message de groupe de discussion : OGjjw4Y# Bonjour,
Dans une procédure, je dois chercher toutes les occurences correspondant à un critère, je fais donc une recherche (PlageA) avec la fonction "find" puis parcoure la suite avec la fonction "findnext". Jusque là tout va bien. Le problème se pose lorsque au sein de cette boucle de recherche, j'insère une seconde recherche unique (PlageR) avec la fonction "find". Il semble que cette seconde recherche fasse bugger la fonction findnext suivante. En effet lorsque l'instruction Findnext s'exécute, le résultat est "Nothing" alors qu'il existe d'autres occurences. A noter que si je supprime la seconde recherche (PlageR) la routine fonctionne parfaitement et toutes les occurences répondant au critère de la première recherche sont parcourues...
Sub test() Dim PlageA As Range Dim PlageR As Range
Set PlageA = Feuil4.Range("A:A").Find(IDSem, LookAt:=xlWhole) If Not PlageA Is Nothing Then FirstAddress = PlageA.Address
'Boucle tant qu'il trouve des lignes correspondant Do ///ACTIONS DIVERSES///
Set PlageR = Feuil2.Range("A:A").Find(FamArt, LookAt:=xlWhole) If Not PlageR Is Nothing Then ///ACTIONS DIVERSES/// End If
'Cherche l'occurence suivante Set PlageA = Feuil4.Range("A:A").FindNext(PlageA) 'Boucle tant qu'il y a une occurence différente de la première trouvée Loop While Not PlageA Is Nothing And PlageA.Address <> FirstAddress End If
End Sub
Merci par avance pour votre aide, Thierry
Merci beaucoup Michel, ta solution fonctionne parfaitement !
Thierry
"MichDenis" <michdenis@hotmail.com> a écrit dans le message de news:
ujYvvLZ%23JHA.2120@TK2MSFTNGP02.phx.gbl...
Bonjour Thierry,
Je modifierais ta procédure comme ceci :
'-------------------------------------------
Sub test()
Dim PlageA As Range
Dim PlageR As Range
Dim Adr As String
With Feuil4.Range("A:A")
Set PlageA = .Find(what:=IDSem, LookAt:=xlWhole)
If Not PlageA Is Nothing Then
FirstAddress = PlageA.Address
Adr = FirstAddress
'Boucle tant qu'il trouve des lignes correspondant
Do
Set PlageR = Feuil2.Range("A:A").Find(FamArt, LookAt:=xlWhole)
If Not PlageR Is Nothing Then
End If
'Cherche l'occurence suivante
Set PlageA = .Range("A:A").Find(what:=IDSem, _
After:=.Range(Adr), LookAt:=xlWhole)
Adr = PlageA.Address
'Boucle tant qu'il y a une occurence différente de la première
trouvée
Loop While Not PlageA Is Nothing And PlageA.Address <> FirstAddress
End If
End With
End Sub
'-------------------------------------------
"Thierry.E" <aucune_at_aucune.fr> a écrit dans le message de groupe de
discussion :
OGjjw4Y#JHA.1336@TK2MSFTNGP05.phx.gbl...
Bonjour,
Dans une procédure, je dois chercher toutes les occurences correspondant à
un critère, je fais donc une recherche (PlageA) avec la fonction "find"
puis
parcoure la suite avec la fonction "findnext". Jusque là tout va bien.
Le problème se pose lorsque au sein de cette boucle de recherche, j'insère
une seconde recherche unique (PlageR) avec la fonction "find".
Il semble que cette seconde recherche fasse bugger la fonction findnext
suivante. En effet lorsque l'instruction Findnext s'exécute, le résultat
est
"Nothing" alors qu'il existe d'autres occurences.
A noter que si je supprime la seconde recherche (PlageR) la routine
fonctionne parfaitement et toutes les occurences répondant au critère de
la
première recherche sont parcourues...
Sub test()
Dim PlageA As Range
Dim PlageR As Range
Set PlageA = Feuil4.Range("A:A").Find(IDSem, LookAt:=xlWhole)
If Not PlageA Is Nothing Then
FirstAddress = PlageA.Address
'Boucle tant qu'il trouve des lignes correspondant
Do
///ACTIONS DIVERSES///
Set PlageR = Feuil2.Range("A:A").Find(FamArt, LookAt:=xlWhole)
If Not PlageR Is Nothing Then
///ACTIONS DIVERSES///
End If
'Cherche l'occurence suivante
Set PlageA = Feuil4.Range("A:A").FindNext(PlageA)
'Boucle tant qu'il y a une occurence différente de la première trouvée
Loop While Not PlageA Is Nothing And PlageA.Address <> FirstAddress
End If
Merci beaucoup Michel, ta solution fonctionne parfaitement !
Thierry
"MichDenis" a écrit dans le message de news: ujYvvLZ%
Bonjour Thierry,
Je modifierais ta procédure comme ceci :
'------------------------------------------- Sub test() Dim PlageA As Range Dim PlageR As Range Dim Adr As String
With Feuil4.Range("A:A") Set PlageA = .Find(what:=IDSem, LookAt:=xlWhole) If Not PlageA Is Nothing Then FirstAddress = PlageA.Address Adr = FirstAddress 'Boucle tant qu'il trouve des lignes correspondant Do
Set PlageR = Feuil2.Range("A:A").Find(FamArt, LookAt:=xlWhole) If Not PlageR Is Nothing Then
End If
'Cherche l'occurence suivante Set PlageA = .Range("A:A").Find(what:=IDSem, _ After:=.Range(Adr), LookAt:=xlWhole) Adr = PlageA.Address 'Boucle tant qu'il y a une occurence différente de la première trouvée Loop While Not PlageA Is Nothing And PlageA.Address <> FirstAddress End If End With End Sub '-------------------------------------------
"Thierry.E" <aucune_at_aucune.fr> a écrit dans le message de groupe de discussion : OGjjw4Y# Bonjour,
Dans une procédure, je dois chercher toutes les occurences correspondant à un critère, je fais donc une recherche (PlageA) avec la fonction "find" puis parcoure la suite avec la fonction "findnext". Jusque là tout va bien. Le problème se pose lorsque au sein de cette boucle de recherche, j'insère une seconde recherche unique (PlageR) avec la fonction "find". Il semble que cette seconde recherche fasse bugger la fonction findnext suivante. En effet lorsque l'instruction Findnext s'exécute, le résultat est "Nothing" alors qu'il existe d'autres occurences. A noter que si je supprime la seconde recherche (PlageR) la routine fonctionne parfaitement et toutes les occurences répondant au critère de la première recherche sont parcourues...
Sub test() Dim PlageA As Range Dim PlageR As Range
Set PlageA = Feuil4.Range("A:A").Find(IDSem, LookAt:=xlWhole) If Not PlageA Is Nothing Then FirstAddress = PlageA.Address
'Boucle tant qu'il trouve des lignes correspondant Do ///ACTIONS DIVERSES///
Set PlageR = Feuil2.Range("A:A").Find(FamArt, LookAt:=xlWhole) If Not PlageR Is Nothing Then ///ACTIONS DIVERSES/// End If
'Cherche l'occurence suivante Set PlageA = Feuil4.Range("A:A").FindNext(PlageA) 'Boucle tant qu'il y a une occurence différente de la première trouvée Loop While Not PlageA Is Nothing And PlageA.Address <> FirstAddress End If
End Sub
Merci par avance pour votre aide, Thierry
Thierry.E
Bonjour Caetera,
Effectivement cette solution doit aussi fonctionner. Trop tard, j'ai appliqué la solution de MichDenis.
Merci en tout cas, Thierry
"Caetera" <EtiennePloufCahé@wanadoo.fr> a écrit dans le message de news: uTm%23FTZ%
"Thierry.E" <aucune_at_aucune.fr> a écrit dans le message de news: OGjjw4Y%
Bonjour,
Dans une procédure, je dois chercher toutes les occurences correspondant à un critère, je fais donc une recherche (PlageA) avec la fonction "find" puis parcoure la suite avec la fonction "findnext". Jusque là tout va bien. Le problème se pose lorsque au sein de cette boucle de recherche, j'insère une seconde recherche unique (PlageR) avec la fonction "find".
Il serait beaucoup plus judicieux de filtrer et de ne parcourir que les cellules visibles...
Etc
Bonjour Caetera,
Effectivement cette solution doit aussi fonctionner. Trop tard, j'ai
appliqué la solution de MichDenis.
Merci en tout cas,
Thierry
"Caetera" <EtiennePloufCahé@wanadoo.fr> a écrit dans le message de news:
uTm%23FTZ%23JHA.4376@TK2MSFTNGP04.phx.gbl...
"Thierry.E" <aucune_at_aucune.fr> a écrit dans le message de news:
OGjjw4Y%23JHA.1336@TK2MSFTNGP05.phx.gbl...
Bonjour,
Dans une procédure, je dois chercher toutes les occurences correspondant
à un critère, je fais donc une recherche (PlageA) avec la fonction "find"
puis parcoure la suite avec la fonction "findnext". Jusque là tout va
bien.
Le problème se pose lorsque au sein de cette boucle de recherche,
j'insère une seconde recherche unique (PlageR) avec la fonction "find".
Il serait beaucoup plus judicieux de filtrer et de ne parcourir que les
cellules visibles...
Effectivement cette solution doit aussi fonctionner. Trop tard, j'ai appliqué la solution de MichDenis.
Merci en tout cas, Thierry
"Caetera" <EtiennePloufCahé@wanadoo.fr> a écrit dans le message de news: uTm%23FTZ%
"Thierry.E" <aucune_at_aucune.fr> a écrit dans le message de news: OGjjw4Y%
Bonjour,
Dans une procédure, je dois chercher toutes les occurences correspondant à un critère, je fais donc une recherche (PlageA) avec la fonction "find" puis parcoure la suite avec la fonction "findnext". Jusque là tout va bien. Le problème se pose lorsque au sein de cette boucle de recherche, j'insère une seconde recherche unique (PlageR) avec la fonction "find".
Il serait beaucoup plus judicieux de filtrer et de ne parcourir que les cellules visibles...
Etc
Thierry.E
Hum, j'ai peut-être présompté du prénom... désolé MichDenis !
Thierry
"Thierry.E" <aucune_at_aucune.fr> a écrit dans le message de news: %23rzuuVZ%
Merci beaucoup Michel, ta solution fonctionne parfaitement !
Thierry
"MichDenis" a écrit dans le message de news: ujYvvLZ%
Bonjour Thierry,
Je modifierais ta procédure comme ceci :
'------------------------------------------- Sub test() Dim PlageA As Range Dim PlageR As Range Dim Adr As String
With Feuil4.Range("A:A") Set PlageA = .Find(what:=IDSem, LookAt:=xlWhole) If Not PlageA Is Nothing Then FirstAddress = PlageA.Address Adr = FirstAddress 'Boucle tant qu'il trouve des lignes correspondant Do
Set PlageR = Feuil2.Range("A:A").Find(FamArt, LookAt:=xlWhole) If Not PlageR Is Nothing Then
End If
'Cherche l'occurence suivante Set PlageA = .Range("A:A").Find(what:=IDSem, _ After:=.Range(Adr), LookAt:=xlWhole) Adr = PlageA.Address 'Boucle tant qu'il y a une occurence différente de la première trouvée Loop While Not PlageA Is Nothing And PlageA.Address <> FirstAddress End If End With End Sub '-------------------------------------------
"Thierry.E" <aucune_at_aucune.fr> a écrit dans le message de groupe de discussion : OGjjw4Y# Bonjour,
Dans une procédure, je dois chercher toutes les occurences correspondant à un critère, je fais donc une recherche (PlageA) avec la fonction "find" puis parcoure la suite avec la fonction "findnext". Jusque là tout va bien. Le problème se pose lorsque au sein de cette boucle de recherche, j'insère une seconde recherche unique (PlageR) avec la fonction "find". Il semble que cette seconde recherche fasse bugger la fonction findnext suivante. En effet lorsque l'instruction Findnext s'exécute, le résultat est "Nothing" alors qu'il existe d'autres occurences. A noter que si je supprime la seconde recherche (PlageR) la routine fonctionne parfaitement et toutes les occurences répondant au critère de la première recherche sont parcourues...
Sub test() Dim PlageA As Range Dim PlageR As Range
Set PlageA = Feuil4.Range("A:A").Find(IDSem, LookAt:=xlWhole) If Not PlageA Is Nothing Then FirstAddress = PlageA.Address
'Boucle tant qu'il trouve des lignes correspondant Do ///ACTIONS DIVERSES///
Set PlageR = Feuil2.Range("A:A").Find(FamArt, LookAt:=xlWhole) If Not PlageR Is Nothing Then ///ACTIONS DIVERSES/// End If
'Cherche l'occurence suivante Set PlageA = Feuil4.Range("A:A").FindNext(PlageA) 'Boucle tant qu'il y a une occurence différente de la première trouvée Loop While Not PlageA Is Nothing And PlageA.Address <> FirstAddress End If
End Sub
Merci par avance pour votre aide, Thierry
Hum, j'ai peut-être présompté du prénom... désolé MichDenis !
Thierry
"Thierry.E" <aucune_at_aucune.fr> a écrit dans le message de news:
%23rzuuVZ%23JHA.4168@TK2MSFTNGP05.phx.gbl...
Merci beaucoup Michel, ta solution fonctionne parfaitement !
Thierry
"MichDenis" <michdenis@hotmail.com> a écrit dans le message de news:
ujYvvLZ%23JHA.2120@TK2MSFTNGP02.phx.gbl...
Bonjour Thierry,
Je modifierais ta procédure comme ceci :
'-------------------------------------------
Sub test()
Dim PlageA As Range
Dim PlageR As Range
Dim Adr As String
With Feuil4.Range("A:A")
Set PlageA = .Find(what:=IDSem, LookAt:=xlWhole)
If Not PlageA Is Nothing Then
FirstAddress = PlageA.Address
Adr = FirstAddress
'Boucle tant qu'il trouve des lignes correspondant
Do
Set PlageR = Feuil2.Range("A:A").Find(FamArt, LookAt:=xlWhole)
If Not PlageR Is Nothing Then
End If
'Cherche l'occurence suivante
Set PlageA = .Range("A:A").Find(what:=IDSem, _
After:=.Range(Adr), LookAt:=xlWhole)
Adr = PlageA.Address
'Boucle tant qu'il y a une occurence différente de la première
trouvée
Loop While Not PlageA Is Nothing And PlageA.Address <>
FirstAddress
End If
End With
End Sub
'-------------------------------------------
"Thierry.E" <aucune_at_aucune.fr> a écrit dans le message de groupe de
discussion :
OGjjw4Y#JHA.1336@TK2MSFTNGP05.phx.gbl...
Bonjour,
Dans une procédure, je dois chercher toutes les occurences correspondant
à
un critère, je fais donc une recherche (PlageA) avec la fonction "find"
puis
parcoure la suite avec la fonction "findnext". Jusque là tout va bien.
Le problème se pose lorsque au sein de cette boucle de recherche,
j'insère
une seconde recherche unique (PlageR) avec la fonction "find".
Il semble que cette seconde recherche fasse bugger la fonction findnext
suivante. En effet lorsque l'instruction Findnext s'exécute, le résultat
est
"Nothing" alors qu'il existe d'autres occurences.
A noter que si je supprime la seconde recherche (PlageR) la routine
fonctionne parfaitement et toutes les occurences répondant au critère de
la
première recherche sont parcourues...
Sub test()
Dim PlageA As Range
Dim PlageR As Range
Set PlageA = Feuil4.Range("A:A").Find(IDSem, LookAt:=xlWhole)
If Not PlageA Is Nothing Then
FirstAddress = PlageA.Address
'Boucle tant qu'il trouve des lignes correspondant
Do
///ACTIONS DIVERSES///
Set PlageR = Feuil2.Range("A:A").Find(FamArt, LookAt:=xlWhole)
If Not PlageR Is Nothing Then
///ACTIONS DIVERSES///
End If
'Cherche l'occurence suivante
Set PlageA = Feuil4.Range("A:A").FindNext(PlageA)
'Boucle tant qu'il y a une occurence différente de la première trouvée
Loop While Not PlageA Is Nothing And PlageA.Address <> FirstAddress
End If
Hum, j'ai peut-être présompté du prénom... désolé MichDenis !
Thierry
"Thierry.E" <aucune_at_aucune.fr> a écrit dans le message de news: %23rzuuVZ%
Merci beaucoup Michel, ta solution fonctionne parfaitement !
Thierry
"MichDenis" a écrit dans le message de news: ujYvvLZ%
Bonjour Thierry,
Je modifierais ta procédure comme ceci :
'------------------------------------------- Sub test() Dim PlageA As Range Dim PlageR As Range Dim Adr As String
With Feuil4.Range("A:A") Set PlageA = .Find(what:=IDSem, LookAt:=xlWhole) If Not PlageA Is Nothing Then FirstAddress = PlageA.Address Adr = FirstAddress 'Boucle tant qu'il trouve des lignes correspondant Do
Set PlageR = Feuil2.Range("A:A").Find(FamArt, LookAt:=xlWhole) If Not PlageR Is Nothing Then
End If
'Cherche l'occurence suivante Set PlageA = .Range("A:A").Find(what:=IDSem, _ After:=.Range(Adr), LookAt:=xlWhole) Adr = PlageA.Address 'Boucle tant qu'il y a une occurence différente de la première trouvée Loop While Not PlageA Is Nothing And PlageA.Address <> FirstAddress End If End With End Sub '-------------------------------------------
"Thierry.E" <aucune_at_aucune.fr> a écrit dans le message de groupe de discussion : OGjjw4Y# Bonjour,
Dans une procédure, je dois chercher toutes les occurences correspondant à un critère, je fais donc une recherche (PlageA) avec la fonction "find" puis parcoure la suite avec la fonction "findnext". Jusque là tout va bien. Le problème se pose lorsque au sein de cette boucle de recherche, j'insère une seconde recherche unique (PlageR) avec la fonction "find". Il semble que cette seconde recherche fasse bugger la fonction findnext suivante. En effet lorsque l'instruction Findnext s'exécute, le résultat est "Nothing" alors qu'il existe d'autres occurences. A noter que si je supprime la seconde recherche (PlageR) la routine fonctionne parfaitement et toutes les occurences répondant au critère de la première recherche sont parcourues...
Sub test() Dim PlageA As Range Dim PlageR As Range
Set PlageA = Feuil4.Range("A:A").Find(IDSem, LookAt:=xlWhole) If Not PlageA Is Nothing Then FirstAddress = PlageA.Address
'Boucle tant qu'il trouve des lignes correspondant Do ///ACTIONS DIVERSES///
Set PlageR = Feuil2.Range("A:A").Find(FamArt, LookAt:=xlWhole) If Not PlageR Is Nothing Then ///ACTIONS DIVERSES/// End If
'Cherche l'occurence suivante Set PlageA = Feuil4.Range("A:A").FindNext(PlageA) 'Boucle tant qu'il y a une occurence différente de la première trouvée Loop While Not PlageA Is Nothing And PlageA.Address <> FirstAddress End If