OVH Cloud OVH Cloud

gestion d'erreur

10 réponses
Avatar
Claire
Bonsoir
J'aimerais savoir pourquoi j'ai toujours un message d'erreur dans ce bout de
programme et comment passer pardessus.

Je croyais qu'avec "on error go to fin, j'avais résolu mon problème.

Claire


Range("a1").Select
On Error GoTo fin

Cells.Find(What:="VTE", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,
MatchCase:=False _
, SearchFormat:=False).Activate

c = ActiveCell.Address
Range(c).EntireRow.Select
Selection.Delete Shift:=xlUp
Next rw

fin: exit sub

10 réponses

Avatar
galopin01
Bonsoir,
il fallait écrire...

Exit Sub
fin:
End Sub
A+
Avatar
Philippe.R
Bonjour Claire,
Si ce que tu souhaites est de poursuivre l'exécution de la procédure en ignorant l'erreur, utilises
l'instruction
on error resume next en début de code
--
Amicales Salutations
XL 97 / 2000 / 2002
Retirer A_S_ pour répondre en privé.
Préférez suivre facilement sur le forum :
news://msnews.microsoft.com/microsoft.public.fr.excel
(Voulez-vous vous abonner ? -> Oui)

"Claire" a écrit dans le message de news:

Bonsoir
J'aimerais savoir pourquoi j'ai toujours un message d'erreur dans ce bout de
programme et comment passer pardessus.

Je croyais qu'avec "on error go to fin, j'avais résolu mon problème.

Claire


Range("a1").Select
On Error GoTo fin

Cells.Find(What:="VTE", After:¬tiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,
MatchCase:úlse _
, SearchFormat:úlse).Activate

c = ActiveCell.Address
Range(c).EntireRow.Select
Selection.Delete Shift:=xlUp
Next rw

fin: exit sub




Avatar
Claire
Je l'ai écrit de cette façon. Si j'écris End sub après fin: j'ai un message
d'erreur lors de la compilation.

Exit Sub
fin:
Exit Sub

End Sub


"galopin01" a écrit dans le message de
news:
Bonsoir,
il fallait écrire...

Exit Sub
fin:
End Sub
A+




Avatar
Claire
Cette erreur est générée parque que la fonction Find ne peut plus trouver ce
que je recherche. J'aimerais continuer l'exécution du code sur la ligne qui
suit Next rw. Voici ce bout de code au complet.

190 Range("a1").Select
200 On Error GoTo fin

210 Cells.Find(What:="VTE", After:¬tiveCell, LookIn:=xlFormulas,
LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,
MatchCase:úlse _
, SearchFormat:úlse).Activate

220 c = ActiveCell.Address
230 Range(c).EntireRow.Select
240 Selection.Delete Shift:=xlUp
250 Next rw

260 Range("a1:a2").EntireRow.Insert

270 Range("A2:c2").Select
280 Selection.AutoFilter
290 derl = [a65536].End(xlUp).Row
300 Range("b2:b" & derl) = Evaluate("b2:b" & derl & "*1")
310 derl1 = [c65536].End(xlUp).Row
320 Range("B" & derl1 - 1 & ":B" & derl1).EntireRow.Delete
330 Range("b" & derl + 1).Formula = "=subtotal(9,b3:b" & derl & ")"

350 Range("a2").Formula = "UPC"
360 Range("b2").Formula = "Montant"
370 Range("c2").Formula = "prix unité"


390 fin: Exit Sub

End Sub



Avatar
michdenis
Bonsoir Claire,

Une erreur 91 est générée à chaque fois que la méthode "Find" ne trouve pas dans la plage concernée, la chaîne de
caractère recherchée.

Pour que ton code continue d'exécuter la procédure malgré cette erreur, modifie ton code comme suit :

A ) J'ai désactivé la ligne 250 car je ne vois pas le début de la boucle
De plus, si elle ne trouve pas une fois, je ne vois pas pourquoi, la méthode find trouverais après 10 passages.

B ) A à la ligne 390, j'ai enlevé exit sub qui a pour but de terminer la procédure

C ) J'ai ajouté après la lignes 390
Err = 0 'Remet l'erreur à zéro
'affiche qu'il n'y a pas réussi à trouvé. Pas obligatoire !
MsgBox "Pas trouvé ce que tu vous cherchiez."
'Cette ligne fait reprendre la code juste en dessous de la ligne 210
Resume Next


'----------------------------------
Sub Procédure_Claire()

190 Range("a1").Select
200 On Error GoTo fin

210 Cells.Find(What:="VTE", After:¬tiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:úlse _
, SearchFormat:úlse).Activate

220 C = ActiveCell.Address
230 Range(C).EntireRow.Select
240 Selection.Delete Shift:=xlUp
'250 Next rw

260 Range("a1:a2").EntireRow.Insert

270 Range("A2:c2").Select
280 Selection.AutoFilter
290 derl = [a65536].End(xlUp).Row
300 Range("b2:b" & derl) = Evaluate("b2:b" & derl & "*1")
310 derl1 = [c65536].End(xlUp).Row
320 Range("B" & derl1 - 1 & ":B" & derl1).EntireRow.Delete
330 Range("b" & derl + 1).Formula = "=subtotal(9,b3:b" & derl & ")"

350 Range("a2").Formula = "UPC"
360 Range("b2").Formula = "Montant"
370 Range("c2").Formula = "prix unité"


390 fin:
Err = 0
MsgBox "Pas trouvé ce que tu vous cherchiez."
Resume Next

End Sub
'----------------------------------


Salutations!






"Claire" a écrit dans le message de news:
Cette erreur est générée parque que la fonction Find ne peut plus trouver ce
que je recherche. J'aimerais continuer l'exécution du code sur la ligne qui
suit Next rw. Voici ce bout de code au complet.

190 Range("a1").Select
200 On Error GoTo fin

210 Cells.Find(What:="VTE", After:¬tiveCell, LookIn:=xlFormulas,
LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,
MatchCase:úlse _
, SearchFormat:úlse).Activate

220 c = ActiveCell.Address
230 Range(c).EntireRow.Select
240 Selection.Delete Shift:=xlUp
250 Next rw

260 Range("a1:a2").EntireRow.Insert

270 Range("A2:c2").Select
280 Selection.AutoFilter
290 derl = [a65536].End(xlUp).Row
300 Range("b2:b" & derl) = Evaluate("b2:b" & derl & "*1")
310 derl1 = [c65536].End(xlUp).Row
320 Range("B" & derl1 - 1 & ":B" & derl1).EntireRow.Delete
330 Range("b" & derl + 1).Formula = "=subtotal(9,b3:b" & derl & ")"

350 Range("a2").Formula = "UPC"
360 Range("b2").Formula = "Montant"
370 Range("c2").Formula = "prix unité"


390 fin: Exit Sub

End Sub



Avatar
Claire
Bonjour MichDenis,

Voici mon code au complet changé et il ne fonctionne toujours pas. La
fonction Find trouve toutes les occurences de VTE. Merci de m'aider.
Claire

180 For Each rw In Worksheets("SKU").Rows
190 Range("a1").Select
On Error GoTo fin
210 Cells.Find(What:="VTE", After:¬tiveCell, LookIn:=xlFormulas,
LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,
MatchCase:úlse _
, SearchFormat:úlse).Activate

220 c = ActiveCell.Address
230 Range(c).EntireRow.Select
240 Selection.Delete Shift:=xlUp
250 Next rw

260 Range("a1:a2").EntireRow.Insert

270 Range("A2:c2").Select
280 Selection.AutoFilter
290 derl = [a65536].End(xlUp).Row
300 Range("b2:b" & derl) = Evaluate("b2:b" & derl & "*1")
310 derl1 = [c65536].End(xlUp).Row
320 Range("B" & derl1 - 1 & ":B" & derl1).EntireRow.Delete
330 Range("b" & derl + 1).Formula = "=subtotal(9,b3:b" & derl & ")"

350 Range("a2").Formula = "UPC"
360 Range("b2").Formula = "Montant"
370 Range("c2").Formula = "prix unité"

Exit Sub

390 fin:
Err = 0
MsgBox "Pas trouvé ce que tu vous cherchiez."
Resume Next

End Sub

"michdenis" a écrit dans le message de
news:
Bonsoir Claire,

Une erreur 91 est générée à chaque fois que la méthode "Find" ne trouve
pas dans la plage concernée, la chaîne de

caractère recherchée.

Pour que ton code continue d'exécuter la procédure malgré cette erreur,
modifie ton code comme suit :


A ) J'ai désactivé la ligne 250 car je ne vois pas le début de la boucle
De plus, si elle ne trouve pas une fois, je ne vois pas pourquoi, la
méthode find trouverais après 10 passages.


B ) A à la ligne 390, j'ai enlevé exit sub qui a pour but de terminer la
procédure


C ) J'ai ajouté après la lignes 390
Err = 0 'Remet l'erreur à zéro
'affiche qu'il n'y a pas réussi à trouvé. Pas obligatoire !
MsgBox "Pas trouvé ce que tu vous cherchiez."
'Cette ligne fait reprendre la code juste en dessous de la ligne 210
Resume Next


'----------------------------------
Sub Procédure_Claire()

190 Range("a1").Select
200 On Error GoTo fin

210 Cells.Find(What:="VTE", After:¬tiveCell, LookIn:=xlFormulas,
LookAt:= _

xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,
MatchCase:úlse _

, SearchFormat:úlse).Activate

220 C = ActiveCell.Address
230 Range(C).EntireRow.Select
240 Selection.Delete Shift:=xlUp
'250 Next rw

260 Range("a1:a2").EntireRow.Insert

270 Range("A2:c2").Select
280 Selection.AutoFilter
290 derl = [a65536].End(xlUp).Row
300 Range("b2:b" & derl) = Evaluate("b2:b" & derl & "*1")
310 derl1 = [c65536].End(xlUp).Row
320 Range("B" & derl1 - 1 & ":B" & derl1).EntireRow.Delete
330 Range("b" & derl + 1).Formula = "=subtotal(9,b3:b" & derl & ")"

350 Range("a2").Formula = "UPC"
360 Range("b2").Formula = "Montant"
370 Range("c2").Formula = "prix unité"


390 fin:
Err = 0
MsgBox "Pas trouvé ce que tu vous cherchiez."
Resume Next

End Sub
'----------------------------------


Salutations!






"Claire" a écrit dans le message de news:


Cette erreur est générée parque que la fonction Find ne peut plus trouver
ce

que je recherche. J'aimerais continuer l'exécution du code sur la ligne
qui

suit Next rw. Voici ce bout de code au complet.

190 Range("a1").Select
200 On Error GoTo fin

210 Cells.Find(What:="VTE", After:¬tiveCell, LookIn:=xlFormulas,
LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,
MatchCase:úlse _
, SearchFormat:úlse).Activate

220 c = ActiveCell.Address
230 Range(c).EntireRow.Select
240 Selection.Delete Shift:=xlUp
250 Next rw

260 Range("a1:a2").EntireRow.Insert

270 Range("A2:c2").Select
280 Selection.AutoFilter
290 derl = [a65536].End(xlUp).Row
300 Range("b2:b" & derl) = Evaluate("b2:b" & derl & "*1")
310 derl1 = [c65536].End(xlUp).Row
320 Range("B" & derl1 - 1 & ":B" & derl1).EntireRow.Delete
330 Range("b" & derl + 1).Formula = "=subtotal(9,b3:b" & derl & ")"

350 Range("a2").Formula = "UPC"
360 Range("b2").Formula = "Montant"
370 Range("c2").Formula = "prix unité"


390 fin: Exit Sub

End Sub








Avatar
michdenis
Bonsoir Claire,

Qu'est-ce que tu cherches à faire ? Qu'est-ce qui ne va pas dans ta procédure ? Quel résultat tu attendais et qui ne se
matérialise pas ? La seule chose que j'ai faite, c'est que j'ai permis à ton code de s'exécuter sur toute sa longueur ,
ligne par ligne.

En passant dans la procédure que je t'ai transmise, tu devrais ajouter "Exit sub" juste avant cette ligne de code 390.
comme ceci :

Exit sub
390 fin:

Salutations!



"Claire" a écrit dans le message de news:
Bonjour MichDenis,

Voici mon code au complet changé et il ne fonctionne toujours pas. La
fonction Find trouve toutes les occurences de VTE. Merci de m'aider.
Claire

180 For Each rw In Worksheets("SKU").Rows
190 Range("a1").Select
On Error GoTo fin
210 Cells.Find(What:="VTE", After:¬tiveCell, LookIn:=xlFormulas,
LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,
MatchCase:úlse _
, SearchFormat:úlse).Activate

220 c = ActiveCell.Address
230 Range(c).EntireRow.Select
240 Selection.Delete Shift:=xlUp
250 Next rw

260 Range("a1:a2").EntireRow.Insert

270 Range("A2:c2").Select
280 Selection.AutoFilter
290 derl = [a65536].End(xlUp).Row
300 Range("b2:b" & derl) = Evaluate("b2:b" & derl & "*1")
310 derl1 = [c65536].End(xlUp).Row
320 Range("B" & derl1 - 1 & ":B" & derl1).EntireRow.Delete
330 Range("b" & derl + 1).Formula = "=subtotal(9,b3:b" & derl & ")"

350 Range("a2").Formula = "UPC"
360 Range("b2").Formula = "Montant"
370 Range("c2").Formula = "prix unité"

Exit Sub

390 fin:
Err = 0
MsgBox "Pas trouvé ce que tu vous cherchiez."
Resume Next

End Sub

"michdenis" a écrit dans le message de
news:
Bonsoir Claire,

Une erreur 91 est générée à chaque fois que la méthode "Find" ne trouve
pas dans la plage concernée, la chaîne de

caractère recherchée.

Pour que ton code continue d'exécuter la procédure malgré cette erreur,
modifie ton code comme suit :


A ) J'ai désactivé la ligne 250 car je ne vois pas le début de la boucle
De plus, si elle ne trouve pas une fois, je ne vois pas pourquoi, la
méthode find trouverais après 10 passages.


B ) A à la ligne 390, j'ai enlevé exit sub qui a pour but de terminer la
procédure


C ) J'ai ajouté après la lignes 390
Err = 0 'Remet l'erreur à zéro
'affiche qu'il n'y a pas réussi à trouvé. Pas obligatoire !
MsgBox "Pas trouvé ce que tu vous cherchiez."
'Cette ligne fait reprendre la code juste en dessous de la ligne 210
Resume Next


'----------------------------------
Sub Procédure_Claire()

190 Range("a1").Select
200 On Error GoTo fin

210 Cells.Find(What:="VTE", After:¬tiveCell, LookIn:=xlFormulas,
LookAt:= _

xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,
MatchCase:úlse _

, SearchFormat:úlse).Activate

220 C = ActiveCell.Address
230 Range(C).EntireRow.Select
240 Selection.Delete Shift:=xlUp
'250 Next rw

260 Range("a1:a2").EntireRow.Insert

270 Range("A2:c2").Select
280 Selection.AutoFilter
290 derl = [a65536].End(xlUp).Row
300 Range("b2:b" & derl) = Evaluate("b2:b" & derl & "*1")
310 derl1 = [c65536].End(xlUp).Row
320 Range("B" & derl1 - 1 & ":B" & derl1).EntireRow.Delete
330 Range("b" & derl + 1).Formula = "=subtotal(9,b3:b" & derl & ")"

350 Range("a2").Formula = "UPC"
360 Range("b2").Formula = "Montant"
370 Range("c2").Formula = "prix unité"


390 fin:
Err = 0
MsgBox "Pas trouvé ce que tu vous cherchiez."
Resume Next

End Sub
'----------------------------------


Salutations!






"Claire" a écrit dans le message de news:


Cette erreur est générée parque que la fonction Find ne peut plus trouver
ce

que je recherche. J'aimerais continuer l'exécution du code sur la ligne
qui

suit Next rw. Voici ce bout de code au complet.

190 Range("a1").Select
200 On Error GoTo fin

210 Cells.Find(What:="VTE", After:¬tiveCell, LookIn:=xlFormulas,
LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,
MatchCase:úlse _
, SearchFormat:úlse).Activate

220 c = ActiveCell.Address
230 Range(c).EntireRow.Select
240 Selection.Delete Shift:=xlUp
250 Next rw

260 Range("a1:a2").EntireRow.Insert

270 Range("A2:c2").Select
280 Selection.AutoFilter
290 derl = [a65536].End(xlUp).Row
300 Range("b2:b" & derl) = Evaluate("b2:b" & derl & "*1")
310 derl1 = [c65536].End(xlUp).Row
320 Range("B" & derl1 - 1 & ":B" & derl1).EntireRow.Delete
330 Range("b" & derl + 1).Formula = "=subtotal(9,b3:b" & derl & ")"

350 Range("a2").Formula = "UPC"
360 Range("b2").Formula = "Montant"
370 Range("c2").Formula = "prix unité"


390 fin: Exit Sub

End Sub








Avatar
Claire
Ce qui ne va pas dans ma procédure, c'est qu'elle bloque toujours sur la
même erreur. J'avais mis le Exit Sub avant la linge 390.

J'utilise pourtant cette fonction Find ailleurs avec une gestion d'erreur et
elle a toujours marché.

C'est à n'y rien comprendre.

"michdenis" a écrit dans le message de
news:
Bonsoir Claire,

Qu'est-ce que tu cherches à faire ? Qu'est-ce qui ne va pas dans ta
procédure ? Quel résultat tu attendais et qui ne se

matérialise pas ? La seule chose que j'ai faite, c'est que j'ai permis à
ton code de s'exécuter sur toute sa longueur ,

ligne par ligne.

En passant dans la procédure que je t'ai transmise, tu devrais ajouter
"Exit sub" juste avant cette ligne de code 390.

comme ceci :

Exit sub
390 fin:

Salutations!



"Claire" a écrit dans le message de news:


Bonjour MichDenis,

Voici mon code au complet changé et il ne fonctionne toujours pas. La
fonction Find trouve toutes les occurences de VTE. Merci de m'aider.
Claire

180 For Each rw In Worksheets("SKU").Rows
190 Range("a1").Select
On Error GoTo fin
210 Cells.Find(What:="VTE", After:¬tiveCell, LookIn:=xlFormulas,
LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,
MatchCase:úlse _
, SearchFormat:úlse).Activate

220 c = ActiveCell.Address
230 Range(c).EntireRow.Select
240 Selection.Delete Shift:=xlUp
250 Next rw

260 Range("a1:a2").EntireRow.Insert

270 Range("A2:c2").Select
280 Selection.AutoFilter
290 derl = [a65536].End(xlUp).Row
300 Range("b2:b" & derl) = Evaluate("b2:b" & derl & "*1")
310 derl1 = [c65536].End(xlUp).Row
320 Range("B" & derl1 - 1 & ":B" & derl1).EntireRow.Delete
330 Range("b" & derl + 1).Formula = "=subtotal(9,b3:b" & derl & ")"

350 Range("a2").Formula = "UPC"
360 Range("b2").Formula = "Montant"
370 Range("c2").Formula = "prix unité"

Exit Sub

390 fin:
Err = 0
MsgBox "Pas trouvé ce que tu vous cherchiez."
Resume Next

End Sub

"michdenis" a écrit dans le message de
news:
Bonsoir Claire,

Une erreur 91 est générée à chaque fois que la méthode "Find" ne trouve
pas dans la plage concernée, la chaîne de

caractère recherchée.

Pour que ton code continue d'exécuter la procédure malgré cette erreur,
modifie ton code comme suit :


A ) J'ai désactivé la ligne 250 car je ne vois pas le début de la boucle
De plus, si elle ne trouve pas une fois, je ne vois pas pourquoi, la
méthode find trouverais après 10 passages.


B ) A à la ligne 390, j'ai enlevé exit sub qui a pour but de terminer la
procédure


C ) J'ai ajouté après la lignes 390
Err = 0 'Remet l'erreur à zéro
'affiche qu'il n'y a pas réussi à trouvé. Pas obligatoire !
MsgBox "Pas trouvé ce que tu vous cherchiez."
'Cette ligne fait reprendre la code juste en dessous de la ligne 210
Resume Next


'----------------------------------
Sub Procédure_Claire()

190 Range("a1").Select
200 On Error GoTo fin

210 Cells.Find(What:="VTE", After:¬tiveCell, LookIn:=xlFormulas,
LookAt:= _

xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,
MatchCase:úlse _

, SearchFormat:úlse).Activate

220 C = ActiveCell.Address
230 Range(C).EntireRow.Select
240 Selection.Delete Shift:=xlUp
'250 Next rw

260 Range("a1:a2").EntireRow.Insert

270 Range("A2:c2").Select
280 Selection.AutoFilter
290 derl = [a65536].End(xlUp).Row
300 Range("b2:b" & derl) = Evaluate("b2:b" & derl & "*1")
310 derl1 = [c65536].End(xlUp).Row
320 Range("B" & derl1 - 1 & ":B" & derl1).EntireRow.Delete
330 Range("b" & derl + 1).Formula = "=subtotal(9,b3:b" & derl &
")"



350 Range("a2").Formula = "UPC"
360 Range("b2").Formula = "Montant"
370 Range("c2").Formula = "prix unité"


390 fin:
Err = 0
MsgBox "Pas trouvé ce que tu vous cherchiez."
Resume Next

End Sub
'----------------------------------


Salutations!






"Claire" a écrit dans le message de news:


Cette erreur est générée parque que la fonction Find ne peut plus
trouver


ce
que je recherche. J'aimerais continuer l'exécution du code sur la ligne
qui

suit Next rw. Voici ce bout de code au complet.

190 Range("a1").Select
200 On Error GoTo fin

210 Cells.Find(What:="VTE", After:¬tiveCell, LookIn:=xlFormulas,
LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,
MatchCase:úlse _
, SearchFormat:úlse).Activate

220 c = ActiveCell.Address
230 Range(c).EntireRow.Select
240 Selection.Delete Shift:=xlUp
250 Next rw

260 Range("a1:a2").EntireRow.Insert

270 Range("A2:c2").Select
280 Selection.AutoFilter
290 derl = [a65536].End(xlUp).Row
300 Range("b2:b" & derl) = Evaluate("b2:b" & derl & "*1")
310 derl1 = [c65536].End(xlUp).Row
320 Range("B" & derl1 - 1 & ":B" & derl1).EntireRow.Delete
330 Range("b" & derl + 1).Formula = "=subtotal(9,b3:b" & derl &
")"



350 Range("a2").Formula = "UPC"
360 Range("b2").Formula = "Montant"
370 Range("c2").Formula = "prix unité"


390 fin: Exit Sub

End Sub













Avatar
michdenis
Bonsoir Claire,

Cette ligne de code devrait être en mesure de trouver la cellule qui contient "VTE" ....

Cells.Find(What:="VTE", After:¬tiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:úlse _
, SearchFormat:úlse).Activate


Attention, il ne faut pas mélanger la Gestion d'erreur d'un code et le fait qu'une fonction comme "Find" trouve ou non
la chaîne recherchée dans une plage de celllules déterminée. Le fait d'insérer une gestion d'erreur permet au code de
s'exécuter au complet et d'éviter que la procédure "plante"... cette gestion d'erreur n'a rien à voir avec le fait que
la méthode "find" puisse trouver ou non la chaîne désirée.

Si tu veux faire un petit test : Sort de ta procédure générale seulement la ligne de code mentionnée. Fait-elle le
travail ?
'--------------------
Sub Trouve()
Cells.Find(What:="VTE", After:¬tiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:úlse _
, SearchFormat:úlse).Activate
End Sub
'--------------------


Salutations!



"Claire" a écrit dans le message de news:
Ce qui ne va pas dans ma procédure, c'est qu'elle bloque toujours sur la
même erreur. J'avais mis le Exit Sub avant la linge 390.

J'utilise pourtant cette fonction Find ailleurs avec une gestion d'erreur et
elle a toujours marché.

C'est à n'y rien comprendre.

"michdenis" a écrit dans le message de
news:
Bonsoir Claire,

Qu'est-ce que tu cherches à faire ? Qu'est-ce qui ne va pas dans ta
procédure ? Quel résultat tu attendais et qui ne se

matérialise pas ? La seule chose que j'ai faite, c'est que j'ai permis à
ton code de s'exécuter sur toute sa longueur ,

ligne par ligne.

En passant dans la procédure que je t'ai transmise, tu devrais ajouter
"Exit sub" juste avant cette ligne de code 390.

comme ceci :

Exit sub
390 fin:

Salutations!



"Claire" a écrit dans le message de news:


Bonjour MichDenis,

Voici mon code au complet changé et il ne fonctionne toujours pas. La
fonction Find trouve toutes les occurences de VTE. Merci de m'aider.
Claire

180 For Each rw In Worksheets("SKU").Rows
190 Range("a1").Select
On Error GoTo fin
210 Cells.Find(What:="VTE", After:¬tiveCell, LookIn:=xlFormulas,
LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,
MatchCase:úlse _
, SearchFormat:úlse).Activate

220 c = ActiveCell.Address
230 Range(c).EntireRow.Select
240 Selection.Delete Shift:=xlUp
250 Next rw

260 Range("a1:a2").EntireRow.Insert

270 Range("A2:c2").Select
280 Selection.AutoFilter
290 derl = [a65536].End(xlUp).Row
300 Range("b2:b" & derl) = Evaluate("b2:b" & derl & "*1")
310 derl1 = [c65536].End(xlUp).Row
320 Range("B" & derl1 - 1 & ":B" & derl1).EntireRow.Delete
330 Range("b" & derl + 1).Formula = "=subtotal(9,b3:b" & derl & ")"

350 Range("a2").Formula = "UPC"
360 Range("b2").Formula = "Montant"
370 Range("c2").Formula = "prix unité"

Exit Sub

390 fin:
Err = 0
MsgBox "Pas trouvé ce que tu vous cherchiez."
Resume Next

End Sub

"michdenis" a écrit dans le message de
news:
Bonsoir Claire,

Une erreur 91 est générée à chaque fois que la méthode "Find" ne trouve
pas dans la plage concernée, la chaîne de

caractère recherchée.

Pour que ton code continue d'exécuter la procédure malgré cette erreur,
modifie ton code comme suit :


A ) J'ai désactivé la ligne 250 car je ne vois pas le début de la boucle
De plus, si elle ne trouve pas une fois, je ne vois pas pourquoi, la
méthode find trouverais après 10 passages.


B ) A à la ligne 390, j'ai enlevé exit sub qui a pour but de terminer la
procédure


C ) J'ai ajouté après la lignes 390
Err = 0 'Remet l'erreur à zéro
'affiche qu'il n'y a pas réussi à trouvé. Pas obligatoire !
MsgBox "Pas trouvé ce que tu vous cherchiez."
'Cette ligne fait reprendre la code juste en dessous de la ligne 210
Resume Next


'----------------------------------
Sub Procédure_Claire()

190 Range("a1").Select
200 On Error GoTo fin

210 Cells.Find(What:="VTE", After:¬tiveCell, LookIn:=xlFormulas,
LookAt:= _

xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,
MatchCase:úlse _

, SearchFormat:úlse).Activate

220 C = ActiveCell.Address
230 Range(C).EntireRow.Select
240 Selection.Delete Shift:=xlUp
'250 Next rw

260 Range("a1:a2").EntireRow.Insert

270 Range("A2:c2").Select
280 Selection.AutoFilter
290 derl = [a65536].End(xlUp).Row
300 Range("b2:b" & derl) = Evaluate("b2:b" & derl & "*1")
310 derl1 = [c65536].End(xlUp).Row
320 Range("B" & derl1 - 1 & ":B" & derl1).EntireRow.Delete
330 Range("b" & derl + 1).Formula = "=subtotal(9,b3:b" & derl &
")"



350 Range("a2").Formula = "UPC"
360 Range("b2").Formula = "Montant"
370 Range("c2").Formula = "prix unité"


390 fin:
Err = 0
MsgBox "Pas trouvé ce que tu vous cherchiez."
Resume Next

End Sub
'----------------------------------


Salutations!






"Claire" a écrit dans le message de news:


Cette erreur est générée parque que la fonction Find ne peut plus
trouver


ce
que je recherche. J'aimerais continuer l'exécution du code sur la ligne
qui

suit Next rw. Voici ce bout de code au complet.

190 Range("a1").Select
200 On Error GoTo fin

210 Cells.Find(What:="VTE", After:¬tiveCell, LookIn:=xlFormulas,
LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,
MatchCase:úlse _
, SearchFormat:úlse).Activate

220 c = ActiveCell.Address
230 Range(c).EntireRow.Select
240 Selection.Delete Shift:=xlUp
250 Next rw

260 Range("a1:a2").EntireRow.Insert

270 Range("A2:c2").Select
280 Selection.AutoFilter
290 derl = [a65536].End(xlUp).Row
300 Range("b2:b" & derl) = Evaluate("b2:b" & derl & "*1")
310 derl1 = [c65536].End(xlUp).Row
320 Range("B" & derl1 - 1 & ":B" & derl1).EntireRow.Delete
330 Range("b" & derl + 1).Formula = "=subtotal(9,b3:b" & derl &
")"



350 Range("a2").Formula = "UPC"
360 Range("b2").Formula = "Montant"
370 Range("c2").Formula = "prix unité"


390 fin: Exit Sub

End Sub













Avatar
Claire
Allo,
Je crois que j'ai trouvé pourquoi ma routine de gestion d'erreur ne
fonctionnait pas. J'avais déjà une gestion d'erreur un plus haut, je crois
que peut-être il y avait un conflit entre les deux.

Claire

"Claire" a écrit dans le message de
news:
Bonsoir
J'aimerais savoir pourquoi j'ai toujours un message d'erreur dans ce bout
de

programme et comment passer pardessus.

Je croyais qu'avec "on error go to fin, j'avais résolu mon problème.

Claire


Range("a1").Select
On Error GoTo fin

Cells.Find(What:="VTE", After:¬tiveCell, LookIn:=xlFormulas, LookAt: _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,
MatchCase:úlse _
, SearchFormat:úlse).Activate

c = ActiveCell.Address
Range(c).EntireRow.Select
Selection.Delete Shift:=xlUp
Next rw

fin: exit sub