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 :

Lister fichiers d'un dossier avec lien hypertexte


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
    Responsable d'exploitation informatique
    Inscrit en
    Janvier 2017
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Responsable d'exploitation informatique

    Informations forums :
    Inscription : Janvier 2017
    Messages : 19
    Par défaut Lister fichiers d'un dossier avec lien hypertexte
    Bonjour,

    Cela fait maintenant quelques temps que j’utilise Excel. Je me débrouille dans tout ce qui est formules. Mais maintenant, on me demande de faire des choses un peu plus poussé qui demande des connaissances en VBA, choses que je n’ai pas naturellement.
    Je comprends à peine les codes les plus simples que long peu trouver sur le net.

    Mon patron m’a demandé de créer un listing de tous les chantiers effectués depuis 2012 (date de la dématérialisation).
    Dans ce listing, doit figurer dans la même cellule le nom du fichier *.xlsm avec un lien hypertexte du pdf qui est déjà créé et classé par ordre alphabétique du nom des fichiers. Il faudrait également, d’autres informations comme le nom du client, le lieu etc… dans les cellules de droite.

    Il m’a demandé de faire cela au plus vite, sauf que manuellement, difficile de le faire rapidement vue qu’il y a + de 600 missions par an sur 4 ans XD (2400 fichiers à saisir). Il faut donc que je trouve un moyen qu’Excel le face à ma place par une commande VBA pour répondre à cette demande.

    J’ai regardé ce week-end sur la toile, les codes VBA existant. J’ai trouvé un truc qui fonctionne bien mais, je n’arrive pas à intégrer les liens hypertextes, ni à lui dire d’intégrer d’autres informations dans d’autres cellules.

    J’aime bien le code ci-dessous parce je le comprends un peu et j’ai réussi à lui faire afficher les fichiers toutes les 2 lignes (choses que j’ai besoin).
    Voici la base que j’ai adaptée :

    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
    Sub ListeFichiers()
    Application.ScreenUpdating = False
    Dim myPath As String, myFile As String
     
    myPath = ThisWorkbook.Path
    myFile = Dir(myPath & "\*.xlsm*")
     
    c = 4
    Do While myFile <> ""
        Cells(c, 1) = myFile
        myFile = Dir()
        c = c + 2
    Loop
     
    Dim myPathPDF As String, myFilePDF As String
     
    myPathPDF = ThisWorkbook.Path
    myFilePDF = Dir(myPath & "\*.pdf*")
     
    c = 5
    Do While myFilePDF <> ""
        Cells(c, 1) = myFilePDF
        myFilePDF = Dir()
        c = c + 2
    Loop
     
    End Sub
    J’ai essayé de faire fonctionner ce code mais, je n’arrive pas à le faire fonctionné pour mon travail.
    Les cellules fusionnées n’affichent que un fichier alors que pour le code il y en a 2. Les missions son divisé par 2 dans ce cas.

    http://excel.developpez.com/faq/?pag...riptingRuntime

    J’ai essayé sans succès d’intégrer le lien hypertexte mais, je ne sais pas pourquoi le code ne fonctionne pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ActiveSheet.Hyperlinks.Add Anchor:=Cells(c, 1), _
        Address:= myFile.ParentFolder & "\" & myFile.Name
    J’ai donc besoin de votre aide pour créer ce code VBA qui me facilitera grandement le travail demandé. La cerise sur le gâteau serait que même si des informations sont déjà listé, que le classeur reclasse tout seul la liste par ordre alphabétique.

    En vous remerciant d’avance pour votre aide.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Antibios Voir le message
    Bonjour,

    Il y a plusieurs réponses dans ce message proche de votre problème : recherche-formule

    Dans ma solution, on part d'une liste de fichiers dans une colonne et le répertoire des fichiers Pdf est connu. Le code reconstitue les liens.

    Cordialement.

  3. #3
    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
    Le code que tu montres (et qui, n'étant pas mis entre balises code, est pénible à suivre) :
    Recense sur les lignes paires tous les fichiers *.xlsm et sur les lignes impaires tous les fichiers *.pdf présents (tous) dans le dossier ayant pour chemin celui de ton application.
    Il est extrêmement risqué de procéder ainsi car :
    - d'une part : la fonction Dir "parcourt" comme ELLE l'entend et rien, avec ta méthode, ne permettrait d'affirmer que le .pdf recensé en ligne 7 correspond au .xlsm recensé en ligne 6
    - d'autre part : même si, par bonheur, le parcours se faisait dans le même ordre dans une séquence et l'autre, tu es soumis à deux aléas majeurs :
    ---- existence d'un .xlsm sans .pdf correspondant
    ---- existence d'un .pdf sans .xlsm correspondant
    Il te faut donc "tirer une croix" sur une telle méthode et lui en substituer une autre.
    Question (loin d'être inutile) : comment sont nommés les fichiers .pdf correspondant aux fichiers .xlsm ? Et cette règle de nommage est-elle TOUJOURS rigoureusement observée ?

  4. #4
    Membre averti
    Homme Profil pro
    Responsable d'exploitation informatique
    Inscrit en
    Janvier 2017
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Responsable d'exploitation informatique

    Informations forums :
    Inscription : Janvier 2017
    Messages : 19
    Par défaut
    Merci pour vos réponse. Désolé, j'ai oublier de mettre le code en balise.

    Unparia :

    Les fichiers on comme nom l'année, le mois, le jour, une lettre du nom du client et un lettre du lieu genre 15J0105TE.xlsm. Le pdf a exactement le même nom sauf avec l'extension .pdf.
    Si un fichier xlsm est créer automatiquement un fichier pdf de celui-ci existe dans le même dossier.
    Jusque la, j'ai de la chance avec mon code car tout les fichiers xlsm ont comme binôme le fichier pdf, mais si il manque l'un ou l'autre ça va effectivement posé problème.
    Malheureusement, pour le moment c'est la seul méthode que j'ai trouvé pour faire cette liste.

    Eric KERGRESSE
    Bonjour,
    Il y a plusieurs réponses dans ce message proche de votre problème : recherche-formule
    Dans ma solution, on part d'une liste de fichiers dans une colonne et le répertoire des fichiers Pdf est connu. Le code reconstitue les liens.
    Cordialement.
    je vais essayé ça dès demain.

    Voici mon code :
    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
    Sub ListeFichiers()
    Application.ScreenUpdating = False
    Dim myPath As String, myFile As String
     
    myPath = ThisWorkbook.Path
    myFile = Dir(myPath & "\*.xlsm*")
    c = 4
    Do While myFile <> ""
    Cells(c, 1) = myFile
    myFile = Dir()
    c = c + 2
    Loop
     
    Dim myPathPDF As String, myFilePDF As String
     
    myPathPDF = ThisWorkbook.Path
    myFilePDF = Dir(myPath & "\*.pdf*")
    c = 5
    Do While myFilePDF <> ""
    Cells(c, 1) = myFilePDF
    myFilePDF = Dir()
    c = c + 2
    Loop
     
    End Sub
    Je reste à l'écoute pour d'autres idées.

  5. #5
    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
    Les fichiers on comme nom l'année, le mois, le jour, une lettre du nom du client et un lettre du lieu genre 15J0105TE.xlsm. Le pdf a exactement le même nom sauf avec l'extension .pdf.
    C'est alors facile
    Jusque la, j'ai de la chance avec mon code car tout les fichiers xlsm ont comme binôme le fichier pdf, mais si il manque l'un ou l'autre ça va effectivement posé problème.
    Malheureusement, pour le moment c'est la seul méthode que j'ai trouvé pour faire cette liste.
    ah bon ? Il suffit pourtant de peu.
    Tiens : à main levée et en reprenant la première partie de ton code (que j'indente et mets entre balises, hein ...):
    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
    Sub ListeFichiers()
      Application.ScreenUpdating = False
      Dim myPath As String, myFile As String
     
      myPath = ThisWorkbook.Path
      myFile = Dir(myPath & "\*.xlsm*")
     
      c = 4
      Do While myFile <> ""
        Cells(c, 1) = myFile 
        cells(c+1,1) = replace(myfile,".xlsm", ".pdf")
        myFile = Dir()
         c = c + 2
      Loop
    end sub
    Edit : et bien que tu dises avoir toujours la correspondance .pdf :
    il serait très loin d'être idiot que de remplacer cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cells(c+1,1) = replace(myfile,".xlsm", ".pdf")
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if dir(replace(myfile,".xlsm", ".pdf")) <> "" then
     cells(c+1,1) = replace(myfile,".xlsm", ".pdf")
    end if

  6. #6
    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

    Salut Jacques !

    Le même sujet venant d'être ouvert sur un autre forum, ce n'est donc pas quelqu'un s'intéressant au code …

    _________________________________________________________________________________________________________
    Je suis Paris, Istanbul, Berlin, Nice, Bruxelles, Charlie, …

  7. #7
    Membre averti
    Homme Profil pro
    Responsable d'exploitation informatique
    Inscrit en
    Janvier 2017
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Responsable d'exploitation informatique

    Informations forums :
    Inscription : Janvier 2017
    Messages : 19
    Par défaut
    Ce n'est pas la bonne balise que j'ai mis?

    Merci pour c'est correction unparia. Je vais essayé aussi ça demain.
    Comme je ne peux pas essayé de suite, la correction du code met le lien du fichier?

Discussions similaires

  1. [XL-2010] lister les fichiers d'un dossier avec propriété "Author"
    Par MarcelG dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/02/2015, 11h49
  2. Lister fichier d'un dossier avec icone et lien direct contenu dans un cd
    Par TaurusCom dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 5
    Dernier message: 05/04/2014, 20h16
  3. [XL-2010] Renommer un fichier externe d'après cellules + lien hypertexte avec FSo MoveFile
    Par alzim dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 16/12/2013, 17h34
  4. Problème fichier avec liens hypertextes
    Par ElPibeOro dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 25/04/2012, 17h45
  5. charger un xml avec liens hypertextes
    Par lecirederf dans le forum Flash
    Réponses: 12
    Dernier message: 23/10/2006, 15h03

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