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 :

recherche dans pdf et trie du pdf


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 304
    Points : 120
    Points
    120
    Par défaut recherche dans pdf et trie du pdf
    Bonjour à tous,

    je suis tombé sur le post http://www.developpez.net/forums/d10...pdf-macro-vba/ qui est très intéressant, et j'aimerai le développer pour un besoin de trie de document, c'est à dire :

    je veux rechercher une chaîne de caractère alphanumérique dans le Pdf et ensuite déplacer le pdf dans le répertoire correspondant à la chaîne de caractère ci dessus en sachant que le répertoire n'existe pas à la première recherche (il faut prévoir un test pour savoir si le répertoire existe.

    dans l'excel, j'ai une liste avec la chaîne de caractère et il peut y avoir plusieurs pdf pour la même chaîne de caractère.

    est ce que quelqu'un à une idée de comment procédé, merci pour votre aide.

  2. #2
    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 272
    Points
    11 272
    Par défaut
    Salut, voir Rechercher un mot dans un fichier PDF via Acrobat ou Rechercher un mot dans un fichier PDF via Internet Explorer et adapter à ton contexte

    Pour la création du dossier

    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
    Private Declare Function SHCreateDirectoryEx Lib "Shell32.dll" Alias "SHCreateDirectoryExA" _
                                                 (ByVal hwnd As Long, ByVal pszPath As String, ByVal lngsec As Long) As Long
     
    Option Explicit
     
    Private Function CreationDossier(sDossier as String) As Long
    Dim Rep As Long
        Rep = SHCreateDirectoryEx(0&, sDossier, 0&)
    End Function
     
    Sub Test()
    Dim sDossier As String
        sDossier = "C:\Essai1\Essai2\Essai3\Essai4\Essai5"
        CreationDossier sDossier
    End Sub
    Pour la copie/déplacement de fichiers voir Manipulation des fichiers en VBA

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 304
    Points : 120
    Points
    120
    Par défaut
    Bon, je ne suis pas expert en vba, mais j'ai oublié de préciser que :

    dans mon excel, j'ai une liste de chaînes de caractères.
    je prend ma première chaîne de caractère, je scanne tous les pdf qui sont dans un répertoire spécifique et si je trouve la chaîne de caractère je déplace ou copier colle le fichier ou les fichiers dans un répertoire qui sera créé avec comme nom de répertoire la chaîne de caractère ci dessus, ensuite je prends la seconde chaîne de caractère et ainsi de suite.

  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 272
    Points
    11 272
    Par défaut
    Re, pour récupérer la liste des fichiers PDF à partir d'un dossier racine par une recherche récursive ou non dans un tableau TabFichiers()

    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
    Option Explicit
     
    Dim NbFichiers As Long
    Dim TabFichiers() As String
    Const TypeFichier As String = "pdf"
     
    Private Sub Liste(sChemin As String, bRecursif As Boolean)
    Dim FSO As Object, Dossier As Object
    Dim SousDossier As Object, Fichier As String
     
        Set FSO = CreateObject("Scripting.FileSystemObject")
        Set Dossier = FSO.GetFolder(sChemin)
     
        Fichier = Dir$(sChemin & "\*.*")
        Do While Len(Fichier) > 0
            If UCase$(TypeFichier) = UCase$(FSO.GetExtensionName(Fichier)) Then
                NbFichiers = NbFichiers + 1
                ReDim Preserve TabFichiers(NbFichiers)
                TabFichiers(NbFichiers) = Dossier & "\" & Fichier
            End If
            Fichier = Dir$()
        Loop
     
        If bRecursif Then
            For Each Dossier In Dossier.SubFolders
                Liste Dossier.Path, True
            Next Dossier
        End If
     
        Set Dossier = Nothing
        Set FSO = Nothing
    End Sub
     
    Sub SelDossierRacine()
    Dim sChemin As String
    Dim i As Long
     
        sChemin = ThisWorkbook.Path
        With Application.FileDialog(msoFileDialogFolderPicker)
            .InitialFileName = sChemin & "\"
            .Title = "Sélectionner un Dossier"
            .AllowMultiSelect = False
            .ButtonName = "Sélection Dossier"
            .Show
            If .SelectedItems.Count > 0 Then
                DoEvents
                NbFichiers = 0
                Erase TabFichiers
                Liste .SelectedItems(1), False
            End If
        End With
    End Sub

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 304
    Points : 120
    Points
    120
    Par défaut
    je reformule avec un exemple :


    j'ai une liste de pdf de type courrier donc j'ai une adresse postal à l'intérieur de ces PDF.

    Tous les PDF sont dans un répertoire D:\COURRIER.

    et donc ce que je veux faire, c'est le trie des courriers au format PDF par code postal et pour cela, j'ai un listing des codes postaux dans Excel, ex : 75001, 75002, ....

    et pour les trier, il faut pouvoir scanner le contenu du pdf pour savoir si il a bien le code postal sélectionné dans mon listing, ensuite, si il correspond à ma sélection, je le place dans le répertoire D:\COURRIER\75001 ou D:\COURRIER\75002, par contre, si le répertoire n'existe pas il faut le créer.

    c'est pas facile à expliquer, mais j'espère que c'est un peu mieux cette fois, merci pour votre patience.

  6. #6
    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 272
    Points
    11 272
    Par défaut
    Re, Inutile de reformuler, j'ai compris que tu es dans une position attentiste.
    Avec les liens et les codes fournis, tu as tous les éléments pour y parvenir.
    Pour le balayage des chaines qqch comme ceci, ou tu devras intégrer certaines des procédures données ci-dessus.

    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
    Option Explicit
     
    Sub BalayageMotsRch()
    Dim LastRow As Long
    Dim i As Long
    Dim sChaineRch As String
        LastRow = Feuil1.Range("A" & Rows.Count).End(xlUp).Row
        For i = 1 To LastRow
            ' Chaine à rechercher
            sChaineRch = Feuil1.Range("A" & i)
     
            ' .....
     
        Next i
    End Sub

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 304
    Points : 120
    Points
    120
    Par défaut
    Est ce que l'adobe acrobat est nécessaire ou le reader suffit ?

    car j'ai le message "un composant ActiveX ne peut pas créer d'objet", faut il une référence supplémentaire ?

Discussions similaires

  1. Réponses: 2
    Dernier message: 29/12/2014, 10h07
  2. meilleure complexité de recherche dans un matrice triée
    Par gigimino dans le forum Débuter
    Réponses: 2
    Dernier message: 29/12/2011, 23h31
  3. [PDF] PHP et recherche dans le contenu d'un fichier PDF
    Par bass17 dans le forum Bibliothèques et frameworks
    Réponses: 8
    Dernier message: 16/02/2007, 12h54
  4. Moteur de recherche dans PDF
    Par jhice dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 09/05/2006, 15h58
  5. [FPDF] Rechercher dans des pdf
    Par snike dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 09/09/2005, 10h58

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