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 :

Gestion des erreurs [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Août 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 9
    Par défaut Gestion des erreurs
    Bonjour

    J’ai 1400 fichiers dans un dossier contenant tous des données de même nature et sous la même frome. Afin d’extraire certaine données, je me suis fait une marco qui m’extrait les données recherchées à partir d’un listing des noms de fichier. Toutefois, si dans mon listing un no de contact dont le fichier n’a pas encore été crée apparait, la macro me signale une erreur.

    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
    Sub ImportDesCdc() 
     
    ' ImportDesCdc Macro 
     
        Dim Dateiname As String 
        Dim i As Integer 
     
    For i = 0 To 50 
     
    ' Définir le nom du ficher à importer 
        Dateiname = ActiveCell.Offset(i, 0) 
     
    ' Ouvrir fichier dans le directorie indiqué 
        ChDir "G:\Mes Documents\Analyses\Analyse Regulo STD\Courbes de charge" 
        Workbooks.Open Filename:=Dateiname & ".csv", Local:=True 
     
    ' Copier les valeurs de la courbe de charge 
        Range("A1:B1").Select 
        Range(Selection, Selection.End(xlDown)).Select 
        Application.CutCopyMode = False 
        Selection.Copy 
     
    ' Coller les valuers dans l'outil courbe de chage. L'outil doit être ouvert! 
        Workbooks("Outil courbe de charge V STD - MR 090731.xls").Activate 
        Range("A4").Select 
        ActiveSheet.Paste 
     
    ' fermer fichier de courbe de charge 
        Application.CutCopyMode = False 
        Workbooks(Dateiname & ".csv").Close 
     
    ' copier-coller resultats HP 
        Range("E12:P12").Copy 
        Workbooks("090727 Modèle provisoire V1.0.xls").Activate 
        ActiveCell.Offset(i, 28).Select 
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    Etc…

    Je ne vais pas tout vous mettre. Elle est assez longue et finalement le passage intéressant et au début. Donc, lorsque le fichier n’existe pas, ca bug. J’ai essayé : On error resume next
    mais la macro repart du début du document et non pas à la cellule suivante i. Comment faire pour qu’elle passe au nom de fichier suivant dans la liste et ainsi de suite à chaque fois qu’une erreur ce présente ?

    D’avance merci pour votre soutien

    Stéph

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    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
    12
    13
    14
    For i = 0 To 50 
    
    ' Définir le nom du ficher à importer 
    Dateiname = ActiveCell.Offset(i, 0) 
    
    ' Ouvrir fichier dans le directorie indiqué 
    ChDir "G:\Mes Documents\Analyses\Analyse Regulo STD\Courbes de charge" 
    On Error Goto Continue
    Workbooks.Open Filename:=Dateiname & ".csv", Local:=True 
    ....
    ....
    ETC..
    Continue:
    Next i
    A+

  3. #3
    Membre habitué
    Inscrit en
    Août 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 9
    Par défaut Gestion des erreurs
    Merci!

    J'ai testé et je crois que c'est la bonne voie. À la première erreur ca fonctionne. Pas de message d’erreur, on passe à la ligne suivante du répertoire, la macro déroule sur 50 lignes, c’est parfait. Toutefois, si une seconde erreur se produit alors la macro s’arrête et je reçois un message d'erreur d'exécution.

  4. #4
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Bonjour j'ai eu ce problème il y a peu, en fait la gestion d'erreur ce fait une première fois mais pas la deuxième la solution que j'avas trouvé n'est pas la plus élégante mais elle ressemblais a ceci (je dit ressemblais car je n'ai pas le code sous la main ni excel pour tester)

    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
     
    On Error resume next
    For i = 0 To 50 
    err.clear
    ' Définir le nom du ficher à importer 
    Dateiname = ActiveCell.Offset(i, 0) 
     
    ' Ouvrir fichier dans le directorie indiqué 
    ChDir "G:\Mes Documents\Analyses\Analyse Regulo STD\Courbes de charge" 
     
    Workbooks.Open Filename:=Dateiname & ".csv", Local:=True 
    if err.number<>0 then
    ....
    ETC..
    end if
    Next i

  5. #5
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    J'aurais du y penser.. (qu'il y aurrait plusieur erreurs)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ETC..
    Continue1:
    Next i
    ... 'les autres lignes de code....
    ...
    Exit sub
    Continue:
        Err.Clear
        Resume Continue1
    End Sub
    Modifie comme ci-dessus
    A+
    EDIT : bonjour Krovax,
    Pour info...
    La syntaxe que je met est la bonne, évite que le pointeur de pile ne se mélange les pinceaux, il faut chaque fois remettre "dans le droit chemin"
    A+

  6. #6
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Je savais qu'il y aurais une solution un peu plus élégante
    Je rajouterais juste un après le next i

  7. #7
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Citation Envoyé par Krovax Voir le message
    Je savais qu'il y aurais une solution un peu plus élégante
    Je rajouterais juste un après le next i
    Ce n'est pas nécessaire la procédure renseignée remet automatiquement la détection d'erreur "a blanc" si je peu dire en françsais .
    EDIT : Autant pour moi, si, il sert pour une détection d'erreur dans la suite du code.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [FB] Gestion des erreurs et application francophone
    Par Benjamin GAGNEUX dans le forum Installation
    Réponses: 10
    Dernier message: 20/05/2006, 14h54
  2. [struts][Datasource]Gestion des erreurs
    Par GreenJay dans le forum Struts 1
    Réponses: 8
    Dernier message: 15/09/2004, 16h51
  3. [VB6] Gestion des erreurs dans une dll
    Par zimba-tm dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 02/08/2004, 11h20
  4. [XSLT]Est ce qu'il y'a la gestion des erreur en xslt ?
    Par miloud dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 04/02/2004, 17h19
  5. [LG]gestion des erreurs
    Par frontin dans le forum Langage
    Réponses: 3
    Dernier message: 29/11/2003, 22h41

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