Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : On Error Go dans une boucle [ Divers / General ] (gregcitt)

vendredi 17 novembre 2006 à 16:27:58 | On Error Go dans une boucle

gregcitt

Hello boyz



Mon instruction "On error Go To", prévue pour l'erreur d'une " selection.Find(what:=.......)
ne marche qu'une fois.

Elle est à l'intérieur d'une boucle For NExt. 
Le On Error est placé juste avant la recherche, et ça ne marche que pour la première erreur rencontrée, dès que la bouvle a fait un tour, le Goto ne marche plus.
 
ca vous dis qqch?


vendredi 17 novembre 2006 à 16:40:37 | Re : On Error Go dans une boucle

casy

Membre Club

Une fois la première erreur rencontrée, l'execution du code est passée au gestionnaire d'erreur et celui-ci est désactivé jusqu'a la fin de la gestion de l'erreur (généralement automatique à la sortie de la procédure). Pendant ce temps là, les erreurs ne sont plus gérées

Si après une première erreur, tu continue l'execution de ton code normal, cette execution sera considérée comme étant le traitement de l'erreur.

Donc après avoir traiter l'erreur, pour pouvoir continuer à executer le code normalement sans sortir de la procédure, il faut passer à terminer la gestion d'erreur, pour relancer le gestionnaire.
--> Err.Clear

---- Sevyc64  (alias Casy) ----
# LE PARTAGE EST NOTRE FORCE #

vendredi 17 novembre 2006 à 16:41:14 | Re : On Error Go dans une boucle

kazer04

ta mis "exit sub" avant la gestion de ton exeption? on error MY_EXCEPTION instruction exit sub MY_EXCEPTION : traitement de l'exeption end sub montre nous ton code pour plus de precision

vendredi 17 novembre 2006 à 17:40:00 | Re : On Error Go dans une boucle

gregcitt



L'instruction "Err.Clear" est à mon avis ce qui réponds à ma question. Merci bien
Mais je n'arrive pas pas à la faire marcher :
J'ai essayer de placer le err.clear au début de la boucle, a la fin, juste après l'instruction de Goto (ici c'etait Goto copie, donc juste après le Goto...)

Et voila le code pour kazer

 For i = 2 To NbLIgnes
  Err.Clear
 If Cells(i, 3) Like "*Somme*" Then
 Cells(i + 1, 2).Select
   
    isin = ActiveCell
    Windows("POS T0.xls").Activate
    Range("B:B").Select
    [B2].Activate
   
    On Error GoTo copie
    ligneisin = Selection.Find(what:=isin, after:=ActiveCell).Row()
    Rows(ligneisin).Copy
copie:
  
    Windows("MVT 1.xls").Activate
   
    Rows(i + 1).Select
    Selection.Insert shift:=xlDown
     Selection.End(xlToLeft).Select

(err.clear)

end if
next i

vendredi 17 novembre 2006 à 18:00:38 | Re : On Error Go dans une boucle

jmfmarques

Membre Club

le Err clear ne sert ici rigoureusement à rien puisque, dans ta boucle For to tu repasses par un On Error (lequel, conformément à VB, réinitialise automatiquement err à 0

Voilà ce qu'explique VB :

"The Err object's properties are reset to zero or zero-length strings ("") after any form of the Resume or On Error statement and after an Exit Sub, Exit Function, or Exit Property statement within an error-handling routine. The Clear method can be used to explicitly reset Err".

Explique nous avec des mots simples ce que tu cherches exactement à faire (commente ton code tel que tu l'as écrit) et nous verrons ensemble quelle est la meilleure façon de s'y prendre.



vendredi 17 novembre 2006 à 19:34:31 | Re : On Error Go dans une boucle

mortalino

Membre Club


Salut,

il faut gérer avec le numéro de l'erreur.


    On Error Resume Next

For i = To NbLIgnes
    If Cells(i, 3Like "*Somme*" Then
        Cells(i + 12).Select
        isin = ActiveCell

        Windows("POS T0.xls").Activate

        Range("B:B").Select
        [B2].Activate
    
        If Not Err.Number = XXXXThen
'       remplace XXXX par le bon numéro d'erreur
            ligneisin = Selection.Find(what:=isin, after:=ActiveCell).Row()
            Rows(ligneisin).Copy
        End If

        Windows("MVT 1.xls").Activate
    
        Rows(i + 1).Select
        Selection.Insert shift:=xlDown
        Selection.End(xlToLeft).Select
    End If
Next i

On Error GoTo 0
~Mortalino~


@++


  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>

vendredi 17 novembre 2006 à 22:13:05 | Re : On Error Go dans une boucle

Dolphin Boy

Membre Club
Heu ... Au risque de passer pour un empêcheur de tourner en rond, oserais-je dire que l'utilisation d'un "On error goto" en vba, vb6 (ou antérieur) ou d'un "Try ... Catch" en vb.2005 n'est qu'un pis-aller ? Et un inutile bouffeur de resources ?
Oserais-je affirmer que dans 99% des cas, il suffit d'être rigoureux dans le choix des variables, le contrôle des saisies, ... en fait dans la maîtrise de son propre prog ? Peut-être même que le 1% qui reste peut être maîtrisé aussi d'ailleurs.
Personnellement, dans mes progs, je contrôle toutes les entrées et sorties et n'ai jamais eu à utiliser les "on error" en vba ou vb6 ni les "try ... catch" en vb.2005 (sauf en phase de test par fainéantise).

A force de laisser la machine gérer les erreurs, on va finir par remplacer les programmeurs par des machines.

vendredi 17 novembre 2006 à 22:27:41 | Re : On Error Go dans une boucle

jmfmarques

Membre Club
Et pourtant , cher Dolphin Boy, et pourtant !...
Le vieux développeur que je suis te dira que c'est quelquefois justifié, voire incontournable...
Un exemple ?
OK :
Décider de l'utilisation de la première police de caractères disponible sur un PC client parmi une liste de polices possibles, et dans un ordre préférentiel déterminé, sans faire une multitude de tests inutiles d'existence !
et j'en passe, et des meilleures

vendredi 17 novembre 2006 à 22:31:26 | Re : On Error Go dans une boucle

leSaleGauSS

Dolphin Boy => Tu as surement raison mais la plupart des personnes qui débutent en vb utilisent ce genre de fonction pour connaitre les erreurs qu'il peuvent faire ou, comme tu le dis toi même, "en phase de test par fainéantise" . (sans rancune j'espere)
sinon err.description peut aussi faciliter la compréhension de l'erreur 


Quand je suis là tout va mal  


vendredi 17 novembre 2006 à 22:43:55 | Re : On Error Go dans une boucle

casy

Membre Club

Je suis entièrement d'accord avec toi Dolphin, pour VB6, moins pour VB.NET.
Le try catch n'a absolument rien à voir avec le on error, c'est même pas comparable.

Cependant, et je suis le premier à ne pas le faire, toutes les routines devraient avoir un gestionnaire d'erreur, car même le code le plus abouti n'est pas à l'abris du bug imprévu. Aucun code ne pourra jamais etre zéro bug, c'est impossible.Et sans gestion de l'erreur, c'est la fermeture brutale de l'appli.
Et lorsque derrière tu as une machine, ça peut etre synonime de casse ou pire de mise en danger de personne.

D'accord avec jmfmarques aussi, parfois c'est incontournable.

---- Sevyc64  (alias Casy) ----
# LE PARTAGE EST NOTRE FORCE #


1 2 3

Cette discussion est classé dans : boucle, erreur, marche, error, go


Répondre à ce message

Sujets en rapport avec ce message

Impossible de suprimer un repertoire!!! Au secours!!! [ par jeromax ] Salut,J'ai un gros probleme incroyableJe veux suprimer un répertoire et ça ne marche pas!Plus exactement ça ne marche pas lorsque j'enchaine la créati Erreur creation EXE [ par noe ] Bonjour à touslors de la création en VB6 de "exe" voila le message qui apparait fatal error C1001: INTERNAL COMPILER ERROR (compiler file 'e:\work\ut Afficher des mesures. [ par lamarine ] Bonjour à tous,J'écris un programme qui accède à un convertisseur A/N à travers com1 et ça marche... Cependant, je n'arrive pas à afficher en boucle l erreur lorsque un fichier n'est pas trové [ par lucky2222 ] le probleme, c'est quand je demande au prog de chercher un fichier, et qu'il le trouve, pas de probleme!si il ne le trouve pas, comme je lui ai mis:on J'ai un autre pb et je veut toujours mourrir [ par cricri2001 ] Erreur 429 le composant activex ne peut créer l'objet. Si quelqu'un sait comment supprimer ce message d'erreur et que tout marche.Mon programme est fi Sauriez-vous trouvez l'erreur glissé dans ce code ?! [ par turlut ] Tout est dans le titre ;) Ceci est un défi ! Sauriez vous retrouver l'erreur qui c'est glissé malencontreusement dans ce code :)If Val(go_ip1) => Val( AIDEZ MOI SVP !!! Erreur a l'ouverture d'un fichier Excel [ par nicboi ] En fait j'ai un boucle ou dedan j'ouvre un fichier WordEnsuite ds le fichier je remplace des info du style > > par celle qui n'interesse, puis j'impri Sortir d'une fonction a partir d'une autre [ par pioug43 ] J'aimerais pouvoir sortir d'une boucle infini en envoyant soit un mess d'erreur soit toute autre solution qui me permettrai de quitter la boucle a par Pb avec une boucle [ par mojira ] bonjours à tous,Si qq pouvais me dire si il y a une erreur dans ce bout de codeFor i = 1 To MaxSockets Load Sock(i) Next icar au moment de lance On error goto lablel [ par TRAX44 ] Salut,j'ai un petit problème avec On Error goto labelsi Il ya deux erreur dans le même module ou function la seconden'est pas gérer ce qui créer un er


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,312 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.