IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Probleme avec un On Error GoTo


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti Avatar de lulu_MAHC
    Homme Profil pro
    Stagiaire
    Inscrit en
    Février 2016
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Stagiaire
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2016
    Messages : 53
    Par défaut Probleme avec un On Error GoTo
    Salut Salut ...

    J'ai ecri une macro ( plutot longue mais la partie qui nous interesse ici l'est moins ) et j'ai redige une petite gestion d'erreurs. Malgre cela un probleme subsiste ...
    La macro effectue plusieurs operations sur un classeur excel, extrait des donnees et les envoi vers une Base de donnee. Sur un des fichiers une erreur survient lors de "l'extraction" d une donnee et du coup lors de l'envoi la donnee est bcp trop grosse pour le Field de la base de donnee. Bon , normal et tant mieux une erreur apparait ...

    Le soucis c'est que cette erreur est parfaitement geree lorsque je traite ce fichier tout seul alors que quand il est traite au milieu des centaines d autres fichiers , le On Error GoTo semble ne plus "agir" ... du coup le programme s'arrete...

    A savoir que c est bien la meme erreur qui apparait dans les deux cas
    A savoir aussi que le On Error Go To renvoi a quelques lignes qui permettent de recuperer le nom du fichier dans un autre classeur excel et d'ensuite arreter le traitement pour le fichier probleme et de passer au suivant ..

    L'erreur qui intervient est une erreur Run-Time .. je ne sais pas du tout si ca joue en quelque chose

    Si quelqu'un a la soluc ou peut m'indiquer ce que je fais mal ..

    Si besoin du code, dites le moi

    Merci d'avance

  2. #2
    Invité
    Invité(e)
    Par défaut
    D'une manière comme une autre nous sommes nombreux à préciser de ne pas utiliser le on error!

    La gestion des erreurs, est plus compliqué qu'il ne semble.
    Dans nombre d'applications, et c'est le cas de vba, le gestionnaire d'erreur estiment que trop d'erreurs est anormal et affiche le déguger malgré tout. Il faut clearer le erreur Err.clear!

    Ceci dit je supprimerai le on error et je chercherai la solution au problème!

  3. #3
    Membre averti Avatar de lulu_MAHC
    Homme Profil pro
    Stagiaire
    Inscrit en
    Février 2016
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Stagiaire
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2016
    Messages : 53
    Par défaut
    D'accord pour ne pas utilizer le On error .. mais du coup j'utilise quoi a la place ? car le probleme je sais a quoi il est du .. le fait est que l'erreur arrive de maniere innatendue sur un fichiers parmis X ...Et je ne peux pas le prevoir .. le truc c'est que je voudrais que quand cela arrive, pouvoir en quelques sortes isoler le fichier et passer au suivant sans que le programme ne s'arrete .. il y a une solution ?

    Concernant le Err.Clear il faut le faire en fin de boucle , en fin de Sub ou plusieurs fois par boucle ?

    Merci d'avance

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub test2()
    On Error GoTo Erreures
    Err.Raise 1664, "", "Vas donc boire une bière !"
    MsgBox "Salut"
    GoTo Fin
    Erreures:
    MsgBox "Err : " & Err.Number & " : " & Err.Description
    Err.Clear
    Resume Next
    Fin:
    End Sub
    pour le message d'erreur il faut voir et le code et le message!
    ne nous gave pas de code mais l’imite toi à la zone de code et ses variable et l'endroit out tu les renseigne!

  5. #5
    Membre averti Avatar de lulu_MAHC
    Homme Profil pro
    Stagiaire
    Inscrit en
    Février 2016
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Stagiaire
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2016
    Messages : 53
    Par défaut
    J'ai essaye avec le Err.clear malheureusement le probleme persiste ... mon on error GoTo fonctionne tres bien lorsque je traite 80 fichiers mais des que je depasses ce nombre c'est comme si il etait surcharge et alors il ne fonctionne plus ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    If UpdateOrEdit = False Then
     
         On Error GoTo Gestion
     
            With objR
     
     
     
                .AddNew
                .Fields("Project_Number") = A
                .Fields("Project_Type") = B
                .Fields("GoodWill") = CC
                .Fields("Warranty") = D
                .Fields("Customer_Name") = E
                .Fields("Project_Engineer") = F
                .Fields("Factory_Location") = G
                .Fields("Multi_Project_Order") = H
                .Fields("Associated_Project_No") = II
                .Fields("Drawings_Approved") = J
                .Fields("Approved_Preform_Dwg_No") = K
                .Fields("Approved_Thread_Dwg_No") = L
                .Fields("Prototyping_Complete") = M
                .Fields("Application_Review_Number") = N
                .Fields("Plastic_Preform_Repeat") = O
                .Fields("Repeat_Steel_Molding_Surface") = P
                .Fields("Quoted_Cycle_Time") = Q
                .Fields("Cycle_Time_Guarantee") = R
                .Fields("Aggresive_Cycle_Time") = S
                .Fields("Mold_Design_Label_txt") = TT
                .Fields("Mold_Cavitation") = U
                .Fields("Mold_Pitch") = V
                .Fields("repCavitation") = X
                .Fields("repVPitch") = y
                .Fields("repHPitch") = Z
                .Fields("Optical_part_Detection") = AA
                .Fields("Speed_UP_Package") = AB
                .Fields("EOAT_Required") = AC
                .Fields("EOAT_Specification") = AD
                .Fields("EOATSpecials") = AE
                .Fields("TightFitTubes") = AF
                .Fields("CoolPikPlate_Option") = AG
                .Fields("ValveStemType") = AI
                .Fields("CoolPikPlate_Special_Note") = AH
                .Fields("Recut_Program") = AJ
                .Fields("Recut_Options") = AK
                .Fields("StackType") = AL
                .Fields("TwoPieceCavities") = AM
                .Fields("NeckRingCoolingOptions") = AN
                .Fields("NeckRingCoating") = AO
                .Fields("Moldel") = AP
                .Fields("Machine_Project") = AQ
                .Fields("Clamp_Generation") = AR
                .Fields("Extruder") = ARR
                .Fields("ShootingPot") = AT
                .Fields("TargetCycleTime") = AU
                .Fields("TestDuration") = AV
                .Fields("ResinTest") = AX
                .Fields("ResinGrade") = AY
                .Fields("ResinGradetext") = AZ
                .Fields("ColorantDescription") = ZA
                .Fields("Estimated_Weight") = ZB
                .Fields("Last_Revision") = ZC
                .Fields("DateProject") = ZD
                .Fields("CoolJet") = ZE
                .Fields("PlasticJobNr") = ZF
                .Fields("PlasticMoldNr") = ZG
                .Fields("PlasticDrawingNr") = ZH
                .Fields("Creation") = Now()
                .Fields("LastModified") = Now()
                .Update
           End With
     
    Else
    End If
     
     I = I + 1
    SUITEONERROR:
    On Error Resume Next
     
            objR.Close
            objC.Close
               .
               .
               .
    classeur.Close False
     
    File_Name = Dir()
     Loop
     
    MsgBox ("Traitement effectue sur " & I & " fichiers ")
     
    Exit Sub
    Gestion:
    KO = KO + 1
    ErrorFile.Activate
    Cells(KO, 1) = File_Name
    ErrorFile.Save
    Err.Clear
     
    Resume SUITEONERROR
     
     
    End Sub
    L'erreur apparait au niveau du
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Fields("NeckRingCoolingOptions") = AN
    La donnee est plantee et est en fait bcp trop grosse pour le Field qui va la recevoir .. Du coup je voudrais juste recuperer le nom du fichier posant probleme et passer au suivant ... Mais ca ne marche pas tout le temps .. Et j'aimerais eviter dans la mesure du possible les msgbox car je ne veux pas interrrompre le programme ( le but final est de traiter des milliers de fichiers )

  6. #6
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    'là elle sera tronqué mais elle aura la bonne taille!
    .Fields("NeckRingCoolingOptions") = Trim(Left("" & AN & Space(.Fields("NeckRingCoolingOptions").Size), .Fields("NeckRingCoolingOptions").Size))
    En revanche si tu veux avoir la totalité du texte, dans Access utilise des camps mémos!

    Note qu'il n'est pas possible de faire du where mymemos='toto" mais que du like

    Where mymemos like '%toto%'
    Dernière modification par Invité ; 24/03/2016 à 09h52.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonjour lulu_MAHC et rdurupt,

    Dans le code de lulu_MAHC, je vois des objets .close sans voir Set XXXX = Nothing. N'y a-t-il pas une saturation de pile ?

    Pour chaque Set créé, y a t-il un Set qui le détruit ? (De préférence dans la même macro).

    Cordialement.

Discussions similaires

  1. probleme avec partition table error #110
    Par kroma23 dans le forum Ordinateurs
    Réponses: 1
    Dernier message: 17/03/2010, 08h43
  2. problem avec on error goto
    Par br@veknight dans le forum VBA Access
    Réponses: 1
    Dernier message: 10/07/2008, 08h36
  3. Réponses: 1
    Dernier message: 19/08/2006, 06h03
  4. pb avec "On error goto"
    Par malingue dans le forum Access
    Réponses: 9
    Dernier message: 20/06/2006, 19h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo