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 :

Aide pour gestion d'erreur de lecture de fichier


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 14
    Points : 11
    Points
    11
    Par défaut Aide pour gestion d'erreur de lecture de fichier
    Bonjour à tous

    Je suis débutant en programmation et je me sers des recherches dans le forum pour résoudre mes problèmes de code. Mais je ne sais pas comment résoudre celui-ci et je suis ouvert à toute proposition.

    Voilà j'ai écris ce code (grâce au forum notamment) qui me perment d'ouvrir des fichiers d'un répertoire, leur appliquer un traitement puis sauvegarder le fichier traité dans un repertoire de sauvegarde.
    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
     
    Sub ScoreFichier()
    '
    '*** Déclarations ***
    Dim Chemin, Fichier  As String
    Dim MessageCible, TitreMessageCible As String
    Dim RéponseMessageSuite, MessageSuite, TitreMessageSuite As String
    Dim CheminBdd, NomFichierBdd, Sauvegarde, ChampCopié As String
    Dim MessageSauvegarde, TitreMessageSauvegarde As String
    Dim Enregistrements As Long
    Dim Wb As Workbook
    '
    '*** Affections de valeurs ***
    '
    MessageCible = "Saisir le chemin du répertoire ou dossier à traiter"
    TitreMessageCible = "Adresse du répertoire cible"
    '
    MessageSuite = "Souhaitez-vous continuer avec un autre répertoire ou dossier ? Répondre par 'O' ou 'N'"
    TitreMessageSuite = "Choisir un autre dossier ?"
    '
    MessageSauvegarde = "Saisir le chemin du répertoire où seront stockés les fichiers traités"
    TitreMessageSauvegarde = "Adresse du répertoire de sauvegarde"
    '
    '*** Début de programme ***
    '
    Reprise:
    '
    Chemin = InputBox(MessageCible, TitreMessageCible) & "\"
    CheminBdd = InputBox(MessageSauvegarde, TitreMessageSauvegarde) & "\"
    Fichier = Dir(Chemin & "*.xls")
    '
    Do While Fichier <> ""
        Set Wb = Workbooks.Open(Chemin & Fichier)
        NomFichierBdd = Wb.Name & "Bdd"
        Sauvegarde = CheminBdd & NomFichierBdd & ".xls"
    'Duplication de la feuille de base
        Workbooks("TraitementScore.xls").Activate
        Sheets("Base").Copy After:=Sheets(1)
        Sheets("Base (2)").Select
        Sheets("Base (2)").Name = "Données"
    '
    ' Copie de données de la source
        Wb.Activate
        Enregistrements = Wb.Sheets("Archives").Range("GU1").Value
        ChampCopié = "A2:GR" & Enregistrements
        Range(ChampCopié).Select
        Selection.Copy
    '
    'Collage des données dans la cible
        Workbooks("TraitementScore.xls").Activate
        Sheets("Données").Select
        Range("A2").Select
        ActiveSheet.Paste
        Application.CutCopyMode = False
        Range("A1").Select
        Sheets("Données").Select
        Sheets("Données").Move
        ActiveWorkbook.SaveAs Filename:=Sauvegarde, _
            FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
            ReadOnlyRecommended:=False, CreateBackup:=False
        ActiveWorkbook.Close
        Wb.Activate
        Wb.Close True
        Set Wb = Nothing
        Fichier = Dir
    Loop
    '
    RéponseMessageSuite = InputBox(MessageSuite, TitreMessageSuite)
    If RéponseMessageSuite = LCase("o") Then GoTo Reprise Else GoTo Fermeture
    '
    Fermeture:
    '
        Workbooks("TraitementScore.xls").Activate
        Sheets("Base").Select
        Range("A1").Select
        ActiveWorkbook.Save
        ActiveWorkbook.Close
    '
    End Sub
    Mon problème est que certains des fichiers à traiter, tous sous format xls, ne sont pas toujours lisibles. Quand le code bute sur un fichier illisible, il bloque et me renvoie le code erreur 1004-Impossible de lire le fichier.

    Comment je peux gérer cette erreur automatiquement afin qu'en cas d'erreur le code traite le fichier listé suivant car actuellemnt je suis obligé d'arrêter le code, de supprimer le fichier illisible puis de relancer le code, ce qui entraîne une reprise du traitement des fichiers déjà traités.

    Merci de vos contributions.

  2. #2
    Membre éclairé

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 514
    Points : 824
    Points
    824
    Par défaut
    Bonsoir,

    Je suis débutant en programmation
    Ce tutoriel pourrait t'aider.

    Cordialement,

    Tirex28/

  3. #3
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Citation Envoyé par tirex28 Voir le message
    Bonsoir,



    Ce tutoriel pourrait t'aider.

    Cordialement,

    Tirex28/
    Voilà un tuto qui me manquait cruellement. Merci aussi.
    Godz
    (\ _ /) Cordialement G@dz
    (='.'=)

    (")-(") Vous avez des neurones. Sollicitez-les. . Si vous êtes aidé, pensez à Voter.

  4. #4
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 14
    Points : 11
    Points
    11
    Par défaut
    Merci beaucoup pour le tutoriel qu m'a été d'un grand secours car j'ai pu trouver un moyen de gérer les erreurs.
    A toute fin utile, voici l'astuce que j'ai utilisée :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    '
    On error go to Erreur
    Do While Fichier <> ""
        On error resume next ' J'intègre cette ligne avant la commande d'ouverture du fichier pour rompre le renvoi vers le paramètre Erreur et traiter les cas d'erreurs via la ligne suivante
        Set Wb = Workbooks.Open(Chemin & Fichier)
        If Err.Number <> 0 Then goto Erreur ' Puis je remets mon renvoi vers Erreur si l'ouverture du fichier n'est pas possible et je continue mes traitements
        NomFichierBdd = Wb.Name & "Bdd" 'Suite des traitements . . .
    Cordialement

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

Discussions similaires

  1. besoin Aide sur Gestion d'erreur dasn un DTS
    Par blowlagoon dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 27/09/2006, 08h15
  2. [Débutant]Besoin d'aide pour gestion d'exceptions
    Par H1B4K dans le forum Langage
    Réponses: 2
    Dernier message: 14/06/2006, 10h01
  3. Aide pour corriger des erreurs
    Par Premium dans le forum C
    Réponses: 32
    Dernier message: 03/06/2006, 16h58
  4. [C#]Aide pour gestion dataset / XML avec listview(débutant)
    Par Low-Fi dans le forum Windows Forms
    Réponses: 1
    Dernier message: 15/04/2006, 11h21
  5. [Upload] Problème pour gestion d'erreur avec class
    Par allserv dans le forum Langage
    Réponses: 2
    Dernier message: 27/12/2005, 13h00

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