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'erreurs successives [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2019
    Messages : 27
    Par défaut gestion d'erreurs successives
    Bonjour,

    Je souhaite parcourir un dossier contenant des fichiers excel aux formats différents (.XLSB, .xls, .xlsx) et les ouvrir.
    J'ai adopté la méthode suivante :
    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
     
    On Error GoTo vieux_format
    Application.DisplayAlerts = False
    Workbooks.Open (source_extraction & ".XLSB")
    Exit Sub
     
    vieux_format:
    On Error GoTo encore_plus_vieux_format
        Workbooks.Open (source_extraction & ".xlsx")
        Exit Sub
     
    encore_plus_vieux_format:
        Workbooks.Open (source_extraction & ".xls")
        Exit Sub
    Application.DisplayAlerts = True
    Le premier passage se passe bien (dans le cas d'un fichier .xlsx, il s'ouvre bien )
    Mais lorsque j'essaye d'ouvrir un fichier .xls, je reste bloqué dans vieux_format et je reçois un message d'erreur sur le fait que le fichier en .xlsx n'existe pas.

    Pourriez-vous m'aider ?

    Par avance merci et excellente journée à tous !

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Les On Error, c'est à éviter autant que possible et les Goto encore plus.

    Si tu veux savoir si un fichier existe, utilise la fonction Dir().
    https://docs.microsoft.com/fr-fr/off...p/dir-function
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim test as Integer
    test = 0
    If Dir(source_extraction & ".XLSB") <> "" Then test = 1
    ElseIf Dir(source_extraction & ".XLSX") <> "" Then test = 2
    ElseIf Dir(source_extraction & ".XLS") <> "" Then test = 3

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2019
    Messages : 27
    Par défaut
    ça me semble être la solution idéale, mais lorsque j'utilise ton code, il me dit que j'utilise un Else sans If

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par juberrebi Voir le message
    ça me semble être la solution idéale, mais lorsque j'utilise ton code, il me dit que j'utilise un Else sans If
    Et tu ne peux pas essayer de passer un peu plus que 9 min pour corriger ça ?
    Nom : Becquée.png
Affichages : 99
Taille : 35,0 Ko

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    If Dir(source_extraction & ".XLSB") <> "" Then
        test = 1
    ElseIf Dir(source_extraction & ".XLSX") <> "" Then
        test = 2
    ElseIf Dir(source_extraction & ".XLS") <> "" Then 
        test = 3
    EndIf

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2019
    Messages : 27
    Par défaut
    Je suis honteux

    Merci beaucoup à toi, ça marche parfaitement

  6. #6
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut
    bonjour,

    Perso je ferais plus simple :

    la fonction Dir en VBA accepte les Jockers du DOS comme l'étoile (*)
    donc voici un exemple d'utilisation

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub Dir_fic_Excel()
        Doss = "D:\"
        fic = "*.xls*"
     
        rep = Dir(Doss & fic)
        mess = rep
        Do
            rep = Dir
            mess = mess & vbCrLf & rep
        Loop While rep <> ""
        MsgBox mess
    End Sub
    Dans Rep on a le nom complet avec la bonne extention

    adapté à ta macro cela donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Rep = Dir(source_extraction & ".XLS*") 
    If Rep <>"" then
       Workbooks.Open (Rep)
    else
      Msgbox "Fichier inexistant"
    end if

    donc un seul if et la gestion de l'erreur est dans le else

    enfin c'est que j'aurais fait


    A bientôt

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

Discussions similaires

  1. [XL-2010] Gestion des erreurs, plantage si 2 erreurs successives
    Par GGEREMMY dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 18/02/2016, 14h35
  2. gestion d'erreur et de transactions....
    Par Dge dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 08/02/2006, 22h20
  3. [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
  4. [LG]tests pour la gestion d'erreur
    Par le 27 dans le forum Langage
    Réponses: 3
    Dernier message: 22/12/2003, 20h44
  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