Erreur avec "On Error GoTo" dans une boucle

57.scheider

XLDnaute Junior
Hello!

Dans ce code je fais une recherche de reference et si il ne trouve pas je cherche le suivant avec le code "on error" par contre à la 2 eme recherche j'ai un message d'erreur... faut il que je rajoute un "Resume Next" ?

Merci


Code:
Sub RemplirRefSiprtec()


'pour excuter sur chaque feuille
'    For i = 1 To Sheets.Count
'        Sheets(i).Name = Sheets(i).Activate
'    Next i



If Range("A1").Value = "Nom Armoire" Then
    LastFeuil = ActiveSheet.Name
End If

Appareilsuiv:
Err.Clear
For i = 1 To 9
    Select Case i
    Case 1
        devicename = "6MD61"
    Case 2
        devicename = "6MD66"
    Case 3
        devicename = "7SA522"
    Case 4
        devicename = "7SD522"
    Case 5
        devicename = "7SJ61"
    Case 6
        devicename = "7SJ640"
    Case 7
        devicename = "7SJ64"
    Case 8
        devicename = "7UM62"
    Case 9
        devicename = "7UT613"
    End Select
'    If i = 1 Then devicename = "6MD61"
'    If i = 2 Then devicename = "6MD66"
'    If i = 3 Then devicename = "7SA522"
'    If i = 4 Then devicename = "7SD522"
'    If i = 5 Then devicename = "7SJ61"
'    If i = 6 Then devicename = "7SJ640"
'    If i = 7 Then devicename = "7SJ64"
'    If i = 8 Then devicename = "7UM62"
'    If i = 9 Then devicename = "7UT613"
'    End If
'erreur IF

Verifmemeapp:

    Columns("B:B").Select
    
    
'Si le fichier n'est pas trouvé on passe au prochain
        If NombreFois = 4 Then GoTo IncrPrAppareilSuiv
        On Error GoTo IncrPrAppareilSuiv
        Selection.Find(What:=devicename, After:=ActiveCell, LookIn:=xlValues, _
                      LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
                      MatchCase:=False, SearchFormat:=False).Activate
                      
        If NombreFois > 0 Then
        For j = 1 To NombreFois
        Selection.FindNext(After:=ActiveCell).Activate
        Next j
        End If


        Dim Adresse As Range
        Set Adresse = ActiveCell

        Sheets("Identification_Globale").Activate
        Columns("A:A").Select
        Selection.Find(What:=devicename, After:=ActiveCell, LookIn:=xlValues, _
                      LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
                      MatchCase:=False, SearchFormat:=False).Activate
        Dim Adresseglob As Range
        Set Adresseglob = ActiveCell

        Sheets(LastFeuil).Activate
        Adresse.Offset(2, 0).Value = Adresseglob.Offset(0, 2).Value
        Adresse.Offset(6, 0).Value = Adresseglob.Offset(1, 2).Value
        Adresse.Offset(7, 0).Value = Adresseglob.Offset(2, 2).Value
        Adresse.Offset(8, 0).Value = Adresseglob.Offset(3, 2).Value


        NombreFois = NombreFois + 1
        
        GoTo Verifmemeapp




IncrPrAppareilSuiv:

Err.Clear
NombreFois = 0
Next i

GoTo Appareilsuiv





End Sub
 

pierrejean

XLDnaute Barbatruc
Re : Erreur avec "On Error GoTo" dans une boucle

Bonjour

Pour ma part je deconseille vivement la gestion d'erreur pour resoudre ce genre de probleme
Il s'agit a 1ere vue de palier un resultat negatif de FInd
dans ce cas le not is nothing est preferable
Si tu peux poster ton fichier avec quelques données non confidentielle on sera plus a l'aise pour te conseiller efficacement
 

57.scheider

XLDnaute Junior
Re : Erreur avec "On Error GoTo" dans une boucle

La macro marche de cette facon:
Dans l'onglet activé la macro va rechercher les references de l'appareil dans l'onglet principale. Elle fait la recherche pour plusieurs appareils et elle exexute 4 fois la recherche du materriel avec "findnext" pour etre sur qu'il n'y pas plusieurs fois la meme refereznce du materiel "6MD61" 4 fois puis ensuite "6MD66"

Le probleme et que lorsque 2 appareil n'exste pas dans l'onglet actif "le error goto..." ne marche pas la 2eme fois (car lorsque l'appareil n'est pas present j'ai une erreur)

- est t'il possible d'avoir une ligne qui initialise la base des données des erreurs?
 

PascalXLD

XLDnaute Barbatruc
Modérateur
Re : Erreur avec "On Error GoTo" dans une boucle

Bonjour

Je te conseille vivement de suivre le conseil de Pierrejean

Sinon pour info voici ce que dit l'aide sur on error

"Si aucun gestionnaire d'erreurs validé et inactif n'est trouvé, l'erreur est fatale à l'emplacement où elle s'est produite"

Ce qui veut dire que puisque à la première erreur tu as ton on error qui devient actif et que tu ne le désactives pas et bien ta deuxième erreur n'est pas gérée
 

PascalXLD

XLDnaute Barbatruc
Modérateur
Re : Erreur avec "On Error GoTo" dans une boucle

RE

sinon pour désactiver il faut utiliser
On Error GoTo 0

toujours l'aide
"L'instruction On Error GoTo 0 permet de désactiver la gestion d'erreur dans la routine en cours. Cette instruction ne déclare pas la ligne 0 comme étant le début du programme de gestion d'erreur, même si la procédure contient une ligne numéro 0. En l'absence d'instruction On Error GoTo 0, le gestionnaire d'erreurs est automatiquement désactivé lors de la sortie de procédure."
 

57.scheider

XLDnaute Junior
Re : Erreur avec "On Error GoTo" dans une boucle

Merci je vais essayer de faire autrement la prochaine fois

par contre j'ai rajouté ce code à la fin et cela ne m'a rien donné, ce code permet de désactiver le resume next, mais moi j'ai besoin de la fonction "on error goto XXX" car l'erreur et geré plusieurs pour chaque appareils...



Code:
IncrPrAppareilSuiv:

NombreFois = 0
On Error GoTo 0

Next i
'Resume Appareilsuiv
GoTo Appareilsuiv

je recois toujours le meme message d'erreur pour le 2eme appareil ...
Je devrais mettre quel code et à quel endroit pour que je ne reçoivent plus ce probleme ? il me faudrait un code qui supprime " la variable interne" (je suppose) qui renseigne qu'il y avait un "on error goto"... du genre: "Err.Clear" mais cela ne marche pas


merci
 
Dernière édition:
C

Compte Supprimé 979

Guest
Re : Erreur avec "On Error GoTo" dans une boucle

Bonjour 57.scheider,

Ne peux-tu pas nous mettre ton fichier sur le forum pour que l'on puisse éplucher le fonctionnement :confused:

Sinon il faut lancer ta macro en pas à pas
F8 pour avancer dans le code et tu vois ce qui ce passe

A+
 

Statistiques des forums

Discussions
312 393
Messages
2 087 959
Membres
103 686
dernier inscrit
maykrem