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 :

Listing Avancé de fichier contenus dans un dossier [XL-MAC 2016]


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
    Administrateur de base de données
    Inscrit en
    Mai 2019
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2019
    Messages : 14
    Par défaut Listing Avancé de fichier contenus dans un dossier
    Bonjour à tous,

    Je suis nouveau sur ce forum, et une bille en VBA.

    J'espère que vous allez pouvoir m'aider, je vais essayer d'être le plus précis possible.

    J'ai un tableau avec une colonne contenant des référence.
    J'ai un dossier avec des images portant des nom comme ceci : referenceXL.jpg, referenceXL_3.jpg .... etc...

    Mon objectif serait pour chaque ligne (et donc pour chaque référence), d'afficher la liste des images correspondant dans une autre cellule ainsi : reference.jpg;reference_2.jpg;reference_3.jpg etc...
    Je n'ai besoin que des noms de fichier, pas de lien ou chemin vers le fichier.

    A savoir : mon fichier Excel se trouve au même endroit que mon dossier contenant les images.


    Pourquoi ne pas simplement faire un "concatener" :
    Car en fait, sur certaines références il n'y a pas forcement le même nombre d'image.

    Il faut donc pour chaque référence, retrouver toutes les images dont le nom commence par la dite reference.


    J'espère que vous pourrez m'aider.

    Merci d'avance.

    Bien cordialement.

    Florian.

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Je n'ai pas d'expérience avec le Mac
    En VBA, la fonction Dir permet de faire cela. J'ai écrit une fonction utilisant Dir et qui renvoie une table contenant le nom des fichiers cherchés. Voir cette discussion nommée Ouvrir tous les fichiers d'un dossier

    Pour concaténer plusieurs chaînes de caractères. Il y a la fonction Join (pour concaténer les éléments d'une table) ou l'opérateur de concaténation (&)
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2019
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2019
    Messages : 14
    Par défaut
    Bonjour Philippe,

    Tout d'abord merci pour cette réponse aussi rapide.

    Cependant, comme je l'ai indiqué dans mon post initial, je suis une bille totale en VBA et j'avoue ne pas comprendre du tout votre fonction.
    Par ailleurs, je ne saurais la modifier pour l'adapter à mon cas. Elle semble pourtant bien répondre à une partie de mon problème.

    Merci

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Par ailleurs, je ne saurais la modifier pour l'adapter à mon cas.
    Et pourquoi pas ?

    Voici un exemple d'une procédure qui affiche tous les fichiers suffixés jpg présents dans le sous-répertoire Images dont le nom contient la chaîne de caractères présente dans la cellule A4 de la feuille active
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub TestFileList()
      Dim tbl(), Folder As String, SubFolder As String, Fullname As String, Elem As Integer
      Dim msg As String
      Folder = ThisWorkbook.Path      ' Répertoire où se trouve le classeur
      SubFolder = Folder & "\Images\"  ' Sous-répertoire où se trouve les images
      Fullname = SubFolder & "*" & Range("A4").Value & "*.jpg"
      tbl = FileList(Fullname)
      For Elem = 0 To UBound(tbl)
        msg = msg & vbCrLf & tbl(Elem)
      Next
      MsgBox msg
    End Sub
    Le code de la fonction FileList est affichée dans cette discussion

    Autre exemple qui écrit en cellule B4 de la feuille active les noms des fichiers jpg en les concaténant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub TestFileList()
      Dim tbl(), Folder As String, SubFolder As String, Fullname As String, Elem As Integer
      Dim msg As String
      Folder = ThisWorkbook.Path      ' Répertoire où se trouve le classeur
      SubFolder = Folder & "\Images\"  ' Sous-répertoire où se trouve les images
      Fullname = SubFolder & "*" & Range("A4") & "*.jpg"
      tbl = FileList(Fullname)
      Range("B4").Value = Join(tbl, "-")
    End Sub
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2019
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2019
    Messages : 14
    Par défaut
    Merci beaucoup philippe de prendre le temps de m'expliquer.

    J'ai adapté la fonction de manière à ce que ça corresponde à mes colonnes.
    Et ça fonctionne !

    Maintenant dernière étape, comment faire pour qu'elle fasse cela sur les 7000 lignes que j'ai ?
    Je suppose qu'il y a une boucle à faire ?

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Maintenant dernière étape, comment faire pour qu'elle fasse cela sur les 7000 lignes que j'ai ?
    Je suppose qu'il y a une boucle à faire ?
    Exactement

    Plusieurs possibilités dont voici un exemple de code qui lit toutes les cellules de la colonne A de la feuille nommée Feuil1 en supposant que la liste commence à la cellule A1 et que les étiquettes de colonne sont sur la ligne 1 (début de lecture en A2) et qu'il n'y a pas de cellules vides dans cette colonne.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub t()
      Dim rng As Range, r As Long
      Set rng = ThisWorkbook.Worksheets("Feuil1").Range("A1").CurrentRegion
      For r = 2 To rng.Rows.Count
       MsgBox rng.Cells(r, 1).Value
      Next
    End Sub
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

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

Discussions similaires

  1. [XL-2016] Sélectionner des fichiers contenus dans un dossier
    Par curt dans le forum Macros et VBA Excel
    Réponses: 30
    Dernier message: 26/04/2018, 19h31
  2. Réponses: 14
    Dernier message: 05/05/2014, 00h11
  3. Réponses: 6
    Dernier message: 26/03/2014, 15h20
  4. Réponses: 21
    Dernier message: 27/04/2013, 17h27
  5. Réponses: 2
    Dernier message: 21/10/2011, 14h11

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