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 :

erreur lors de l'ouverture fichier pendant la macro


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Inscrit en
    Août 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 14
    Points : 10
    Points
    10
    Par défaut erreur lors de l'ouverture fichier pendant la macro
    bonjour à tous,
    j'ai une macro avec une boucle qui ouvre des fichiers, fait des copies puis les ferme.

    cependant de façon aléatoire, j'obtiens l'erreur d'execution 1004: impossible de lire le fichier.

    je passe en debugage et là aucun soucis la macro repart sur ce qui vient de planter ... puis replante sur l'ouverture d'un autre fichier et ainsi de suite

    c'est comme si vba n'avait pas le temps d'ouvrir le fichier. j'ai essayé sur mon disque dur à la place du réseau, le problème est alors moins fréquent mais persiste.

    le code pour ouvrir est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks.Open Filename:=rep & "\" & file
    j'ai tenté de mettre des lignes Debug.print "ok" avant et après l'ouverture pour créer une sorte de temporisation mais ça ne change rien.

    savez vous comment régler ce truc là ?

    salutation

    dwarf17

  2. #2
    Membre régulier
    Inscrit en
    Octobre 2008
    Messages
    240
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 240
    Points : 116
    Points
    116
    Par défaut
    Bonjour,

    Je pense qu'il faudrait voir le reste du code. En ne voyant que ça, il me semble que ce serait un problème sur les variables rep et file.

  3. #3
    Membre à l'essai
    Inscrit en
    Août 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    voici le code complet
    je reprécise que lors de l'erreur, si je reprends en pas à pas ça passe tout seul

    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
    Sub liste()
    '
    ' liste Macro
    ' Macro enregistrée le 28.04.2008 par Administrator
    '
     Application.ScreenUpdating = False
     Sheets("liste").Activate
     nombre_cas = Cells(1, 7)
     Sheets("simple").Activate
     comparaison = ActiveWorkbook.Name
     rep = ActiveWorkbook.Path
     
     For i = 2 To nombre_cas + 1
     
     
        file = Sheets("liste").Cells(i, 1).Value
        If file <> "" Then
            Sheets("simple").Cells(4, 1).Value = file
            Workbooks.Open Filename:=rep & "\" & file
            Range("A1:G39").Copy
            nom = ActiveWorkbook.Name
     
        Windows(comparaison).Activate
        Range("A5").Select
        ActiveSheet.Paste
        Range("B2").Select
        Cells(1, 1).Copy     'vide le presse papier
            Workbooks(nom).Close
        End If
     
     
        file = Sheets("liste").Cells(i, 2).Value
        If file <> "" Then
            Sheets("simple").Cells(4, 10).Value = file
              Workbooks.Open Filename:=rep & "\" & file
            Range("A1:G39").Copy
            nom = ActiveWorkbook.Name
        Windows(comparaison).Activate
        Range("J5").Select
        ActiveSheet.Paste
        Range("B2").Select
          Cells(1, 1).Copy     'vide le presse papier
            Workbooks(nom).Close
        End If
        Max = Cells(52, 9)
        Min = Cells(53, 9)
        Max_res = Cells(52, 10)
        Min_res = Cells(53, 10)
        Sheets("liste").Cells(i, 3).Value = Max
        Sheets("liste").Cells(i, 4).Value = Min
        Sheets("liste").Cells(i, 5).Value = Max_res
        Sheets("liste").Cells(i, 6).Value = Min_res
     
        Next i
     
    '
    End Sub

  4. #4
    Membre régulier
    Inscrit en
    Août 2010
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 168
    Points : 123
    Points
    123
    Par défaut
    Il y aurait bien une solution mais un peu "sale" qui consiste a tester le numero d'erreur et à boucler sur la ligne qui foire tant que celui ci est egale a 1004.

  5. #5
    Membre à l'essai
    Inscrit en
    Août 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    ok merci j'ai fait ça et ça marche
    (c'est la première fois que je travaille avec des gestions d'erreur, donc si vous voyez des betises , n'hesitez pas à le signaler)

    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
    'boucle do while permettant de boucler 3 fois pour ouvrir fichier récalcitrant
    k = 0
    Do While k < 3
        ' permet de passer tout de meme à la ligne suivante si une erreur intervient
        On Error Resume Next
        Debug.Print Err.Number
     
        Workbooks.Open Filename:=rep & "\" & file
        Debug.Print Err.Number
     
        If Err.Number = 0 Then Exit Do
     
        If Err.Number = 1004 Then
        Debug.Print Err.Number
            Workbooks.Open Filename:=rep & "\" & file
            Debug.Print Err.Number
            k = k + 1
        End If
    Loop
     
    ' supprime le non plantage sur erreur
     On Error GoTo 0
    merci pour l'aide

  6. #6
    Membre régulier
    Inscrit en
    Août 2010
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 168
    Points : 123
    Points
    123
    Par défaut
    hmm je sais pas trop à quoi servent les Debug print mais en gros c'est ca Mais bon encore une fois c'est pas la meuilleur solution je pense

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

Discussions similaires

  1. Unity Pro -=-> Erreur lors de l'ouverture d'un fichier
    Par OUBEL dans le forum Automation
    Réponses: 16
    Dernier message: 08/06/2022, 15h30
  2. Réponses: 9
    Dernier message: 26/05/2008, 18h23
  3. Réponses: 1
    Dernier message: 06/05/2008, 09h37
  4. Réponses: 1
    Dernier message: 28/03/2008, 16h06
  5. erreur lors de l'ouverture d'un fichier
    Par programaniac dans le forum Langage
    Réponses: 3
    Dernier message: 04/05/2007, 20h12

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