À chaque fois que je tente de démarrer mon script, le débuggeur arrête sur
Set c = .FindNext(c) et retourne un référence incorrecte ou non-qualifée.
Comment dois-je interpréter cela???
'On recherche la trousse tel quelle
Set c = Range("a1:a" & sdligne).Find(snom, LookIn:=xlValues)
If Not c Is Nothing Then
'On a trouvé le nom exacte dans la liste
'À ce stade on a trouvé quelque chose et nous sommes sur une première
validation
premiertest = True
'Lorsque find arrive à la fin d'une liste il boucle depuis le début.
'Nous testons donc si nous somme revenus à firstaddress et le premier
'test est pour permettre de valider suite à un premier findnext
firstAddress = c.Address ' Correspond à l'addresse du premier résultat
trouvé
strtrouve = True
Do While oncherche
'On va looper afin de bien identifier la position
c.Activate
'Noyau inscrite en colonne C
vnoyau = c.Offset(0, 2)
bonnom = True
If vnoyau = snoyau Then
'Le noyau trouvé correspond avec celui inscrit dans la ligne
okgo = True
oncherche = False 'Pour sortir de la loop
c.Offset(0, 3) = strousse 'On l'a trouvé et on l'inscrit dans
la colonne des correles
strtrouve = True
Else
Set c = .FindNext(c)
'Pas le bon noyau donc on loop
End If
If c Is Nothing Or (c.Address = firstAddress) Then
'Si la recherche ne retourne rien ou que nous bouclons sur la
première découverte
'nous sortons
oncherche = False
Exit Do
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
La méthode Find Ou FinNext s'utilise sur une plage de cellules. comme tu as fait là : Set c = Range("a1:a" & sdligne).Find(snom, LookIn:=xlValues)
à la ligne de code précédente, si tu enlèves l'objet "Range( ) et que tu écris seulement Set C = .Find( ) , tu vas obtenir le même message d'erreur "une référence incorrecte ou non-qualifée" ... tout simplement par que tu n'as pas donné à la méthode Find , l'objet Range() qu'il a besoin pour faire son travail.
Tu pourrais utiliser ce type de syntaxe :
With Range("a1:a" & sdligne) Set C = .Find(snom, LookIn:=xlValues) 'le reste de ton code Do While
Set C = .findNext(c) Loop End with
"François Racine" a écrit dans le message de news: %
À chaque fois que je tente de démarrer mon script, le débuggeur arrête sur Set c = .FindNext(c) et retourne un référence incorrecte ou non-qualifée. Comment dois-je interpréter cela???
'On recherche la trousse tel quelle Set c = Range("a1:a" & sdligne).Find(snom, LookIn:=xlValues)
If Not c Is Nothing Then 'On a trouvé le nom exacte dans la liste
'À ce stade on a trouvé quelque chose et nous sommes sur une première validation premiertest = True 'Lorsque find arrive à la fin d'une liste il boucle depuis le début. 'Nous testons donc si nous somme revenus à firstaddress et le premier 'test est pour permettre de valider suite à un premier findnext firstAddress = c.Address ' Correspond à l'addresse du premier résultat trouvé strtrouve = True
Do While oncherche 'On va looper afin de bien identifier la position c.Activate 'Noyau inscrite en colonne C vnoyau = c.Offset(0, 2) bonnom = True
If vnoyau = snoyau Then 'Le noyau trouvé correspond avec celui inscrit dans la ligne
okgo = True oncherche = False 'Pour sortir de la loop
c.Offset(0, 3) = strousse 'On l'a trouvé et on l'inscrit dans la colonne des correles strtrouve = True Else
Set c = .FindNext(c) 'Pas le bon noyau donc on loop
End If
If c Is Nothing Or (c.Address = firstAddress) Then
'Si la recherche ne retourne rien ou que nous bouclons sur la première découverte 'nous sortons oncherche = False Exit Do
End If
Loop
End If
La méthode Find Ou FinNext s'utilise sur une plage de cellules.
comme tu as fait là :
Set c = Range("a1:a" & sdligne).Find(snom, LookIn:=xlValues)
à la ligne de code précédente, si tu enlèves l'objet "Range( ) et que
tu écris seulement Set C = .Find( ) , tu vas obtenir le même message
d'erreur "une référence incorrecte ou non-qualifée" ... tout simplement
par que tu n'as pas donné à la méthode Find , l'objet Range() qu'il a
besoin pour faire son travail.
Tu pourrais utiliser ce type de syntaxe :
With Range("a1:a" & sdligne)
Set C = .Find(snom, LookIn:=xlValues)
'le reste de ton code
Do While
Set C = .findNext(c)
Loop
End with
"François Racine" <Francois.Racine@hotmail.com> a écrit dans le message de news:
%23xDZ7l9FHHA.1784@TK2MSFTNGP06.phx.gbl...
À chaque fois que je tente de démarrer mon script, le débuggeur arrête sur
Set c = .FindNext(c) et retourne un référence incorrecte ou non-qualifée.
Comment dois-je interpréter cela???
'On recherche la trousse tel quelle
Set c = Range("a1:a" & sdligne).Find(snom, LookIn:=xlValues)
If Not c Is Nothing Then
'On a trouvé le nom exacte dans la liste
'À ce stade on a trouvé quelque chose et nous sommes sur une première
validation
premiertest = True
'Lorsque find arrive à la fin d'une liste il boucle depuis le début.
'Nous testons donc si nous somme revenus à firstaddress et le premier
'test est pour permettre de valider suite à un premier findnext
firstAddress = c.Address ' Correspond à l'addresse du premier résultat
trouvé
strtrouve = True
Do While oncherche
'On va looper afin de bien identifier la position
c.Activate
'Noyau inscrite en colonne C
vnoyau = c.Offset(0, 2)
bonnom = True
If vnoyau = snoyau Then
'Le noyau trouvé correspond avec celui inscrit dans la ligne
okgo = True
oncherche = False 'Pour sortir de la loop
c.Offset(0, 3) = strousse 'On l'a trouvé et on l'inscrit dans
la colonne des correles
strtrouve = True
Else
Set c = .FindNext(c)
'Pas le bon noyau donc on loop
End If
If c Is Nothing Or (c.Address = firstAddress) Then
'Si la recherche ne retourne rien ou que nous bouclons sur la
première découverte
'nous sortons
oncherche = False
Exit Do
La méthode Find Ou FinNext s'utilise sur une plage de cellules. comme tu as fait là : Set c = Range("a1:a" & sdligne).Find(snom, LookIn:=xlValues)
à la ligne de code précédente, si tu enlèves l'objet "Range( ) et que tu écris seulement Set C = .Find( ) , tu vas obtenir le même message d'erreur "une référence incorrecte ou non-qualifée" ... tout simplement par que tu n'as pas donné à la méthode Find , l'objet Range() qu'il a besoin pour faire son travail.
Tu pourrais utiliser ce type de syntaxe :
With Range("a1:a" & sdligne) Set C = .Find(snom, LookIn:=xlValues) 'le reste de ton code Do While
Set C = .findNext(c) Loop End with
"François Racine" a écrit dans le message de news: %
À chaque fois que je tente de démarrer mon script, le débuggeur arrête sur Set c = .FindNext(c) et retourne un référence incorrecte ou non-qualifée. Comment dois-je interpréter cela???
'On recherche la trousse tel quelle Set c = Range("a1:a" & sdligne).Find(snom, LookIn:=xlValues)
If Not c Is Nothing Then 'On a trouvé le nom exacte dans la liste
'À ce stade on a trouvé quelque chose et nous sommes sur une première validation premiertest = True 'Lorsque find arrive à la fin d'une liste il boucle depuis le début. 'Nous testons donc si nous somme revenus à firstaddress et le premier 'test est pour permettre de valider suite à un premier findnext firstAddress = c.Address ' Correspond à l'addresse du premier résultat trouvé strtrouve = True
Do While oncherche 'On va looper afin de bien identifier la position c.Activate 'Noyau inscrite en colonne C vnoyau = c.Offset(0, 2) bonnom = True
If vnoyau = snoyau Then 'Le noyau trouvé correspond avec celui inscrit dans la ligne
okgo = True oncherche = False 'Pour sortir de la loop
c.Offset(0, 3) = strousse 'On l'a trouvé et on l'inscrit dans la colonne des correles strtrouve = True Else
Set c = .FindNext(c) 'Pas le bon noyau donc on loop
End If
If c Is Nothing Or (c.Address = firstAddress) Then
'Si la recherche ne retourne rien ou que nous bouclons sur la première découverte 'nous sortons oncherche = False Exit Do
End If
Loop
End If
François Racine
Merci! Y-a-t-il une manière d'empêcher .Find de boucler pour recommencer sa recherche depuis le début lorsqu'il atteint la fin du range? "MichDenis" a écrit dans le message de news: %
La méthode Find Ou FinNext s'utilise sur une plage de cellules. comme tu as fait là : Set c = Range("a1:a" & sdligne).Find(snom, LookIn:=xlValues)
à la ligne de code précédente, si tu enlèves l'objet "Range( ) et que tu écris seulement Set C = .Find( ) , tu vas obtenir le même message d'erreur "une référence incorrecte ou non-qualifée" ... tout simplement par que tu n'as pas donné à la méthode Find , l'objet Range() qu'il a besoin pour faire son travail.
Tu pourrais utiliser ce type de syntaxe :
With Range("a1:a" & sdligne) Set C = .Find(snom, LookIn:=xlValues) 'le reste de ton code Do While
Set C = .findNext(c) Loop End with
"François Racine" a écrit dans le message de news: %
À chaque fois que je tente de démarrer mon script, le débuggeur arrête sur Set c = .FindNext(c) et retourne un référence incorrecte ou non-qualifée. Comment dois-je interpréter cela???
'On recherche la trousse tel quelle Set c = Range("a1:a" & sdligne).Find(snom, LookIn:=xlValues)
If Not c Is Nothing Then 'On a trouvé le nom exacte dans la liste
'À ce stade on a trouvé quelque chose et nous sommes sur une première validation premiertest = True 'Lorsque find arrive à la fin d'une liste il boucle depuis le début. 'Nous testons donc si nous somme revenus à firstaddress et le premier 'test est pour permettre de valider suite à un premier findnext firstAddress = c.Address ' Correspond à l'addresse du premier résultat trouvé strtrouve = True
Do While oncherche 'On va looper afin de bien identifier la position c.Activate 'Noyau inscrite en colonne C vnoyau = c.Offset(0, 2) bonnom = True
If vnoyau = snoyau Then 'Le noyau trouvé correspond avec celui inscrit dans la ligne
okgo = True oncherche = False 'Pour sortir de la loop
c.Offset(0, 3) = strousse 'On l'a trouvé et on l'inscrit dans la colonne des correles strtrouve = True Else
Set c = .FindNext(c) 'Pas le bon noyau donc on loop
End If
If c Is Nothing Or (c.Address = firstAddress) Then
'Si la recherche ne retourne rien ou que nous bouclons sur la première découverte 'nous sortons oncherche = False Exit Do
End If
Loop
End If
Merci!
Y-a-t-il une manière d'empêcher .Find de boucler pour recommencer sa
recherche depuis le début lorsqu'il atteint la fin du range?
"MichDenis" <michdenis@hotmail.com> a écrit dans le message de news:
%23Lpbx49FHHA.924@TK2MSFTNGP02.phx.gbl...
La méthode Find Ou FinNext s'utilise sur une plage de cellules.
comme tu as fait là :
Set c = Range("a1:a" & sdligne).Find(snom, LookIn:=xlValues)
à la ligne de code précédente, si tu enlèves l'objet "Range( ) et que
tu écris seulement Set C = .Find( ) , tu vas obtenir le même message
d'erreur "une référence incorrecte ou non-qualifée" ... tout simplement
par que tu n'as pas donné à la méthode Find , l'objet Range() qu'il a
besoin pour faire son travail.
Tu pourrais utiliser ce type de syntaxe :
With Range("a1:a" & sdligne)
Set C = .Find(snom, LookIn:=xlValues)
'le reste de ton code
Do While
Set C = .findNext(c)
Loop
End with
"François Racine" <Francois.Racine@hotmail.com> a écrit dans le message de
news:
%23xDZ7l9FHHA.1784@TK2MSFTNGP06.phx.gbl...
À chaque fois que je tente de démarrer mon script, le débuggeur arrête sur
Set c = .FindNext(c) et retourne un référence incorrecte ou non-qualifée.
Comment dois-je interpréter cela???
'On recherche la trousse tel quelle
Set c = Range("a1:a" & sdligne).Find(snom, LookIn:=xlValues)
If Not c Is Nothing Then
'On a trouvé le nom exacte dans la liste
'À ce stade on a trouvé quelque chose et nous sommes sur une première
validation
premiertest = True
'Lorsque find arrive à la fin d'une liste il boucle depuis le début.
'Nous testons donc si nous somme revenus à firstaddress et le premier
'test est pour permettre de valider suite à un premier findnext
firstAddress = c.Address ' Correspond à l'addresse du premier résultat
trouvé
strtrouve = True
Do While oncherche
'On va looper afin de bien identifier la position
c.Activate
'Noyau inscrite en colonne C
vnoyau = c.Offset(0, 2)
bonnom = True
If vnoyau = snoyau Then
'Le noyau trouvé correspond avec celui inscrit dans la ligne
okgo = True
oncherche = False 'Pour sortir de la loop
c.Offset(0, 3) = strousse 'On l'a trouvé et on l'inscrit dans
la colonne des correles
strtrouve = True
Else
Set c = .FindNext(c)
'Pas le bon noyau donc on loop
End If
If c Is Nothing Or (c.Address = firstAddress) Then
'Si la recherche ne retourne rien ou que nous bouclons sur la
première découverte
'nous sortons
oncherche = False
Exit Do
Merci! Y-a-t-il une manière d'empêcher .Find de boucler pour recommencer sa recherche depuis le début lorsqu'il atteint la fin du range? "MichDenis" a écrit dans le message de news: %
La méthode Find Ou FinNext s'utilise sur une plage de cellules. comme tu as fait là : Set c = Range("a1:a" & sdligne).Find(snom, LookIn:=xlValues)
à la ligne de code précédente, si tu enlèves l'objet "Range( ) et que tu écris seulement Set C = .Find( ) , tu vas obtenir le même message d'erreur "une référence incorrecte ou non-qualifée" ... tout simplement par que tu n'as pas donné à la méthode Find , l'objet Range() qu'il a besoin pour faire son travail.
Tu pourrais utiliser ce type de syntaxe :
With Range("a1:a" & sdligne) Set C = .Find(snom, LookIn:=xlValues) 'le reste de ton code Do While
Set C = .findNext(c) Loop End with
"François Racine" a écrit dans le message de news: %
À chaque fois que je tente de démarrer mon script, le débuggeur arrête sur Set c = .FindNext(c) et retourne un référence incorrecte ou non-qualifée. Comment dois-je interpréter cela???
'On recherche la trousse tel quelle Set c = Range("a1:a" & sdligne).Find(snom, LookIn:=xlValues)
If Not c Is Nothing Then 'On a trouvé le nom exacte dans la liste
'À ce stade on a trouvé quelque chose et nous sommes sur une première validation premiertest = True 'Lorsque find arrive à la fin d'une liste il boucle depuis le début. 'Nous testons donc si nous somme revenus à firstaddress et le premier 'test est pour permettre de valider suite à un premier findnext firstAddress = c.Address ' Correspond à l'addresse du premier résultat trouvé strtrouve = True
Do While oncherche 'On va looper afin de bien identifier la position c.Activate 'Noyau inscrite en colonne C vnoyau = c.Offset(0, 2) bonnom = True
If vnoyau = snoyau Then 'Le noyau trouvé correspond avec celui inscrit dans la ligne
okgo = True oncherche = False 'Pour sortir de la loop
c.Offset(0, 3) = strousse 'On l'a trouvé et on l'inscrit dans la colonne des correles strtrouve = True Else
Set c = .FindNext(c) 'Pas le bon noyau donc on loop
End If
If c Is Nothing Or (c.Address = firstAddress) Then
'Si la recherche ne retourne rien ou que nous bouclons sur la première découverte 'nous sortons oncherche = False Exit Do
End If
Loop
End If
MichDenis
Si tu places ton curseur sur FindNext et que tu utilises la touche F1 il y a un exemple dans l'aide qui montre comment faire...
"François Racine" a écrit dans le message de news: eh$ Merci! Y-a-t-il une manière d'empêcher .Find de boucler pour recommencer sa recherche depuis le début lorsqu'il atteint la fin du range? "MichDenis" a écrit dans le message de news: %
La méthode Find Ou FinNext s'utilise sur une plage de cellules. comme tu as fait là : Set c = Range("a1:a" & sdligne).Find(snom, LookIn:=xlValues)
à la ligne de code précédente, si tu enlèves l'objet "Range( ) et que tu écris seulement Set C = .Find( ) , tu vas obtenir le même message d'erreur "une référence incorrecte ou non-qualifée" ... tout simplement par que tu n'as pas donné à la méthode Find , l'objet Range() qu'il a besoin pour faire son travail.
Tu pourrais utiliser ce type de syntaxe :
With Range("a1:a" & sdligne) Set C = .Find(snom, LookIn:=xlValues) 'le reste de ton code Do While
Set C = .findNext(c) Loop End with
"François Racine" a écrit dans le message de news: %
À chaque fois que je tente de démarrer mon script, le débuggeur arrête sur Set c = .FindNext(c) et retourne un référence incorrecte ou non-qualifée. Comment dois-je interpréter cela???
'On recherche la trousse tel quelle Set c = Range("a1:a" & sdligne).Find(snom, LookIn:=xlValues)
If Not c Is Nothing Then 'On a trouvé le nom exacte dans la liste
'À ce stade on a trouvé quelque chose et nous sommes sur une première validation premiertest = True 'Lorsque find arrive à la fin d'une liste il boucle depuis le début. 'Nous testons donc si nous somme revenus à firstaddress et le premier 'test est pour permettre de valider suite à un premier findnext firstAddress = c.Address ' Correspond à l'addresse du premier résultat trouvé strtrouve = True
Do While oncherche 'On va looper afin de bien identifier la position c.Activate 'Noyau inscrite en colonne C vnoyau = c.Offset(0, 2) bonnom = True
If vnoyau = snoyau Then 'Le noyau trouvé correspond avec celui inscrit dans la ligne
okgo = True oncherche = False 'Pour sortir de la loop
c.Offset(0, 3) = strousse 'On l'a trouvé et on l'inscrit dans la colonne des correles strtrouve = True Else
Set c = .FindNext(c) 'Pas le bon noyau donc on loop
End If
If c Is Nothing Or (c.Address = firstAddress) Then
'Si la recherche ne retourne rien ou que nous bouclons sur la première découverte 'nous sortons oncherche = False Exit Do
End If
Loop
End If
Si tu places ton curseur sur FindNext et que tu utilises la touche F1
il y a un exemple dans l'aide qui montre comment faire...
"François Racine" <Francois.Racine@hotmail.com> a écrit dans le message de news:
eh$DC99FHHA.536@TK2MSFTNGP02.phx.gbl...
Merci!
Y-a-t-il une manière d'empêcher .Find de boucler pour recommencer sa
recherche depuis le début lorsqu'il atteint la fin du range?
"MichDenis" <michdenis@hotmail.com> a écrit dans le message de news:
%23Lpbx49FHHA.924@TK2MSFTNGP02.phx.gbl...
La méthode Find Ou FinNext s'utilise sur une plage de cellules.
comme tu as fait là :
Set c = Range("a1:a" & sdligne).Find(snom, LookIn:=xlValues)
à la ligne de code précédente, si tu enlèves l'objet "Range( ) et que
tu écris seulement Set C = .Find( ) , tu vas obtenir le même message
d'erreur "une référence incorrecte ou non-qualifée" ... tout simplement
par que tu n'as pas donné à la méthode Find , l'objet Range() qu'il a
besoin pour faire son travail.
Tu pourrais utiliser ce type de syntaxe :
With Range("a1:a" & sdligne)
Set C = .Find(snom, LookIn:=xlValues)
'le reste de ton code
Do While
Set C = .findNext(c)
Loop
End with
"François Racine" <Francois.Racine@hotmail.com> a écrit dans le message de
news:
%23xDZ7l9FHHA.1784@TK2MSFTNGP06.phx.gbl...
À chaque fois que je tente de démarrer mon script, le débuggeur arrête sur
Set c = .FindNext(c) et retourne un référence incorrecte ou non-qualifée.
Comment dois-je interpréter cela???
'On recherche la trousse tel quelle
Set c = Range("a1:a" & sdligne).Find(snom, LookIn:=xlValues)
If Not c Is Nothing Then
'On a trouvé le nom exacte dans la liste
'À ce stade on a trouvé quelque chose et nous sommes sur une première
validation
premiertest = True
'Lorsque find arrive à la fin d'une liste il boucle depuis le début.
'Nous testons donc si nous somme revenus à firstaddress et le premier
'test est pour permettre de valider suite à un premier findnext
firstAddress = c.Address ' Correspond à l'addresse du premier résultat
trouvé
strtrouve = True
Do While oncherche
'On va looper afin de bien identifier la position
c.Activate
'Noyau inscrite en colonne C
vnoyau = c.Offset(0, 2)
bonnom = True
If vnoyau = snoyau Then
'Le noyau trouvé correspond avec celui inscrit dans la ligne
okgo = True
oncherche = False 'Pour sortir de la loop
c.Offset(0, 3) = strousse 'On l'a trouvé et on l'inscrit dans
la colonne des correles
strtrouve = True
Else
Set c = .FindNext(c)
'Pas le bon noyau donc on loop
End If
If c Is Nothing Or (c.Address = firstAddress) Then
'Si la recherche ne retourne rien ou que nous bouclons sur la
première découverte
'nous sortons
oncherche = False
Exit Do
Si tu places ton curseur sur FindNext et que tu utilises la touche F1 il y a un exemple dans l'aide qui montre comment faire...
"François Racine" a écrit dans le message de news: eh$ Merci! Y-a-t-il une manière d'empêcher .Find de boucler pour recommencer sa recherche depuis le début lorsqu'il atteint la fin du range? "MichDenis" a écrit dans le message de news: %
La méthode Find Ou FinNext s'utilise sur une plage de cellules. comme tu as fait là : Set c = Range("a1:a" & sdligne).Find(snom, LookIn:=xlValues)
à la ligne de code précédente, si tu enlèves l'objet "Range( ) et que tu écris seulement Set C = .Find( ) , tu vas obtenir le même message d'erreur "une référence incorrecte ou non-qualifée" ... tout simplement par que tu n'as pas donné à la méthode Find , l'objet Range() qu'il a besoin pour faire son travail.
Tu pourrais utiliser ce type de syntaxe :
With Range("a1:a" & sdligne) Set C = .Find(snom, LookIn:=xlValues) 'le reste de ton code Do While
Set C = .findNext(c) Loop End with
"François Racine" a écrit dans le message de news: %
À chaque fois que je tente de démarrer mon script, le débuggeur arrête sur Set c = .FindNext(c) et retourne un référence incorrecte ou non-qualifée. Comment dois-je interpréter cela???
'On recherche la trousse tel quelle Set c = Range("a1:a" & sdligne).Find(snom, LookIn:=xlValues)
If Not c Is Nothing Then 'On a trouvé le nom exacte dans la liste
'À ce stade on a trouvé quelque chose et nous sommes sur une première validation premiertest = True 'Lorsque find arrive à la fin d'une liste il boucle depuis le début. 'Nous testons donc si nous somme revenus à firstaddress et le premier 'test est pour permettre de valider suite à un premier findnext firstAddress = c.Address ' Correspond à l'addresse du premier résultat trouvé strtrouve = True
Do While oncherche 'On va looper afin de bien identifier la position c.Activate 'Noyau inscrite en colonne C vnoyau = c.Offset(0, 2) bonnom = True
If vnoyau = snoyau Then 'Le noyau trouvé correspond avec celui inscrit dans la ligne
okgo = True oncherche = False 'Pour sortir de la loop
c.Offset(0, 3) = strousse 'On l'a trouvé et on l'inscrit dans la colonne des correles strtrouve = True Else
Set c = .FindNext(c) 'Pas le bon noyau donc on loop
End If
If c Is Nothing Or (c.Address = firstAddress) Then
'Si la recherche ne retourne rien ou que nous bouclons sur la première découverte 'nous sortons oncherche = False Exit Do
End If
Loop
End If
Fredo P.
M'enfin l'aide VBA sert à quoi? With Worksheets(1).Range("a1:a500") Set c = .Find(2, lookin:=xlValues) If Not c Is Nothing Then firstAddress = c.Address Do c.Interior.Pattern = xlPatternGray50 Set c = .FindNext(c) Loop While Not c Is Nothing And c.Address <> firstAddress End If End With "François Racine" a écrit dans le message de news: eh$
Merci! Y-a-t-il une manière d'empêcher .Find de boucler pour recommencer sa recherche depuis le début lorsqu'il atteint la fin du range? "MichDenis" a écrit dans le message de news: %
La méthode Find Ou FinNext s'utilise sur une plage de cellules. comme tu as fait là : Set c = Range("a1:a" & sdligne).Find(snom, LookIn:=xlValues)
à la ligne de code précédente, si tu enlèves l'objet "Range( ) et que tu écris seulement Set C = .Find( ) , tu vas obtenir le même message d'erreur "une référence incorrecte ou non-qualifée" ... tout simplement par que tu n'as pas donné à la méthode Find , l'objet Range() qu'il a besoin pour faire son travail.
Tu pourrais utiliser ce type de syntaxe :
With Range("a1:a" & sdligne) Set C = .Find(snom, LookIn:=xlValues) 'le reste de ton code Do While
Set C = .findNext(c) Loop End with
"François Racine" a écrit dans le message de
news: %
À chaque fois que je tente de démarrer mon script, le débuggeur arrête sur
Set c = .FindNext(c) et retourne un référence incorrecte ou non-qualifée.
Comment dois-je interpréter cela???
'On recherche la trousse tel quelle Set c = Range("a1:a" & sdligne).Find(snom, LookIn:=xlValues)
If Not c Is Nothing Then 'On a trouvé le nom exacte dans la liste
'À ce stade on a trouvé quelque chose et nous sommes sur une première validation premiertest = True 'Lorsque find arrive à la fin d'une liste il boucle depuis le début. 'Nous testons donc si nous somme revenus à firstaddress et le premier 'test est pour permettre de valider suite à un premier findnext firstAddress = c.Address ' Correspond à l'addresse du premier résultat
trouvé strtrouve = True
Do While oncherche 'On va looper afin de bien identifier la position c.Activate 'Noyau inscrite en colonne C vnoyau = c.Offset(0, 2) bonnom = True
If vnoyau = snoyau Then 'Le noyau trouvé correspond avec celui inscrit dans la ligne
okgo = True oncherche = False 'Pour sortir de la loop
c.Offset(0, 3) = strousse 'On l'a trouvé et on l'inscrit dans
la colonne des correles strtrouve = True Else
Set c = .FindNext(c) 'Pas le bon noyau donc on loop
End If
If c Is Nothing Or (c.Address = firstAddress) Then
'Si la recherche ne retourne rien ou que nous bouclons sur la première découverte 'nous sortons oncherche = False Exit Do
End If
Loop
End If
M'enfin l'aide VBA sert à quoi?
With Worksheets(1).Range("a1:a500")
Set c = .Find(2, lookin:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
c.Interior.Pattern = xlPatternGray50
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End With
"François Racine" <Francois.Racine@hotmail.com> a écrit dans le message de
news: eh$DC99FHHA.536@TK2MSFTNGP02.phx.gbl...
Merci!
Y-a-t-il une manière d'empêcher .Find de boucler pour recommencer sa
recherche depuis le début lorsqu'il atteint la fin du range?
"MichDenis" <michdenis@hotmail.com> a écrit dans le message de news:
%23Lpbx49FHHA.924@TK2MSFTNGP02.phx.gbl...
La méthode Find Ou FinNext s'utilise sur une plage de cellules.
comme tu as fait là :
Set c = Range("a1:a" & sdligne).Find(snom, LookIn:=xlValues)
à la ligne de code précédente, si tu enlèves l'objet "Range( ) et que
tu écris seulement Set C = .Find( ) , tu vas obtenir le même message
d'erreur "une référence incorrecte ou non-qualifée" ... tout simplement
par que tu n'as pas donné à la méthode Find , l'objet Range() qu'il a
besoin pour faire son travail.
Tu pourrais utiliser ce type de syntaxe :
With Range("a1:a" & sdligne)
Set C = .Find(snom, LookIn:=xlValues)
'le reste de ton code
Do While
Set C = .findNext(c)
Loop
End with
"François Racine" <Francois.Racine@hotmail.com> a écrit dans le message
de
news:
%23xDZ7l9FHHA.1784@TK2MSFTNGP06.phx.gbl...
À chaque fois que je tente de démarrer mon script, le débuggeur arrête
sur
Set c = .FindNext(c) et retourne un référence incorrecte ou
non-qualifée.
Comment dois-je interpréter cela???
'On recherche la trousse tel quelle
Set c = Range("a1:a" & sdligne).Find(snom, LookIn:=xlValues)
If Not c Is Nothing Then
'On a trouvé le nom exacte dans la liste
'À ce stade on a trouvé quelque chose et nous sommes sur une première
validation
premiertest = True
'Lorsque find arrive à la fin d'une liste il boucle depuis le début.
'Nous testons donc si nous somme revenus à firstaddress et le premier
'test est pour permettre de valider suite à un premier findnext
firstAddress = c.Address ' Correspond à l'addresse du premier
résultat
trouvé
strtrouve = True
Do While oncherche
'On va looper afin de bien identifier la position
c.Activate
'Noyau inscrite en colonne C
vnoyau = c.Offset(0, 2)
bonnom = True
If vnoyau = snoyau Then
'Le noyau trouvé correspond avec celui inscrit dans la ligne
okgo = True
oncherche = False 'Pour sortir de la loop
c.Offset(0, 3) = strousse 'On l'a trouvé et on l'inscrit
dans
la colonne des correles
strtrouve = True
Else
Set c = .FindNext(c)
'Pas le bon noyau donc on loop
End If
If c Is Nothing Or (c.Address = firstAddress) Then
'Si la recherche ne retourne rien ou que nous bouclons sur la
première découverte
'nous sortons
oncherche = False
Exit Do
M'enfin l'aide VBA sert à quoi? With Worksheets(1).Range("a1:a500") Set c = .Find(2, lookin:=xlValues) If Not c Is Nothing Then firstAddress = c.Address Do c.Interior.Pattern = xlPatternGray50 Set c = .FindNext(c) Loop While Not c Is Nothing And c.Address <> firstAddress End If End With "François Racine" a écrit dans le message de news: eh$
Merci! Y-a-t-il une manière d'empêcher .Find de boucler pour recommencer sa recherche depuis le début lorsqu'il atteint la fin du range? "MichDenis" a écrit dans le message de news: %
La méthode Find Ou FinNext s'utilise sur une plage de cellules. comme tu as fait là : Set c = Range("a1:a" & sdligne).Find(snom, LookIn:=xlValues)
à la ligne de code précédente, si tu enlèves l'objet "Range( ) et que tu écris seulement Set C = .Find( ) , tu vas obtenir le même message d'erreur "une référence incorrecte ou non-qualifée" ... tout simplement par que tu n'as pas donné à la méthode Find , l'objet Range() qu'il a besoin pour faire son travail.
Tu pourrais utiliser ce type de syntaxe :
With Range("a1:a" & sdligne) Set C = .Find(snom, LookIn:=xlValues) 'le reste de ton code Do While
Set C = .findNext(c) Loop End with
"François Racine" a écrit dans le message de
news: %
À chaque fois que je tente de démarrer mon script, le débuggeur arrête sur
Set c = .FindNext(c) et retourne un référence incorrecte ou non-qualifée.
Comment dois-je interpréter cela???
'On recherche la trousse tel quelle Set c = Range("a1:a" & sdligne).Find(snom, LookIn:=xlValues)
If Not c Is Nothing Then 'On a trouvé le nom exacte dans la liste
'À ce stade on a trouvé quelque chose et nous sommes sur une première validation premiertest = True 'Lorsque find arrive à la fin d'une liste il boucle depuis le début. 'Nous testons donc si nous somme revenus à firstaddress et le premier 'test est pour permettre de valider suite à un premier findnext firstAddress = c.Address ' Correspond à l'addresse du premier résultat
trouvé strtrouve = True
Do While oncherche 'On va looper afin de bien identifier la position c.Activate 'Noyau inscrite en colonne C vnoyau = c.Offset(0, 2) bonnom = True
If vnoyau = snoyau Then 'Le noyau trouvé correspond avec celui inscrit dans la ligne
okgo = True oncherche = False 'Pour sortir de la loop
c.Offset(0, 3) = strousse 'On l'a trouvé et on l'inscrit dans
la colonne des correles strtrouve = True Else
Set c = .FindNext(c) 'Pas le bon noyau donc on loop
End If
If c Is Nothing Or (c.Address = firstAddress) Then
'Si la recherche ne retourne rien ou que nous bouclons sur la première découverte 'nous sortons oncherche = False Exit Do