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 :

Problème de balayage des fichiers pdf dans un répertoire [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2008
    Messages : 611
    Points : 359
    Points
    359
    Par défaut Problème de balayage des fichiers pdf dans un répertoire
    Bonjour,

    Je souhaite balayer tous les fichiers pdf d'un répertoire. Je n'ai mis qu'un fichier pdf dans le répertoire en question.

    Lorsque je passe à la lecture suivante via l'instruction

    La macro. plante en "Erreur d'exécution 5 - Argument ou appel de procédure incorrect".

    Dans la zone fichier, j'ai le nom de mon fichier.

    D'où cela peut-il provenir ?

  2. #2
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    Dir() au lieu de Dir déjà ?

    oui c'est une fonction, pas une variable

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2008
    Messages : 611
    Points : 359
    Points
    359
    Par défaut
    Le fait de mettre des parenthèses ne change rien.

    Voici ma boucle :
    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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
     
     
    Sub RecursionSurDossiers(chemin As String, nom_client As String)
     
         Dim fso As Object
         Dim Dossier As Object
         Dim SousDossier As Object
         Dim FileItem As Scripting.File
     
         Dim Tableau() As String
         Dim tableau_2() As String
     
         Dim repertoire As String, fichier As String
     
         Dim fic As String
     
         Dim chem As String
     
         Dim nom_fichier As String
     
         Dim i As Integer
     
         i = 1
     
         Set fso = CreateObject("Scripting.FileSystemObject")
     
         ' on se place sur le répertoire
         Set Dossier = fso.GetFolder(chemin)
     
         fichier = Dir(chemin & "\*.pdf")
     
         ' On balaye tous les fichiers pdf du répertoire de départ
     
         Do Until Len(fichier) = 0
     
           Set FileItem = fso.GetFile(chemin & "\" & fichier)
     
           trouve = False
     
           recherche_fichier FileItem.Name, rep_cible
     
           ' Si on n'a pas trouvé le fichier alors
           If Not trouve Then
              ' on archive dans Excel
              i = i + 1
              With Worksheets("ARCHIVE")
                   .Range("A" & i).Value = chemin
                   .Range("B" & i).Value = FileItem.Name
              End With
     
              ' on supprime le fichier
              If a_supprimer Then
                 ' fileitem.delete
              End If        
     
     
           End If
     
           MsgBox " chemin : " & chemin
     
           ' passage au fichier suivant
           fichier = Dir()
         Loop
     
         'pour chaque sous dossier du repertoire
         For Each SousDossier In Dossier.SubFolders
     
            ' si le sous dossier contient lui même des dossiers
            If SousDossier.SubFolders.Count > 0 Then
                ' la procédure s'appelle elle-même avec le sous-dossier en argument
                ' afin de descendre tout en bas de ton arborescence
                RecursionSurDossiers SousDossier.Path, ""
            End If
     
         ' et on passe au suivant
         Next SousDossier
     
         Set fso = Nothing
     End Sub

  4. #4
    Expert éminent sénior
    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
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut, si tu cherches une procédure récursive : regarde ici ( à adapter à ton contexte ), il y a aussi ceci ( via les APIs )

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2008
    Messages : 611
    Points : 359
    Points
    359
    Par défaut
    Je n'ai pas de problème sur la récursivité mais pour passer au fichier suivant. Je n'ai qu'un fichier dans mon répertoire et il ne veut pas passer au fichier suivant. Excel retourne l'erreur que j'ai mentionné dans mon message.

  6. #6
    Membre averti
    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2008
    Messages : 611
    Points : 359
    Points
    359
    Par défaut
    J'ai modifié mon appel à ma procédure recherche_fichier si je trouve le répertoire dans le répertoire cible mais cela ne fonctionne pas mieux.

    J'ai conditionné l'appel par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Dir(p_strCheminDepart, vbDirectory) = "" Then recherche_fichier FileItem.Name, rep_cible
    J'ai l'impression que le fait de rechercher dans un autre répertoire lui fait perdre le répertoire sur lequel s'effectue la recherche initiale.

  7. #7
    Expert éminent sénior
    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
    Points : 18 677
    Points
    18 677
    Par défaut




    Bonjour,

    en dehors des nombreuses ressources de l'aide VBA intégrée, de la FAQ, des tutoriels, d'au moins trois contributions
    dans le forum Contribuez et sans compter les discussions traitant de ce sujet, voir au moins celle-ci


    _____________________________________________________________________________________________________
    Je suis Charlie - Je suis Bardo
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  8. #8
    Membre averti
    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2008
    Messages : 611
    Points : 359
    Points
    359
    Par défaut
    Merci beaucoup Marc-L. J'ai utilisé FSO pour boucler sur les répertoires et sur les fichiers et je n'ai plus de problème.

  9. #9
    Expert éminent sénior
    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
    Points : 18 677
    Points
    18 677
    Par défaut





    Ah ? Dommage car ce n'est pas la voie rapide mais du moment que cela te satisfait …

    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

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

Discussions similaires

  1. [AC-2007] archiver des fichiers (PDF) dans une table
    Par Tarro dans le forum Access
    Réponses: 0
    Dernier message: 15/03/2010, 09h05
  2. Récupérer la liste des signets des fichier PDF dans EXCEL
    Par pio_killer dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 27/01/2010, 13h35
  3. Problème d'encodage des fichiers xml dans SAX
    Par jad_jad dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 26/05/2008, 19h51
  4. Insertion des fichiers pdf dans une base oracle
    Par arezki76 dans le forum SQL
    Réponses: 2
    Dernier message: 20/07/2007, 16h39
  5. [PDF] Ouvrir des fichiers PDF dans page Web
    Par ludoweb dans le forum Bibliothèques et frameworks
    Réponses: 12
    Dernier message: 07/09/2006, 08h13

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