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 :

VBA - ouverture d'un fichier pdf avec nom incomplet [XL-2013]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2015
    Messages : 50
    Points : 31
    Points
    31
    Par défaut VBA - ouverture d'un fichier pdf avec nom incomplet
    Bonjour,

    Je n'arrive pas à utliser la synthaxe de l'étoile dans mon fichier.

    Je fais une macro pour ouvrir un fichier PDF : je l'ai testé avec un nom fixe, c'est OK

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Shell "C:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe W:\Liste_de_fichier\16_20976\result\20976RA1014b_Noise.pdf", vbNormalFocus 'path & way
    Mais après j'aurai besoin de que le début soit mis nom pas en variable mais en "n'importe quoi" je ne connaitrais que la fin du fichier. (j'ai essayé la méthode de l'étoile mais sans grand succès)


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Shell "C:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe W:\Liste_de_fichier\16_20976\result\*_Noise.pdf", vbNormalFocus 'path & way
    J'ai regardé sur internet et des forums, je n'ai pas trouvè tutoriel et ce que j'ai fait n'a pas fonctionné...

    Je vous remercie d'avance

  2. #2
    Membre actif
    Homme Profil pro
    Ingénieur Qualité (Microtechnique)
    Inscrit en
    Février 2016
    Messages
    188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur Qualité (Microtechnique)
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2016
    Messages : 188
    Points : 265
    Points
    265
    Par défaut
    Hello
    Tu ne peux pas utiliser *.
    Il te faut le chemin exact.
    Regarde ce poste :
    http://www.developpez.net/forums/d15...f/#post8669980
    J’y ai indiqué comment utiliser le boite de dialogue « FileDialog » et comment agir sur le filtre pour n’obtenir que les fichiers pdf et rechercher tous ceux contenant un terme.
    Avant de poser une question avez-vous testé l’enregistreur de macro ?
    http://fauconnier.developpez.com/tut...istreur-macro/
    Merci de passer vos discussion en
    Et sinon un est toujours le bienvenue.

  3. #3
    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,

    rappel :

    Important : Éditorial - à lire avant de poster


    Sinon un fichier ne peut-être ouvert qu'à partir de son chemin et de son nom complets …
    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)

  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, voir l'aide en ligne sur GetOpenFilename ou FileDialog(msoFileDialogFilePicker).

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2015
    Messages : 50
    Points : 31
    Points
    31
    Par défaut
    Désolé Marc-L, erreur d'inatention

    Donc si J'ai compris,

    Il faut que je rechercher dans mon répertoire comment s'appelle mon fichier.

    Donc si j'ai 10 fichiers, je dois comparer mes 10 fichiers avec le ou les mots clés correspondant à mon fichier

    Une fois que j'ai le bon, dire a VBA ouvre öoi celui-là?

  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 274
    Points
    11 274
    Par défaut
    Salut, pour ce qui est de la recherche dans des fichiers PDFs voir : Acrobat Reader : Recherche dans tous les PDFs d'un dossier (via APIs)

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2015
    Messages : 50
    Points : 31
    Points
    31
    Par défaut
    Bonjour Kiki,

    J'ai lu et essayer de comprendre le fichier de david, mais je ne veux pas rechercher dans le fichier PDF, je veux juste rechercher dans les noms de fichiers (j'ai peut être mal compris son fichier)

    Nom : Unbenannt.PNG
Affichages : 1572
Taille : 11,0 Ko

    Dans chaque dossier de mesure, j'ai 7 fichiers pdf où je ne connais que l'emplacement du dossier et que la dernière partie du nom... (exemple : noise.pdf)

    Et je ne peux pas demander à la personne de rentrer tout le nom du fichier ...

  8. #8
    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, dans ce cas voir : Liste des fichiers d'un dossier. Cela devrait mieux correspondre à ta demande.
    Images attachées Images attachées  

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2015
    Messages : 50
    Points : 31
    Points
    31
    Par défaut
    Oh parfait ! J'essaie ca dans mon code et je te tiens au courant !

  10. #10
    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
    Re, ou cela : Liste des fichiers d'un dossier + Liens
    Images attachées Images attachées  

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2015
    Messages : 50
    Points : 31
    Points
    31
    Par défaut
    Le premier me suffit, j'ai juste besoin du nom mais plus compliqué que je le pensais haha

    Même avec la solution, je n'arrive pas à voir comment m'y prendre pour obtenir mes noms de fichiers ... J'ai mon nom paramètre de nom de fichier en constante et mon chemin de fichier en variable. Donc si j'ai bien compris je dois utiliser la fonction qui doit regarder la liste des fichiers dans ce dossier (j'ai pas trouver cette sous-fonction, peut être rch) et ensuite faire une boucle condition pour savoir si ma constante de nom de fichier est présente dans le nom de ce fichier. Si vrai copier coller dans Excel et le tour est joué ?

    Dans ton fichier Excel je ne comprend ta fonction recherche :

    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
    Private Sub SearchForFiles(sRoot As String)
    Dim WFD As WIN32_FIND_DATA
    Dim hFile As Long, i As Long, sDoss As String
     
        hFile = FindFirstFile(sRoot & ALL_FILES, WFD)
        If hFile <> INVALID_HANDLE_VALUE Then
            Do
                If (WFD.dwFileAttributes And vbDirectory) Then
                    If Asc(WFD.cFileName) <> vbDot Then
                        iNbDossier = iNbDossier + 1
                        If FP.bRecurse Then SearchForFiles sRoot & TrimNull(WFD.cFileName) & vbBackSlash
                    End If
                Else
                    If MatchSpec(WFD.cFileName, FP.sFileNameExt) Then
                        FP.nCount = FP.nCount + 1
                        sDoss = Right$(sRoot & TrimNull(WFD.cFileName), Len(sRoot & TrimNull(WFD.cFileName)) - iLen)
                        ShParam.Cells(FP.nCount + RDepart - 1, 2) = sDoss
                    End If
                End If
            Loop While FindNextFile(hFile, WFD)
        End If
        Application.StatusBar = iNbDossier & " / " & FP.nCount
        FindClose hFile
    End Sub

  12. #12
    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, tu ne comprends pas et tu veux aller modifier le fichier fourni !?

    Liste Fichiers permet de sélectionner le dossier racine à partir duquel la recherche commencera.
    La recherche récursive ou non se fera dans les dossiers / sous dossiers à partir de la racine.
    Cela avec le filtre pour le nom de fichier du style *noise.pdf ou autre saisit dans la TextBox.

    Ces paramètres sont conservés pour les recherches futures.
    Les copies d'écran, quand on les regarde, en disent long.

  13. #13
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2015
    Messages : 50
    Points : 31
    Points
    31
    Par défaut
    J'ai passé du temps dessus, j'ai commencé à comprendre

    Pas évident comme code, je ne pense pas que j'aurai été capabe de faire ceci moi-même

    Un collègue passant m'a envoyé sur un autre lien qu'il déjà a utilisé : http://excel.developpez.com/faq/?pag...riptingRuntime

    Je le trouve moins lourd, mais est-ce la meilleure méthode?

  14. #14
    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, c'est même certain, à l'époque j'avais des dizaines de milliers de fichiers à traiter ( opérations répétées plusieurs fois par jour pendant 1 mois et demi ) , le gain en terme de temps était conséquent et sans appel pour les APIs par rapport à FSO ou DIR. Maintenant avec qqs dizaines de fichiers c'est moins évident.
    Images attachées Images attachées  

  15. #15
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2015
    Messages : 50
    Points : 31
    Points
    31
    Par défaut
    En effet, pour de grandes quantité de fichier je devrais revoir mon code (certainement prendre une formation à VBA ^^)

    Je suis presque au but de ce que je souhaite faire.

    Maintenant, j'ai mes noms de fichier en entier, mais je n'arrive toujours pas à faire de rechercher approximative avec l'étoile? Quelle est sa fonction réllement?

    Du coup, je pensais tester la partie droite des noms : Boucle while plus fonction si qui teste si le nom la partie droite correspond à ce que je veux pour me ressortir la cellule du où se trouve mon de fichier.

    Est-ce que ceci peut marcher?

  16. #16
    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, regarde Manipuler les chaînes de caractères en VB6 et VBA Excel avec l'opérateur Like, ainsi que l'aide en ligne sur ce dernier. On va y arriver.

    Extrait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim MyCheck
    MyCheck = "aBBBa" Like "a*a"    ' Renvoie True.
    MyCheck = "F" Like "[A-Z]"    ' Renvoie True.
    MyCheck = "F" Like "[!A-Z]"    ' Renvoie False.
    MyCheck = "a2a" Like "a#a"    ' Renvoie True.
    MyCheck = "aM5b" Like "a[L-P]#[!c-e]"    ' Renvoie True.
    MyCheck = "BAT123khg" Like "B?T*"    ' Renvoie True.
    MyCheck = "CAT123khg" Like "B?T*"    ' Renvoie False.

  17. #17
    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
    Re, bref qqch comme ceci
    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
    Option Explicit
     
    Sub TestListeFichiers()
    Dim Dossier As String, sRch As String
     
        'Définit le répertoire pour débuter la recherche de fichiers.
        '(Attention à ne pas indiquer un répertoire qu contient trop de sous-dossiers ou de
        'fichiers, sinon le temps de traitement va être très long).
        Dossier = "C:\Faq\Faq VBA\Exemples"
        sRch = "*ess*.pdf"
     
        Columns("A:E").Delete Shift:=xlUp
        ListeFichiers Dossier, sRch
     
        'Ajuste la largeur des colonnes A:E en fonction du contenu des cellules.
        Columns("A:E").AutoFit
        Application.StatusBar = "Terminé"
    End Sub
     
    Sub ListeFichiers(Repertoire As String, sNomRch As String)
    Dim Fso As Object    'Scripting.FileSystemObject
    Dim SourceFolder As Object    'Scripting.Folder
    Dim SubFolder As Object    'Scripting.Folder
    Dim FileItem As Object    'Scripting.File
    Dim i As Long
     
        Set Fso = CreateObject("Scripting.FileSystemObject")
        Set SourceFolder = Fso.GetFolder(Repertoire)
     
        'Récupère le numéro de la dernière ligne vide dans la colonne A.
        i = Range("A" & Rows.Count).End(xlUp).Row + 1
     
        'Boucle sur tous les fichiers du répertoire
        For Each FileItem In SourceFolder.Files
            'Inscrit le nom du fichier dans la cellule
            If FileItem.Name Like sNomRch Then
                Cells(i, 1) = FileItem.Name
                ActiveSheet.Hyperlinks.Add Anchor:=Cells(i, 1), _
                                           Address:=FileItem.ParentFolder & "\" & FileItem.Name
                '            'Indique la date de création
                '            Cells(i, 2) = FileItem.DateCreated
                '            'Indique la date de dernier acces
                '            Cells(i, 3) = FileItem.DateLastAccessed
                '            'Indique la date de dernière modification
                '            Cells(i, 4) = FileItem.DateLastModified
                '            'Nom du répertoire
                '            Cells(i, 5) = FileItem.ParentFolder
     
                i = i + 1
            End If
        Next FileItem
     
        For Each SubFolder In SourceFolder.subfolders
            ListeFichiers SubFolder.Path, sNomRch
        Next SubFolder
    End Sub
    Images attachées Images attachées  

  18. #18
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2015
    Messages : 50
    Points : 31
    Points
    31
    Par défaut
    Ta fonction fonctionne merci. Je vais pouvoir avancer

    J'étais resté sur le nom approximatif ...

    Je vais devoir étudier cette histoire de like *

    Car tout ce que je tente ne marche pas par 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
    15
    16
    17
    18
    19
    Sub recherche()
        Dim i As Integer
        Dim celluleValue As String
     
        Do
            i = i + 1
     
        If celluleValue Like "*noise*" Then
        celluleValue = True
     
     
                Else
        celluleValue = False
     
         End If
        Loop While celluleValue = True
     
        MsgBox "Trouvé ligne " & i
    End Sub
    C'est le dernier message après je passe en résolu mais j'aimerais comprendre

  19. #19
    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
    Re, dans le code du post 17, il y a sRch = "*ess*.pdf"

  20. #20
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2015
    Messages : 50
    Points : 31
    Points
    31
    Par défaut
    j'ai essayé *noise*.pdf

    c'est pareil il me trouve toujours la première ligne, je me poserai la tête dessus quand je reviendrai en France. Ca sera plus simple avec l'aide (et un clavier AZERTY <3 )

    Ton code marche parfaitement, je te remercie *1000
    Bonne journée

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

Discussions similaires

  1. Réponses: 16
    Dernier message: 22/12/2015, 08h12
  2. Réponses: 2
    Dernier message: 08/10/2015, 09h07
  3. Réponses: 11
    Dernier message: 31/07/2015, 14h52
  4. [VBA] Ouverture d'un fichier PDF à une page précise
    Par jambon_beurre dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 12/09/2013, 13h32
  5. Ouvrir un fichier pdf avec Access VBA
    Par dflamme dans le forum VBA Access
    Réponses: 29
    Dernier message: 14/10/2008, 11h41

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