Bonjour,
Essaie comme ceci :
'-------------------------------------
Sub test()
Dim i as Integer ' Ou Long
Dim NextErreur As String
On Error GoTo NextErreur
Ton code
Exit Sub
NextErreur:
Err.Clear
i = i + 1
Resume Next
End Sub
'-------------------------------------
"Stan37" a écrit dans le message de groupe de
discussion :
Bonjour,
Dans la portion de code suivante, qui parcourt une feuille, le "On Error
GoTo nexterr:" fonctionne correctement lors du premier cas d'erreur, mais pas
au second ou il y a une sortie "brutale" et la fonction rend "#VALEUR!", je
ne vois pas bien pourquoi.
Le problème persiste même si je réinitialise le gestionnaire d'erreur
(err.clear).
L'erreur intervient lorsque Worksheets(onglet).Cells(i, col3) fait référence
à une cellule dans laquelle une fonction Excel renvoie un cas d'erreur.
Merci par avance pour toute aide.
Claude Barbier
On Error GoTo nexterr
i = 2
tot = 0
Do While i < 60000
' On sort dés que col 1 vide
If Worksheets(onglet).Cells(i, 1) = "" Then
Exit Do
Else
If Compare(val1, Worksheets(onglet).Cells(i, col1)) = True Then
If Compare(val2, Worksheets(onglet).Cells(i, col2)) = True
Then
If Compare(val3, Worksheets(onglet).Cells(i, col3)) > True Then
tot = tot + 1
End If
End If
End If
End If
nexterr:
i = i + 1
Loop
Bonjour,
Essaie comme ceci :
'-------------------------------------
Sub test()
Dim i as Integer ' Ou Long
Dim NextErreur As String
On Error GoTo NextErreur
Ton code
Exit Sub
NextErreur:
Err.Clear
i = i + 1
Resume Next
End Sub
'-------------------------------------
"Stan37" <Stan37@discussions.microsoft.com> a écrit dans le message de groupe de
discussion : B2764F32-F0EE-4678-84C3-629F54036C03@microsoft.com...
Bonjour,
Dans la portion de code suivante, qui parcourt une feuille, le "On Error
GoTo nexterr:" fonctionne correctement lors du premier cas d'erreur, mais pas
au second ou il y a une sortie "brutale" et la fonction rend "#VALEUR!", je
ne vois pas bien pourquoi.
Le problème persiste même si je réinitialise le gestionnaire d'erreur
(err.clear).
L'erreur intervient lorsque Worksheets(onglet).Cells(i, col3) fait référence
à une cellule dans laquelle une fonction Excel renvoie un cas d'erreur.
Merci par avance pour toute aide.
Claude Barbier
On Error GoTo nexterr
i = 2
tot = 0
Do While i < 60000
' On sort dés que col 1 vide
If Worksheets(onglet).Cells(i, 1) = "" Then
Exit Do
Else
If Compare(val1, Worksheets(onglet).Cells(i, col1)) = True Then
If Compare(val2, Worksheets(onglet).Cells(i, col2)) = True
Then
If Compare(val3, Worksheets(onglet).Cells(i, col3)) > True Then
tot = tot + 1
End If
End If
End If
End If
nexterr:
i = i + 1
Loop
Bonjour,
Essaie comme ceci :
'-------------------------------------
Sub test()
Dim i as Integer ' Ou Long
Dim NextErreur As String
On Error GoTo NextErreur
Ton code
Exit Sub
NextErreur:
Err.Clear
i = i + 1
Resume Next
End Sub
'-------------------------------------
"Stan37" a écrit dans le message de groupe de
discussion :
Bonjour,
Dans la portion de code suivante, qui parcourt une feuille, le "On Error
GoTo nexterr:" fonctionne correctement lors du premier cas d'erreur, mais pas
au second ou il y a une sortie "brutale" et la fonction rend "#VALEUR!", je
ne vois pas bien pourquoi.
Le problème persiste même si je réinitialise le gestionnaire d'erreur
(err.clear).
L'erreur intervient lorsque Worksheets(onglet).Cells(i, col3) fait référence
à une cellule dans laquelle une fonction Excel renvoie un cas d'erreur.
Merci par avance pour toute aide.
Claude Barbier
On Error GoTo nexterr
i = 2
tot = 0
Do While i < 60000
' On sort dés que col 1 vide
If Worksheets(onglet).Cells(i, 1) = "" Then
Exit Do
Else
If Compare(val1, Worksheets(onglet).Cells(i, col1)) = True Then
If Compare(val2, Worksheets(onglet).Cells(i, col2)) = True
Then
If Compare(val3, Worksheets(onglet).Cells(i, col3)) > True Then
tot = tot + 1
End If
End If
End If
End If
nexterr:
i = i + 1
Loop
Bonjour,
Essaie comme ceci :
'-------------------------------------
Sub test()
Dim i as Integer ' Ou Long
Dim NextErreur As String
On Error GoTo NextErreur
Ton code
Exit Sub
NextErreur:
Err.Clear
i = i + 1
Resume Next
End Sub
'-------------------------------------
"Stan37" a écrit dans le message de groupe de
discussion :
Bonjour,
Dans la portion de code suivante, qui parcourt une feuille, le "On Error
GoTo nexterr:" fonctionne correctement lors du premier cas d'erreur, mais pas
au second ou il y a une sortie "brutale" et la fonction rend "#VALEUR!", je
ne vois pas bien pourquoi.
Le problème persiste même si je réinitialise le gestionnaire d'erreur
(err.clear).
L'erreur intervient lorsque Worksheets(onglet).Cells(i, col3) fait référence
à une cellule dans laquelle une fonction Excel renvoie un cas d'erreur.
Merci par avance pour toute aide.
Claude Barbier
On Error GoTo nexterr
i = 2
tot = 0
Do While i < 60000
' On sort dés que col 1 vide
If Worksheets(onglet).Cells(i, 1) = "" Then
Exit Do
Else
If Compare(val1, Worksheets(onglet).Cells(i, col1)) = True Then
If Compare(val2, Worksheets(onglet).Cells(i, col2)) = True
Then
If Compare(val3, Worksheets(onglet).Cells(i, col3)) > True Then
tot = tot + 1
End If
End If
End If
End If
nexterr:
i = i + 1
Loop
Bonjour,
Essaie comme ceci :
'-------------------------------------
Sub test()
Dim i as Integer ' Ou Long
Dim NextErreur As String
On Error GoTo NextErreur
Ton code
Exit Sub
NextErreur:
Err.Clear
i = i + 1
Resume Next
End Sub
'-------------------------------------
"Stan37" <Stan37@discussions.microsoft.com> a écrit dans le message de groupe de
discussion : B2764F32-F0EE-4678-84C3-629F54036C03@microsoft.com...
Bonjour,
Dans la portion de code suivante, qui parcourt une feuille, le "On Error
GoTo nexterr:" fonctionne correctement lors du premier cas d'erreur, mais pas
au second ou il y a une sortie "brutale" et la fonction rend "#VALEUR!", je
ne vois pas bien pourquoi.
Le problème persiste même si je réinitialise le gestionnaire d'erreur
(err.clear).
L'erreur intervient lorsque Worksheets(onglet).Cells(i, col3) fait référence
à une cellule dans laquelle une fonction Excel renvoie un cas d'erreur.
Merci par avance pour toute aide.
Claude Barbier
On Error GoTo nexterr
i = 2
tot = 0
Do While i < 60000
' On sort dés que col 1 vide
If Worksheets(onglet).Cells(i, 1) = "" Then
Exit Do
Else
If Compare(val1, Worksheets(onglet).Cells(i, col1)) = True Then
If Compare(val2, Worksheets(onglet).Cells(i, col2)) = True
Then
If Compare(val3, Worksheets(onglet).Cells(i, col3)) > True Then
tot = tot + 1
End If
End If
End If
End If
nexterr:
i = i + 1
Loop
Bonjour,
Essaie comme ceci :
'-------------------------------------
Sub test()
Dim i as Integer ' Ou Long
Dim NextErreur As String
On Error GoTo NextErreur
Ton code
Exit Sub
NextErreur:
Err.Clear
i = i + 1
Resume Next
End Sub
'-------------------------------------
"Stan37" a écrit dans le message de groupe de
discussion :
Bonjour,
Dans la portion de code suivante, qui parcourt une feuille, le "On Error
GoTo nexterr:" fonctionne correctement lors du premier cas d'erreur, mais pas
au second ou il y a une sortie "brutale" et la fonction rend "#VALEUR!", je
ne vois pas bien pourquoi.
Le problème persiste même si je réinitialise le gestionnaire d'erreur
(err.clear).
L'erreur intervient lorsque Worksheets(onglet).Cells(i, col3) fait référence
à une cellule dans laquelle une fonction Excel renvoie un cas d'erreur.
Merci par avance pour toute aide.
Claude Barbier
On Error GoTo nexterr
i = 2
tot = 0
Do While i < 60000
' On sort dés que col 1 vide
If Worksheets(onglet).Cells(i, 1) = "" Then
Exit Do
Else
If Compare(val1, Worksheets(onglet).Cells(i, col1)) = True Then
If Compare(val2, Worksheets(onglet).Cells(i, col2)) = True
Then
If Compare(val3, Worksheets(onglet).Cells(i, col3)) > True Then
tot = tot + 1
End If
End If
End If
End If
nexterr:
i = i + 1
Loop
Pour répondre adéquatement à ta question, il faudrait savoir
qu'elle est la ligne de code susceptible de générer une erreur
et qu'elle est le résultat que tu désires obtenir ?
Une autre suggestion irait comme suit :
En début de procédure,
On error resume next
Immédiatement après la ligne de code suscitant une erreur possible :
'--------------------
If err <>0 then
err.clear
Else
i = i + 1
End if
'--------------------
Ou l'inverse selon ce que tu tentes d'évaluer.
"Stan37" a écrit dans le message de groupe de
discussion :
Merci pour cette solution qui permet de ne plus sortir en erreur, mais cela
ne résoud pas complétement mon problème car le "Resume Next" fait qu'on
continue à exécuter le code comme si le if Compare(....) avait rendu un
"TRUE".
"tot" est incrémenté et le résultat final n'est pas bon, il faudrait que
lorsqu'il y a une erreur on passe à l'item suivant de la boucle Do.
"michdenis" wrote:
> Bonjour,
>
> Essaie comme ceci :
>
> '-------------------------------------
> Sub test()
> Dim i as Integer ' Ou Long
> Dim NextErreur As String
> On Error GoTo NextErreur
>
> Ton code
>
> Exit Sub
>
> NextErreur:
> Err.Clear
> i = i + 1
> Resume Next
> End Sub
> '-------------------------------------
>
>
>
> "Stan37" a écrit dans le message de groupe de
> discussion :
> Bonjour,
>
> Dans la portion de code suivante, qui parcourt une feuille, le "On Error
> GoTo nexterr:" fonctionne correctement lors du premier cas d'erreur, mais pas
> au second ou il y a une sortie "brutale" et la fonction rend "#VALEUR!", je
> ne vois pas bien pourquoi.
>
> Le problème persiste même si je réinitialise le gestionnaire d'erreur
> (err.clear).
>
> L'erreur intervient lorsque Worksheets(onglet).Cells(i, col3) fait référence
> à une cellule dans laquelle une fonction Excel renvoie un cas d'erreur.
> Merci par avance pour toute aide.
> Claude Barbier
>
> On Error GoTo nexterr
> i = 2
> tot = 0
> Do While i < 60000
> ' On sort dés que col 1 vide
> If Worksheets(onglet).Cells(i, 1) = "" Then
> Exit Do
> Else
> If Compare(val1, Worksheets(onglet).Cells(i, col1)) = True Then
> If Compare(val2, Worksheets(onglet).Cells(i, col2)) = True
> Then
> If Compare(val3, Worksheets(onglet).Cells(i, col3)) > > True Then
> tot = tot + 1
> End If
> End If
> End If
> End If
> nexterr:
> i = i + 1
> Loop
>
Pour répondre adéquatement à ta question, il faudrait savoir
qu'elle est la ligne de code susceptible de générer une erreur
et qu'elle est le résultat que tu désires obtenir ?
Une autre suggestion irait comme suit :
En début de procédure,
On error resume next
Immédiatement après la ligne de code suscitant une erreur possible :
'--------------------
If err <>0 then
err.clear
Else
i = i + 1
End if
'--------------------
Ou l'inverse selon ce que tu tentes d'évaluer.
"Stan37" <Stan37@discussions.microsoft.com> a écrit dans le message de groupe de
discussion : 592C9DE2-C987-471E-AA43-D611BAEF1491@microsoft.com...
Merci pour cette solution qui permet de ne plus sortir en erreur, mais cela
ne résoud pas complétement mon problème car le "Resume Next" fait qu'on
continue à exécuter le code comme si le if Compare(....) avait rendu un
"TRUE".
"tot" est incrémenté et le résultat final n'est pas bon, il faudrait que
lorsqu'il y a une erreur on passe à l'item suivant de la boucle Do.
"michdenis" wrote:
> Bonjour,
>
> Essaie comme ceci :
>
> '-------------------------------------
> Sub test()
> Dim i as Integer ' Ou Long
> Dim NextErreur As String
> On Error GoTo NextErreur
>
> Ton code
>
> Exit Sub
>
> NextErreur:
> Err.Clear
> i = i + 1
> Resume Next
> End Sub
> '-------------------------------------
>
>
>
> "Stan37" <Stan37@discussions.microsoft.com> a écrit dans le message de groupe de
> discussion : B2764F32-F0EE-4678-84C3-629F54036C03@microsoft.com...
> Bonjour,
>
> Dans la portion de code suivante, qui parcourt une feuille, le "On Error
> GoTo nexterr:" fonctionne correctement lors du premier cas d'erreur, mais pas
> au second ou il y a une sortie "brutale" et la fonction rend "#VALEUR!", je
> ne vois pas bien pourquoi.
>
> Le problème persiste même si je réinitialise le gestionnaire d'erreur
> (err.clear).
>
> L'erreur intervient lorsque Worksheets(onglet).Cells(i, col3) fait référence
> à une cellule dans laquelle une fonction Excel renvoie un cas d'erreur.
> Merci par avance pour toute aide.
> Claude Barbier
>
> On Error GoTo nexterr
> i = 2
> tot = 0
> Do While i < 60000
> ' On sort dés que col 1 vide
> If Worksheets(onglet).Cells(i, 1) = "" Then
> Exit Do
> Else
> If Compare(val1, Worksheets(onglet).Cells(i, col1)) = True Then
> If Compare(val2, Worksheets(onglet).Cells(i, col2)) = True
> Then
> If Compare(val3, Worksheets(onglet).Cells(i, col3)) > > True Then
> tot = tot + 1
> End If
> End If
> End If
> End If
> nexterr:
> i = i + 1
> Loop
>
Pour répondre adéquatement à ta question, il faudrait savoir
qu'elle est la ligne de code susceptible de générer une erreur
et qu'elle est le résultat que tu désires obtenir ?
Une autre suggestion irait comme suit :
En début de procédure,
On error resume next
Immédiatement après la ligne de code suscitant une erreur possible :
'--------------------
If err <>0 then
err.clear
Else
i = i + 1
End if
'--------------------
Ou l'inverse selon ce que tu tentes d'évaluer.
"Stan37" a écrit dans le message de groupe de
discussion :
Merci pour cette solution qui permet de ne plus sortir en erreur, mais cela
ne résoud pas complétement mon problème car le "Resume Next" fait qu'on
continue à exécuter le code comme si le if Compare(....) avait rendu un
"TRUE".
"tot" est incrémenté et le résultat final n'est pas bon, il faudrait que
lorsqu'il y a une erreur on passe à l'item suivant de la boucle Do.
"michdenis" wrote:
> Bonjour,
>
> Essaie comme ceci :
>
> '-------------------------------------
> Sub test()
> Dim i as Integer ' Ou Long
> Dim NextErreur As String
> On Error GoTo NextErreur
>
> Ton code
>
> Exit Sub
>
> NextErreur:
> Err.Clear
> i = i + 1
> Resume Next
> End Sub
> '-------------------------------------
>
>
>
> "Stan37" a écrit dans le message de groupe de
> discussion :
> Bonjour,
>
> Dans la portion de code suivante, qui parcourt une feuille, le "On Error
> GoTo nexterr:" fonctionne correctement lors du premier cas d'erreur, mais pas
> au second ou il y a une sortie "brutale" et la fonction rend "#VALEUR!", je
> ne vois pas bien pourquoi.
>
> Le problème persiste même si je réinitialise le gestionnaire d'erreur
> (err.clear).
>
> L'erreur intervient lorsque Worksheets(onglet).Cells(i, col3) fait référence
> à une cellule dans laquelle une fonction Excel renvoie un cas d'erreur.
> Merci par avance pour toute aide.
> Claude Barbier
>
> On Error GoTo nexterr
> i = 2
> tot = 0
> Do While i < 60000
> ' On sort dés que col 1 vide
> If Worksheets(onglet).Cells(i, 1) = "" Then
> Exit Do
> Else
> If Compare(val1, Worksheets(onglet).Cells(i, col1)) = True Then
> If Compare(val2, Worksheets(onglet).Cells(i, col2)) = True
> Then
> If Compare(val3, Worksheets(onglet).Cells(i, col3)) > > True Then
> tot = tot + 1
> End If
> End If
> End If
> End If
> nexterr:
> i = i + 1
> Loop
>
Pour répondre adéquatement à ta question, il faudrait savoir
qu'elle est la ligne de code susceptible de générer une erreur
et qu'elle est le résultat que tu désires obtenir ?
Une autre suggestion irait comme suit :
En début de procédure,
On error resume next
Immédiatement après la ligne de code suscitant une erreur possible :
'--------------------
If err <>0 then
err.clear
Else
i = i + 1
End if
'--------------------
Ou l'inverse selon ce que tu tentes d'évaluer.
"Stan37" a écrit dans le message de groupe de
discussion :
Merci pour cette solution qui permet de ne plus sortir en erreur, mais cela
ne résoud pas complétement mon problème car le "Resume Next" fait qu'on
continue à exécuter le code comme si le if Compare(....) avait rendu un
"TRUE".
"tot" est incrémenté et le résultat final n'est pas bon, il faudrait que
lorsqu'il y a une erreur on passe à l'item suivant de la boucle Do.
"michdenis" wrote:
> Bonjour,
>
> Essaie comme ceci :
>
> '-------------------------------------
> Sub test()
> Dim i as Integer ' Ou Long
> Dim NextErreur As String
> On Error GoTo NextErreur
>
> Ton code
>
> Exit Sub
>
> NextErreur:
> Err.Clear
> i = i + 1
> Resume Next
> End Sub
> '-------------------------------------
>
>
>
> "Stan37" a écrit dans le message de groupe de
> discussion :
> Bonjour,
>
> Dans la portion de code suivante, qui parcourt une feuille, le "On Error
> GoTo nexterr:" fonctionne correctement lors du premier cas d'erreur, mais pas
> au second ou il y a une sortie "brutale" et la fonction rend "#VALEUR!", je
> ne vois pas bien pourquoi.
>
> Le problème persiste même si je réinitialise le gestionnaire d'erreur
> (err.clear).
>
> L'erreur intervient lorsque Worksheets(onglet).Cells(i, col3) fait référence
> à une cellule dans laquelle une fonction Excel renvoie un cas d'erreur.
> Merci par avance pour toute aide.
> Claude Barbier
>
> On Error GoTo nexterr
> i = 2
> tot = 0
> Do While i < 60000
> ' On sort dés que col 1 vide
> If Worksheets(onglet).Cells(i, 1) = "" Then
> Exit Do
> Else
> If Compare(val1, Worksheets(onglet).Cells(i, col1)) = True Then
> If Compare(val2, Worksheets(onglet).Cells(i, col2)) = True
> Then
> If Compare(val3, Worksheets(onglet).Cells(i, col3)) > > True Then
> tot = tot + 1
> End If
> End If
> End If
> End If
> nexterr:
> i = i + 1
> Loop
>
Pour répondre adéquatement à ta question, il faudrait savoir
qu'elle est la ligne de code susceptible de générer une erreur
et qu'elle est le résultat que tu désires obtenir ?
Une autre suggestion irait comme suit :
En début de procédure,
On error resume next
Immédiatement après la ligne de code suscitant une erreur possible :
'--------------------
If err <>0 then
err.clear
Else
i = i + 1
End if
'--------------------
Ou l'inverse selon ce que tu tentes d'évaluer.
"Stan37" <Stan37@discussions.microsoft.com> a écrit dans le message de groupe de
discussion : 592C9DE2-C987-471E-AA43-D611BAEF1491@microsoft.com...
Merci pour cette solution qui permet de ne plus sortir en erreur, mais cela
ne résoud pas complétement mon problème car le "Resume Next" fait qu'on
continue à exécuter le code comme si le if Compare(....) avait rendu un
"TRUE".
"tot" est incrémenté et le résultat final n'est pas bon, il faudrait que
lorsqu'il y a une erreur on passe à l'item suivant de la boucle Do.
"michdenis" wrote:
> Bonjour,
>
> Essaie comme ceci :
>
> '-------------------------------------
> Sub test()
> Dim i as Integer ' Ou Long
> Dim NextErreur As String
> On Error GoTo NextErreur
>
> Ton code
>
> Exit Sub
>
> NextErreur:
> Err.Clear
> i = i + 1
> Resume Next
> End Sub
> '-------------------------------------
>
>
>
> "Stan37" <Stan37@discussions.microsoft.com> a écrit dans le message de groupe de
> discussion : B2764F32-F0EE-4678-84C3-629F54036C03@microsoft.com...
> Bonjour,
>
> Dans la portion de code suivante, qui parcourt une feuille, le "On Error
> GoTo nexterr:" fonctionne correctement lors du premier cas d'erreur, mais pas
> au second ou il y a une sortie "brutale" et la fonction rend "#VALEUR!", je
> ne vois pas bien pourquoi.
>
> Le problème persiste même si je réinitialise le gestionnaire d'erreur
> (err.clear).
>
> L'erreur intervient lorsque Worksheets(onglet).Cells(i, col3) fait référence
> à une cellule dans laquelle une fonction Excel renvoie un cas d'erreur.
> Merci par avance pour toute aide.
> Claude Barbier
>
> On Error GoTo nexterr
> i = 2
> tot = 0
> Do While i < 60000
> ' On sort dés que col 1 vide
> If Worksheets(onglet).Cells(i, 1) = "" Then
> Exit Do
> Else
> If Compare(val1, Worksheets(onglet).Cells(i, col1)) = True Then
> If Compare(val2, Worksheets(onglet).Cells(i, col2)) = True
> Then
> If Compare(val3, Worksheets(onglet).Cells(i, col3)) > > True Then
> tot = tot + 1
> End If
> End If
> End If
> End If
> nexterr:
> i = i + 1
> Loop
>
Pour répondre adéquatement à ta question, il faudrait savoir
qu'elle est la ligne de code susceptible de générer une erreur
et qu'elle est le résultat que tu désires obtenir ?
Une autre suggestion irait comme suit :
En début de procédure,
On error resume next
Immédiatement après la ligne de code suscitant une erreur possible :
'--------------------
If err <>0 then
err.clear
Else
i = i + 1
End if
'--------------------
Ou l'inverse selon ce que tu tentes d'évaluer.
"Stan37" a écrit dans le message de groupe de
discussion :
Merci pour cette solution qui permet de ne plus sortir en erreur, mais cela
ne résoud pas complétement mon problème car le "Resume Next" fait qu'on
continue à exécuter le code comme si le if Compare(....) avait rendu un
"TRUE".
"tot" est incrémenté et le résultat final n'est pas bon, il faudrait que
lorsqu'il y a une erreur on passe à l'item suivant de la boucle Do.
"michdenis" wrote:
> Bonjour,
>
> Essaie comme ceci :
>
> '-------------------------------------
> Sub test()
> Dim i as Integer ' Ou Long
> Dim NextErreur As String
> On Error GoTo NextErreur
>
> Ton code
>
> Exit Sub
>
> NextErreur:
> Err.Clear
> i = i + 1
> Resume Next
> End Sub
> '-------------------------------------
>
>
>
> "Stan37" a écrit dans le message de groupe de
> discussion :
> Bonjour,
>
> Dans la portion de code suivante, qui parcourt une feuille, le "On Error
> GoTo nexterr:" fonctionne correctement lors du premier cas d'erreur, mais pas
> au second ou il y a une sortie "brutale" et la fonction rend "#VALEUR!", je
> ne vois pas bien pourquoi.
>
> Le problème persiste même si je réinitialise le gestionnaire d'erreur
> (err.clear).
>
> L'erreur intervient lorsque Worksheets(onglet).Cells(i, col3) fait référence
> à une cellule dans laquelle une fonction Excel renvoie un cas d'erreur.
> Merci par avance pour toute aide.
> Claude Barbier
>
> On Error GoTo nexterr
> i = 2
> tot = 0
> Do While i < 60000
> ' On sort dés que col 1 vide
> If Worksheets(onglet).Cells(i, 1) = "" Then
> Exit Do
> Else
> If Compare(val1, Worksheets(onglet).Cells(i, col1)) = True Then
> If Compare(val2, Worksheets(onglet).Cells(i, col2)) = True
> Then
> If Compare(val3, Worksheets(onglet).Cells(i, col3)) > > True Then
> tot = tot + 1
> End If
> End If
> End If
> End If
> nexterr:
> i = i + 1
> Loop
>
Il y a un problème avec ta procédure ...
Si une erreur est générée, Err.Number <>0
si Err.Number n'est pas remis à zéro, même si la ligne
de code est Ok, Err.Number sera toujours <> 0
"Stan37" a écrit dans le message de groupe de
discussion :
Merci pour ton aide, ta réponse m'a mis sur la voie de la solution, j'ai
compacté mes "if" en une seule ligne et maintenant je n'incrémente que si err
est différent de 0.
On Error Resume Next
i = 2
tot = 0
Do While i < 60000
' On sort dés que Id courant vide
If Worksheets(onglet).Cells(i, 1) = "" Then
Exit Do
ElseIf Compare(val1, Worksheets(onglet).Cells(i, col1)) = True And _
Compare(val2, Worksheets(onglet).Cells(i, col2)) = True And _
Compare(val3, Worksheets(onglet).Cells(i, col3)) = True And _
Compare(val4, Worksheets(onglet).Cells(i, col4)) = True And _
Compare(val5, Worksheets(onglet).Cells(i, col5)) = True Then
If Err = 0 Then tot = tot + 1
End If
i = i + 1
Loop
"michdenis" wrote:
> Pour répondre adéquatement à ta question, il faudrait savoir
> qu'elle est la ligne de code susceptible de générer une erreur
> et qu'elle est le résultat que tu désires obtenir ?
>
> Une autre suggestion irait comme suit :
>
> En début de procédure,
>
> On error resume next
>
> Immédiatement après la ligne de code suscitant une erreur possible :
> '--------------------
> If err <>0 then
> err.clear
> Else
> i = i + 1
> End if
> '--------------------
> Ou l'inverse selon ce que tu tentes d'évaluer.
>
>
>
>
> "Stan37" a écrit dans le message de groupe de
> discussion :
> Merci pour cette solution qui permet de ne plus sortir en erreur, mais cela
> ne résoud pas complétement mon problème car le "Resume Next" fait qu'on
> continue à exécuter le code comme si le if Compare(....) avait rendu un
> "TRUE".
> "tot" est incrémenté et le résultat final n'est pas bon, il faudrait que
> lorsqu'il y a une erreur on passe à l'item suivant de la boucle Do.
>
> "michdenis" wrote:
>
> > Bonjour,
> >
> > Essaie comme ceci :
> >
> > '-------------------------------------
> > Sub test()
> > Dim i as Integer ' Ou Long
> > Dim NextErreur As String
> > On Error GoTo NextErreur
> >
> > Ton code
> >
> > Exit Sub
> >
> > NextErreur:
> > Err.Clear
> > i = i + 1
> > Resume Next
> > End Sub
> > '-------------------------------------
> >
> >
> >
> > "Stan37" a écrit dans le message de groupe de
> > discussion :
> > Bonjour,
> >
> > Dans la portion de code suivante, qui parcourt une feuille, le "On Error
> > GoTo nexterr:" fonctionne correctement lors du premier cas d'erreur, mais pas
> > au second ou il y a une sortie "brutale" et la fonction rend "#VALEUR!", je
> > ne vois pas bien pourquoi.
> >
> > Le problème persiste même si je réinitialise le gestionnaire d'erreur
> > (err.clear).
> >
> > L'erreur intervient lorsque Worksheets(onglet).Cells(i, col3) fait référence
> > à une cellule dans laquelle une fonction Excel renvoie un cas d'erreur.
> > Merci par avance pour toute aide.
> > Claude Barbier
> >
> > On Error GoTo nexterr
> > i = 2
> > tot = 0
> > Do While i < 60000
> > ' On sort dés que col 1 vide
> > If Worksheets(onglet).Cells(i, 1) = "" Then
> > Exit Do
> > Else
> > If Compare(val1, Worksheets(onglet).Cells(i, col1)) = True Then
> > If Compare(val2, Worksheets(onglet).Cells(i, col2)) = True
> > Then
> > If Compare(val3, Worksheets(onglet).Cells(i, col3)) > > > True Then
> > tot = tot + 1
> > End If
> > End If
> > End If
> > End If
> > nexterr:
> > i = i + 1
> > Loop
> >
Il y a un problème avec ta procédure ...
Si une erreur est générée, Err.Number <>0
si Err.Number n'est pas remis à zéro, même si la ligne
de code est Ok, Err.Number sera toujours <> 0
"Stan37" <Stan37@discussions.microsoft.com> a écrit dans le message de groupe de
discussion : 3573A4AB-5C8B-466F-9135-FE603D99CB77@microsoft.com...
Merci pour ton aide, ta réponse m'a mis sur la voie de la solution, j'ai
compacté mes "if" en une seule ligne et maintenant je n'incrémente que si err
est différent de 0.
On Error Resume Next
i = 2
tot = 0
Do While i < 60000
' On sort dés que Id courant vide
If Worksheets(onglet).Cells(i, 1) = "" Then
Exit Do
ElseIf Compare(val1, Worksheets(onglet).Cells(i, col1)) = True And _
Compare(val2, Worksheets(onglet).Cells(i, col2)) = True And _
Compare(val3, Worksheets(onglet).Cells(i, col3)) = True And _
Compare(val4, Worksheets(onglet).Cells(i, col4)) = True And _
Compare(val5, Worksheets(onglet).Cells(i, col5)) = True Then
If Err = 0 Then tot = tot + 1
End If
i = i + 1
Loop
"michdenis" wrote:
> Pour répondre adéquatement à ta question, il faudrait savoir
> qu'elle est la ligne de code susceptible de générer une erreur
> et qu'elle est le résultat que tu désires obtenir ?
>
> Une autre suggestion irait comme suit :
>
> En début de procédure,
>
> On error resume next
>
> Immédiatement après la ligne de code suscitant une erreur possible :
> '--------------------
> If err <>0 then
> err.clear
> Else
> i = i + 1
> End if
> '--------------------
> Ou l'inverse selon ce que tu tentes d'évaluer.
>
>
>
>
> "Stan37" <Stan37@discussions.microsoft.com> a écrit dans le message de groupe de
> discussion : 592C9DE2-C987-471E-AA43-D611BAEF1491@microsoft.com...
> Merci pour cette solution qui permet de ne plus sortir en erreur, mais cela
> ne résoud pas complétement mon problème car le "Resume Next" fait qu'on
> continue à exécuter le code comme si le if Compare(....) avait rendu un
> "TRUE".
> "tot" est incrémenté et le résultat final n'est pas bon, il faudrait que
> lorsqu'il y a une erreur on passe à l'item suivant de la boucle Do.
>
> "michdenis" wrote:
>
> > Bonjour,
> >
> > Essaie comme ceci :
> >
> > '-------------------------------------
> > Sub test()
> > Dim i as Integer ' Ou Long
> > Dim NextErreur As String
> > On Error GoTo NextErreur
> >
> > Ton code
> >
> > Exit Sub
> >
> > NextErreur:
> > Err.Clear
> > i = i + 1
> > Resume Next
> > End Sub
> > '-------------------------------------
> >
> >
> >
> > "Stan37" <Stan37@discussions.microsoft.com> a écrit dans le message de groupe de
> > discussion : B2764F32-F0EE-4678-84C3-629F54036C03@microsoft.com...
> > Bonjour,
> >
> > Dans la portion de code suivante, qui parcourt une feuille, le "On Error
> > GoTo nexterr:" fonctionne correctement lors du premier cas d'erreur, mais pas
> > au second ou il y a une sortie "brutale" et la fonction rend "#VALEUR!", je
> > ne vois pas bien pourquoi.
> >
> > Le problème persiste même si je réinitialise le gestionnaire d'erreur
> > (err.clear).
> >
> > L'erreur intervient lorsque Worksheets(onglet).Cells(i, col3) fait référence
> > à une cellule dans laquelle une fonction Excel renvoie un cas d'erreur.
> > Merci par avance pour toute aide.
> > Claude Barbier
> >
> > On Error GoTo nexterr
> > i = 2
> > tot = 0
> > Do While i < 60000
> > ' On sort dés que col 1 vide
> > If Worksheets(onglet).Cells(i, 1) = "" Then
> > Exit Do
> > Else
> > If Compare(val1, Worksheets(onglet).Cells(i, col1)) = True Then
> > If Compare(val2, Worksheets(onglet).Cells(i, col2)) = True
> > Then
> > If Compare(val3, Worksheets(onglet).Cells(i, col3)) > > > True Then
> > tot = tot + 1
> > End If
> > End If
> > End If
> > End If
> > nexterr:
> > i = i + 1
> > Loop
> >
Il y a un problème avec ta procédure ...
Si une erreur est générée, Err.Number <>0
si Err.Number n'est pas remis à zéro, même si la ligne
de code est Ok, Err.Number sera toujours <> 0
"Stan37" a écrit dans le message de groupe de
discussion :
Merci pour ton aide, ta réponse m'a mis sur la voie de la solution, j'ai
compacté mes "if" en une seule ligne et maintenant je n'incrémente que si err
est différent de 0.
On Error Resume Next
i = 2
tot = 0
Do While i < 60000
' On sort dés que Id courant vide
If Worksheets(onglet).Cells(i, 1) = "" Then
Exit Do
ElseIf Compare(val1, Worksheets(onglet).Cells(i, col1)) = True And _
Compare(val2, Worksheets(onglet).Cells(i, col2)) = True And _
Compare(val3, Worksheets(onglet).Cells(i, col3)) = True And _
Compare(val4, Worksheets(onglet).Cells(i, col4)) = True And _
Compare(val5, Worksheets(onglet).Cells(i, col5)) = True Then
If Err = 0 Then tot = tot + 1
End If
i = i + 1
Loop
"michdenis" wrote:
> Pour répondre adéquatement à ta question, il faudrait savoir
> qu'elle est la ligne de code susceptible de générer une erreur
> et qu'elle est le résultat que tu désires obtenir ?
>
> Une autre suggestion irait comme suit :
>
> En début de procédure,
>
> On error resume next
>
> Immédiatement après la ligne de code suscitant une erreur possible :
> '--------------------
> If err <>0 then
> err.clear
> Else
> i = i + 1
> End if
> '--------------------
> Ou l'inverse selon ce que tu tentes d'évaluer.
>
>
>
>
> "Stan37" a écrit dans le message de groupe de
> discussion :
> Merci pour cette solution qui permet de ne plus sortir en erreur, mais cela
> ne résoud pas complétement mon problème car le "Resume Next" fait qu'on
> continue à exécuter le code comme si le if Compare(....) avait rendu un
> "TRUE".
> "tot" est incrémenté et le résultat final n'est pas bon, il faudrait que
> lorsqu'il y a une erreur on passe à l'item suivant de la boucle Do.
>
> "michdenis" wrote:
>
> > Bonjour,
> >
> > Essaie comme ceci :
> >
> > '-------------------------------------
> > Sub test()
> > Dim i as Integer ' Ou Long
> > Dim NextErreur As String
> > On Error GoTo NextErreur
> >
> > Ton code
> >
> > Exit Sub
> >
> > NextErreur:
> > Err.Clear
> > i = i + 1
> > Resume Next
> > End Sub
> > '-------------------------------------
> >
> >
> >
> > "Stan37" a écrit dans le message de groupe de
> > discussion :
> > Bonjour,
> >
> > Dans la portion de code suivante, qui parcourt une feuille, le "On Error
> > GoTo nexterr:" fonctionne correctement lors du premier cas d'erreur, mais pas
> > au second ou il y a une sortie "brutale" et la fonction rend "#VALEUR!", je
> > ne vois pas bien pourquoi.
> >
> > Le problème persiste même si je réinitialise le gestionnaire d'erreur
> > (err.clear).
> >
> > L'erreur intervient lorsque Worksheets(onglet).Cells(i, col3) fait référence
> > à une cellule dans laquelle une fonction Excel renvoie un cas d'erreur.
> > Merci par avance pour toute aide.
> > Claude Barbier
> >
> > On Error GoTo nexterr
> > i = 2
> > tot = 0
> > Do While i < 60000
> > ' On sort dés que col 1 vide
> > If Worksheets(onglet).Cells(i, 1) = "" Then
> > Exit Do
> > Else
> > If Compare(val1, Worksheets(onglet).Cells(i, col1)) = True Then
> > If Compare(val2, Worksheets(onglet).Cells(i, col2)) = True
> > Then
> > If Compare(val3, Worksheets(onglet).Cells(i, col3)) > > > True Then
> > tot = tot + 1
> > End If
> > End If
> > End If
> > End If
> > nexterr:
> > i = i + 1
> > Loop
> >