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 d'erreur, SaveAs, le fichier existe déjà


Sujet :

Macros et VBA Excel

  1. #1
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 682
    Par défaut Gestion d'erreur, SaveAs, le fichier existe déjà
    Bonjour,

    J'ai mis au point une macro qui copie les fichiers d'un répertoire vers celui du mois suivant.
    Normalement le répertoire est vide, mais il peut arriver que le fichier existe déjà et dans ce cas j'aimerais ne pas l'écraser.
    Si je met dans mon code DisplayAlerts= False alors il écrase automatiquement, donc je ne n'en veux pas.
    Si je ne le met pas, il me previent que le fichier existe et me demande si je veux l'écraser si je réponds non, alors la macro s'arrête et renvoie le message d'erreur '1004 SaveAs a échoué'.
    Je peux contourner le problème en entourant cette ligne de on error resume next, on erreur goto 0.
    Mais si je le fais je perds la possibilité de voir d'autres erreurs.

    Donc ma question est la suivante, est-il possible (et si oui comment) de dire à VBA de passer à ligne suivante uniquement si j'ai répondu non a l'écrasement du fichier ?

    Merci d'avance.

    Normalement pas besoin du code pour répondre mais dans le doute je le met quand même.
    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
    Application.EnableEvents = False
    With ThisWorkbook.Sheets("MAJ")
    pl = .Range("A1").End(xlDown).Row
    dl = .Range("A" & pl).End(xlDown).Row
    For i = pl To dl - 1
    If Not (Rows(i).Hidden = True) Then
        Select Case .Cells(i, 1).Text
            Case "repertoire"
                On Error Resume Next
                MkDir .Cells(i, 2).Text
                On Error GoTo 0
            Case "fichier"
                Set objWorkbook = Workbooks.Open(.Cells(i, 4), False, True)
                'On Error Resume Next
                objWorkbook.SaveAs .Cells(i, 2).Text
                'On Error GoTo 0
                If .Cells(i + 1, 1) = "fichier" Or .Cells(i + 1, 1) = "fin" Then objWorkbook.Close True
            Case "lien"
                Set objWorkbook_link = Workbooks.Open(.Cells(i, 4), False, False)
                TabLiaison = objWorkbook.LinkSources(xlExcelLinks)
                For cmpt = LBound(TabLiaison) To UBound(TabLiaison)
                    If TabLiaison(cmpt) = .Cells(i, 4).Text Then objWorkbook.ChangeLink .Cells(i, 4).Text, .Cells(i, 2).Text, xlLinkTypeExcelLinks
                Next cmpt
                objWorkbook_link.Close False
                If (.Cells(i + 1, 1) = "fichier" Or .Cells(i + 1, 1) = "fin") Then objWorkbook.Close True
        End Select
    End If
    Next i

  2. #2
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Teste l'existence du fichier grâce à Dir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim NF As String
    NF = Dir "chemin complet / nom du fichier"
    If NF = "" Then
    'ici ce que tu dois faire si le fichier existe
    Else
    'ici ce que tu dois faire si le fichier n'existe pas
    End If

  3. #3
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 682
    Par défaut
    Merci Pijaku.
    Effectivemment je n'y avais pas pensé.

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

Discussions similaires

  1. [XL-2003] Gestion d'erreur non-ouverture fichier
    Par sharox dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 30/10/2014, 15h59
  2. Réponses: 2
    Dernier message: 15/10/2013, 09h17
  3. Gestion d'erreur: ecrire dans fichier log
    Par Salsaboy60 dans le forum IHM
    Réponses: 7
    Dernier message: 22/03/2013, 23h13
  4. Export/EXCEL SaveAs Pb.: "Fichier existant"
    Par JOHN14 dans le forum Access
    Réponses: 3
    Dernier message: 16/12/2006, 12h31
  5. Réponses: 7
    Dernier message: 05/08/2005, 16h32

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