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

Référence incorrecte ou non-qualifié

4 réponses
Avatar
François Racine
À 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

4 réponses

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






Avatar
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






Avatar
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