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 :

Macro- vérification existence d'un fichier


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Femme Profil pro
    Ingénieur commercial
    Inscrit en
    Mars 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur commercial
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2015
    Messages : 2
    Par défaut Macro- vérification existence d'un fichier
    Bonjour,
    on me demande de créer une marco afin de pouvoir vérifier l'existence de fichier pdf dans des dossiers présent sous le réseau.
    j'ai réussi à faire une macro qui concatène le chemin vers les dossiers mais le soucis ma macro affiche uniquement les fichier existant en écrivant 'existe' mais je n'arrive pas à ajouter une boucle pour les non existant.
    et aussi je souhaiterai qu'elle puisse me dire avant de trouver le fichier dans le dossier si le dossier existe bien ou pas.
    une partie de mon tableau:



    le code ci-dessous.
    Merci pour votre aide.
    "
    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
    sub Existence()
    'Test Existance fichier dans dossier Plan Cible
     
    Dim j As Integer
    Dim i As Integer
    Dim Rep As String, Fichier As String, Chemin As String
    Dim EXT As String
    EXT = "pdf"
    j = 2
    i = 2
     
    Do While Sheets("Feuil2").Range("A" & j) <> ""
     Rep = Sheets("Feuil2").Range("K" & i)
       Fichier = Dir(Rep)
     Do While Fichier <> ""
        If Right(Fichier, 3) = EXT Then
             Sheets("Feuil2").Range("L" & i) = "Le dossier le DT existent"
          End If
       Fichier = Dir
     
      Loop
     j = j + 1
     i = i + 1
     
    Loop
    end sub
    Merci infiniment pour votre aide!!!

  2. #2
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, Commence par baliser ton code STP

    Qqch comme ceci, à adapter à ton contexte, pour un dossier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim sCheminPdf As String
    Dim FSO As Object
     
        Set FSO = CreateObject("Scripting.FileSystemObject")
        sCheminPdf = ThisWorkbook.Path & "\" & .....
     
        If Not FSO.FolderExists(sCheminPdf) Then
            FSO.CreateFolder (sCheminPdf)
            .....
        End If
     
        Set FSO = Nothing
    Pour un fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim sCheminPdf As String
    Dim sNomFichier As String
    Dim FSO As Object
     
        Set FSO = CreateObject("Scripting.FileSystemObject")
        If FSO.fileExists(sCheminPdf & "\" & sNomFichier) = True Then .....
        Set FSO = Nothing
    Si tu crains les doublons de fichiers voir ici

    Il y a aussi ceci à consulter : Manipulation des fichiers en VBA

  3. #3
    Membre Expert Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Par défaut
    Bonsoir Aliayus, Kiki, bonsoir le forum,

    J'avais commencé à bosser sur ton problème mais j'ai dû m'interrompre... Je t'envoie cette proposition avec le code commenté ci-dessous :

    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
    Sub Existence()
    Dim SF As Object 'déclare la variable SF (Système de Fichiers)
    Dim O As Worksheet 'déclare la variable O (Onglet)
    Dim TC As Variant 'déclare la variable TC (Tableau de Cellules)
    Dim I As Integer 'déclare la variable I (Incrément de ligne)
    Dim TEST As Boolean 'déclare la variable TEST
    Dim DT As Object 'déclare la variable DT (Dossier de Travail)
    Dim EF As Object 'déclare la variable EF (Ensemble de Fichiers)
    Dim F As Object 'déclare la variable F (Fichier)
     
    Set SF = CreateObject("Scripting.FileSystemObject") 'définit la système de fichier SF
    Set O = Sheets("Feuil2") 'définit l'onglet O
    TC = O.Range("A1").CurrentRegion 'définit le tableau de cellules TC
    For I = 2 To UBound(TC, 1) 'boucle 1 : sur toutes les lignes I du tableau de cellules TC
        TEST = False 'initialise la variable TEST
        On Error Resume Next 'gestion des erreurs (en cas d'erreur passe à la ligne suivante)
        DT = SF.GetFolder(TC(I, 11)) 'définit le dossier  de travail DT par rapport à la cellule colonne K (génère une erreur si le dossier n'existe pas)
        If Err <> 0 Then 'condition : si une erreur a été générée
            Err = 0 'annule l'erreur
            GoTo Suite 'va à l'étiquette "Suite"
        End If 'fin de la condition
        On Error GoTo 0 'annule la gestion des erreurs
        EF = DT.Files 'définit l'ensemble des fichiers EF du dossier de travail DT
        For Each F In EF 'boucle 2 : sur tous les fichiers F de l'ensemble des fichier EF
            If UCase(Right(F.Name, 3)) = "PDF" Then 'condition : si l'extension du fichier est "pdf" (ou "PDF")
                TEST = True 'définit la variable TEST
                O.Cells(I, 12).Value = "Le dossier le DT existent" 'definit le texte de la cellule ligne I colonne 12 (=L)
                Exit For 'sort de la boucle 2
            End If 'fin de la condition
        Next F 'prochain fichier de la boucle 2
        'si test est faux, 'definit le texte de la cellule ligne I colonne 12 (=L)
        If TEST = False Then O.Cells(I, 12).Value = "Aucun fichier PDF dans ce dossier !"
    Suite: 'étiquette
    Next I 'prochaine ligne de la boucle 1
    End Sub

  4. #4
    Candidat au Club
    Femme Profil pro
    Ingénieur commercial
    Inscrit en
    Mars 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur commercial
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2015
    Messages : 2
    Par défaut
    Bonjour Tautheme,

    Merci d'avoir pris la peine de me réponde.
    Je viens de tester ton code mais ça ne marche pas.
    Je souhaite accéder au contenu du dossier mais est ce que tu penses que ce soit possible sans la fonction "Dir"
    dans l'attente de ton retour.

    Merci de par avance

  5. #5
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut




    Bonjour, bonjour !

    Pour vérifier si un fichier existe ou pas, une instruction suffit grâce justement à cette fonction Dir, soit dit en passant …




    __________________________________________________________________________________________________
    Je suis Charlie - Je suis Bardo

  6. #6
    Membre Expert Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Par défaut
    Bonjour le fi, bonjour le forum,

    Citation Envoyé par Aliayus87 Voir le message
    Bonjour Tautheme,

    Merci d'avoir pris la peine de me réponde.
    Je viens de tester ton code mais ça ne marche pas.
    Je souhaite accéder au contenu du dossier mais est ce que tu penses que ce soit possible sans la fonction "Dir"
    dans l'attente de ton retour.

    Merci de par avance
    Pourrais-tu au moins dire ce qui ne va pas ! Parce que ça ne marche pas, ce n'est pas très explicite... Tu veux dire que ça plante ou bien que le résultat obtenu n'est pas bon ?
    Sinon, il est vrai que je n'aime pas utiliser DIR et le lui prèfère le Système de Fichier. Mais ce n'est qu'une de mes horribles manies d'autodidacte et Marc ne me contredira pas.
    Je pense qu'un petit fichier exemple serait le bienvenu. Montrant ce que tu as avant la macro et ce que tu désires obtenir après le traitement par celle-ci...

  7. #7
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Exemple d'une liste de fichiers *.xl* présents sur l'arborescence complète d'un disque dur local :

    • via Dir : moins de 20 secondes …

    • via FSO : 2 minutes 15 secondes ‼


    En réseau la fonction Dir peut s'avérer capricieuse et FSO est plus facile pour les débutants …

    Mais pour juste tester l'existence d'un fichier même en réseau, je commencerais par Dir car là c'est vraiment simple !

    __________________________________________________________________________________________________
    La meilleure façon de ne pas avancer est de suivre une idée fixe. (Jacques Prévert)

Discussions similaires

  1. Vérification de l'existence d'un fichier distant
    Par vazkeizh dans le forum Général Java
    Réponses: 2
    Dernier message: 25/06/2008, 11h01
  2. Réponses: 3
    Dernier message: 22/02/2008, 04h03
  3. Vérification existance fichier sur lecteur réseau
    Par sat478 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 13/07/2007, 11h52
  4. Vérification de l'existance d'un fichier via HTTP
    Par mouste79 dans le forum Général JavaScript
    Réponses: 18
    Dernier message: 02/02/2006, 14h26
  5. Vérification de l'existence d'un fichier
    Par alfu dans le forum ASP
    Réponses: 2
    Dernier message: 06/10/2004, 13h29

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