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 :

Compter le nombre d'erreur dans une macro [XL-2013]


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
    Ingénieur en exploitation des systèmes de production
    Inscrit en
    Août 2017
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur en exploitation des systèmes de production
    Secteur : Transports

    Informations forums :
    Inscription : Août 2017
    Messages : 20
    Par défaut Compter le nombre d'erreur dans une macro
    Bonjour a tous,

    J'ai cherché une réponse à mon problème sans succès (même dans le tuto du site sur les erreurs VBA).

    En fait j'ai fait un mini programme qui va m'ouvrir un PDF ou XLS quand je vais rentrer le nom de celui ci dans la case G2. La macro marche super bien, pas de problème si ce n'est que j'aimerais afficher une msgbox signifiant que le fichier n'est pas trouvé s'il n'existe pas.

    J'ai mis des "On error resume next" pour ne pas planter le programme quand il trouve en PDF ou XLS, mais du coup si le fichier n'existe pas le sub se fini également. Le plus simple me parait d'essayer de compter les erreurs (si possible) mais je ne sais pas comment faire. Si 2 erreurs ça veut donc dire que le fichier n'existe pas (pour que les personnes qui ne connaissent pas la macro puissent comprendre pourquoi rien ne s'affiche).

    Merci


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub ouvrir_kz()
    Dim kz As String
     
    'prendre le numéro du kaizen
    kz = Range("G2").Value
    'ouvrir si extention xls
    On Error Resume Next
    ThisWorkbook.FollowHyperlink Workbooks("Suivi KZ 2017.xlsm").Path & "\Idées Kaizen\" & kz & ".xls"
    'ouvrir si exension pdf
    On Error Resume Next
    ThisWorkbook.FollowHyperlink Workbooks("Suivi KZ 2017.xlsm").Path & "\Idées Kaizen\" & kz & ".pdf"
     
    End Sub

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Bonjour,

    Je ne suis pas certain de bien comprendre...
    Si tu veux vérifier si un fichier existe, utilise Dir()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if Dir(Workbooks("Suivi KZ 2017.xlsm").Path & "\Idées Kaizen\" & kz & ".xls") = "" then
       'Le fichier n'existe pas
    end if

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur en exploitation des systèmes de production
    Inscrit en
    Août 2017
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur en exploitation des systèmes de production
    Secteur : Transports

    Informations forums :
    Inscription : Août 2017
    Messages : 20
    Par défaut
    Citation Envoyé par parmi Voir le message
    Bonjour,

    Je ne suis pas certain de bien comprendre...
    Si tu veux vérifier si un fichier existe, utilise Dir()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if Dir(Workbooks("Suivi KZ 2017.xlsm").Path & "\Idées Kaizen\" & kz & ".xls") = "" then
       'Le fichier n'existe pas
    end if
    En fait ai un fichier comme ce ci:
    Nom : image1.png
Affichages : 563
Taille : 35,7 Ko

    Le problème (et c'est pour ça que j'ai monté la macro comme ceci) c'est que l'utilisateur va rentrer le numéro à sortir sans connaitre l'extension.

    Donc je teste de l'ouvrir en XLS puis en PDF si le fichier existe une des deux formule va me l'ouvrir mais si il n'existe pas, le sub se termine sans rien ouvrir mais l'utilisateur n'a pas reçu l'info comme quoi le fichier qu'il a demandé n'existe pas.

    Si je l'utilise personnellement je sais que le fichier n'existe pas mais si une autre personne le fait elle peut ne pas comprendre pourquoi rien ne s'est produit.

  4. #4
    Invité
    Invité(e)
    Par défaut
    bonjour,

    on error à pour but d'intercepter des exception! car les erreurs dans un programme bien fait doivent être exceptionnels! pour l’impression d'un document alors que VBA détecte l'imprimante mais que celle ci dysfonctionne par exemple!

    enlève ce on Error vérifiés l’existence du fichier Dir(Fichier) et corriges les raison qui t'ont fait mettre un on Error!

  5. #5
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MsgBox "'Le fichier n'existe pas"
    Exit Sub

  6. #6
    Membre averti
    Homme Profil pro
    Ingénieur en exploitation des systèmes de production
    Inscrit en
    Août 2017
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur en exploitation des systèmes de production
    Secteur : Transports

    Informations forums :
    Inscription : Août 2017
    Messages : 20
    Par défaut
    Citation Envoyé par dysorthographie Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MsgBox "'Le fichier n'existe pas"
    Exit Sub
    Si je mets la msgbox à la fin elle va s'ouvrir dans tous les cas même si le fichier s'ouvre. Le seul cas ou le fichier ne s'ouvre pas c'est quand les deux lignes sautes grâce au "On Error Resume Next". (et le sub se termine à tous les coups)

    Je suis obligé de le mettre car si le XLS n'existe pas il ne passera pas la ligne et va mettre la macro en erreur et n'ira pas vérifier si le fichier existe en PDF. Si l'inverse se produit il va aller m’exécuter les deux lignes, le XLS s'ouvre mais comme le PDF n'existe pas il va planter sur cette ligne.

    Peut être qu'il existe une autre fonction capable de contourner le problème.

  7. #7
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Bonjour,

    Il ne faut pas ajouter les conseils sans réfléchir, mais mettre en musique.
    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub ouvrir_kz()
        Dim kz As String, fich As String, ext, i As Long
        'prendre le numéro du kaizen
        kz = Range("G2").Value
        fich = Workbooks("Suivi KZ 2017.xlsm").Path & "\Idées Kaizen\"
        ext = Split(".xls,.pdf", ",")
        For i = 0 To UBound(ext)
            If Dir(fich & kz & ext(i)) <> "" Then
                ThisWorkbook.FollowHyperlink fich & kz & ext(i)
                Exit For
            End If
        Next i
        If i = UBound(ext) + 1 Then MsgBox "fichier non trouvé"
    End Sub
    ne s'affiche que si aucune extension n'a suffit.
    eric

  8. #8
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    1) La solution proposée par eriiic, que je salue, est la meilleure
    2) la conception, à savoir :
    un mini programme qui va m'ouvrir un PDF ou XLS quand je vais rentrer le nom de celui ci dans la case G2
    est peut-être à reconsidér et rendre plus conviviale --->>
    Il n'est pas convivial de conduire l'utilisateur à saisir un nom de fichier.
    Dès lors que l'on en connaît les deux extensions possibles (.pdf ou .xls) et le chemin du dossier qui les contient, il est bien plus adroit et convivial de conduire l'utilisateur à cliquer sur l'article de son choix dans une listbox alimentée par tous les noms (avec leur extension) des fichiers de cette extension présents dans ce dossier.

  9. #9
    Membre averti
    Homme Profil pro
    Ingénieur en exploitation des systèmes de production
    Inscrit en
    Août 2017
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur en exploitation des systèmes de production
    Secteur : Transports

    Informations forums :
    Inscription : Août 2017
    Messages : 20
    Par défaut
    D'accord je vais plutôt ouvrir une boite de dialogue sur le fichier ! Cela va empêcher le programme d'avoir un bug "forcé".

    Merci pour toutes vos réponses.

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

Discussions similaires

  1. Compter le nombre d'occurence dans une chaine
    Par shirya dans le forum Langage
    Réponses: 2
    Dernier message: 16/10/2007, 20h39
  2. Compter le nombre de fichiers dans une arborescence
    Par Olivier Regnier dans le forum Shell et commandes GNU
    Réponses: 9
    Dernier message: 22/08/2007, 10h29
  3. Réponses: 2
    Dernier message: 06/05/2007, 23h43
  4. Compter le nombre de colonne dans une table
    Par Coin dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 01/12/2006, 16h03
  5. Compter le nombre de caractere dans une chaine
    Par jmjmjm dans le forum C++
    Réponses: 13
    Dernier message: 19/11/2006, 11h37

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