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 :

A propos de : lister les fichiers d'un répertoire


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 33
    Par défaut A propos de : lister les fichiers d'un répertoire
    Bonsoir,
    votre fonction pour trier les fichiers d'un répertoire sur http://excel.developpez.com/sources/...ersDecroissant
    fonctionne très bien, par contre je ne vois pas quelle ligne modifier pour qu'il copie le résultat qu'à partir de la 2ème ligne, la 1ere étant réservée aux intitulés.
    merci d'avance !

  2. #2
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Bonjour,

    il suffit de lire les commentaires ... en vert ... tu trouveras les lignes de codes qui copies les données sur la feuille excel...

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 33
    Par défaut
    Bonsoir, j'ai bien vu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    '--- Transfère les données dans la feuille de calcul ---
     
     
        'Sélection d'une cellule (calculée par rapport à la cellule active actuelle)
     
     
       For i = 1 To m
     
            Cells(i, 1) = Tableau(1, i)
            Cells(i, 2) = Tableau(2, i)
        Next i
    seulement si je fais appel à vous c'est pour vous demander de l'aide pas pour relire !
    j'ai essayé avec des active offset, etc.... rien à faire
    excusez mon agressivité, mais à chaque fois que je pose une question, j'ai l'impression de déranger or je croyais être sur un forum d'entraide.

    je me suis peut-être trompée..
    je demande juste l'explication pour un débutant, maintenant il faut me dire si les débutants n'ont pas le droit de poster et d'apprendre ce que je peux comprendre...

  4. #4
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Bonsoir,

    ben maintenant tu as trouvé que cela venait de cells ... utilise ta souris pour poser le curseur sur Cells dans ton éditeur VBA puis appuis sur

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 33
    Par défaut
    j'avais déjà trouvé que ça venait de cells, mais j'appuie sur F1 et rien !

    Nom : aide f1.png
Affichages : 1062
Taille : 220,1 Ko

  6. #6
    Invité
    Invité(e)
    Par défaut
    Salut

    Il y a écrit ce qu'il faut faire, écrire dans la zone de recherche.

    Qu'elle est ta version d'Excel ? Est-ce que tout a été installé correctement ?

    Philippe

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 33
    Par défaut
    merci pour vos réponses,
    je suis sous office 2010
    ce que je voudrais, sans vouloir déranger qui que ce soit, c'est savoir comment lui dire pour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     For i = 1 To m
     
            Cells(i, 1) = Tableau(1, i)
            Cells(i, 2) = Tableau(2, i)
        Next i
    qu'il copie le résultat qu'à partir de la ligne 2,

    personne ne veut révéler ce secret ? et expliquer (i, 1) (i, 2)
    je suppose que 1 est la colonne 1 et 2 la colonne 2 j'ai donc essayé i+1, idem

    ( j'ai essayé aussi decaler....)

  8. #8
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut
    Bonjour
    d'apres ce je vois je crois que tu a office 2007 plus ou 2010
    et en effet depuis une mise a jour ( je ne sais plus la quelle) j'ai le même soucis
    avant taper sur f1 nous amenait directement dans les références du développeur
    ce n'ai plus le cas maintenant
    suit les instruction de la capture
    Nom : Capture.JPG
Affichages : 1249
Taille : 86,4 Ko
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  9. #9
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Citation Envoyé par grib1903 Voir le message
    ... j'ai donc essayé i+1, ..
    c'est la réponse ... mais tu ne dois touché qu'au i de la collection Cells..

    si cela ne fonctionne pas montre nous ton code modifié ...

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 33
    Par défaut
    voici le code modifié (et qui ne veut pas recopier à partir de la ligne 2 :

    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
    Function triDecroissant_Fichiers_DateDreation()
        Dim Fichier As String, Chemin As String
        '
        'Nécessite d'activer la référence "Microsoft Scripting RunTime"
        '
        Dim Fso As Scripting.FileSystemObject
        Dim FileItem As Scripting.File
        Dim Tableau()
     
        Dim m As Integer, i As Integer
        Dim z As Byte, Valeur As Byte
        Dim Cible As Variant
     
        '---liste les fichiers du répertoire ---
        Chemin = "F:\MonDossier"
        Fichier = Dir(Chemin & "\*.*")
        'pour filtrer sur un type de fichiers (par exemple xls)
        'Fichier = Dir(Chemin & "\*.xls")
     
        'Boucle sur les fichiers
        Do
     
            m = m + 1
            ReDim Preserve Tableau(2, m)
            Tableau(1, m) = Fichier
     
            Set Fso = CreateObject("Scripting.FileSystemObject")
            Set FileItem = Fso.GetFile(Chemin & "\" & Fichier)
     
            'Récupère la date de création
            Tableau(2, m) = Left(FileItem.DateCreated, 10)
            'Pour récupérer la date de dernière modification
            'Tableau(2, m) = Left(FileItem.DateLastModified, 10)
            'Pour récupérer la taille du fichier
            'Tableau(2, m) = Left(FileItem.Size, 10)
     
            Fichier = Dir
        Loop Until Fichier = ""
     
     
        '---Trie les fichiers par ordre décroissant de création ---
        Do
            Valeur = 0
            For i = 1 To m - 1
                If CDate(Tableau(2, i)) < CDate(Tableau(2, i + 1)) Then
                    For z = 1 To 2
                        Cible = Tableau(z, i)
                        Tableau(z, i) = Tableau(z, i + 1)
                        Tableau(z, i + 1) = Cible
                    Next z
     
                    Valeur = 1
                End If
            Next i
        Loop While Valeur = 1
     
     
        '--- Transfère les données dans la feuille de calcul ---
     
     
        'Sélection d'une cellule (calculée par rapport à la cellule active actuelle)
     
     
       For i = 1 To m
     
            Cells(i + 1, 1) = Tableau(1, i)
            Cells(i + 1, 2) = Tableau(2, i)
        Next i
     
     
        'Pour transférer par ordre croissant:
        'For i = m To 1 Step -1
            'Cells(m - i + 1, 1) = Tableau(1, i)
            'Cells(m - i + 1, 2) = Tableau(2, i)
        'Next i
     
        'Ajuste la taille des colonnes
        Columns("A:B").AutoFit
    End Sub
    merci d'avance pour votre aide !

  11. #11
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    je ne vois pas de problème dans ton code tu devrais effacer ta feuille et re-tester..

    le seul truc qui me gêne c'est de travailler sur la feuille active .. cela est quelque fois source de problèmes ... tu devrai préciser la feuille devant tous tes objets range, Cells ou Columns...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ThisWorkBook.WorkSheets("MAFEUILLE").Cells(i + 1, 1) = Tableau(1, i)
            ThisWorkBook.WorkSheets("MAFEUILLE").Cells(i + 1, 2) = Tableau(2, i)

  12. #12
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    si je suis le raisonnement de ton code et vu que ton tableau visiblement n'a que2 ligne et X colonnes et que apparament tu veux le transposer verticalement
    Tableau(1, i)
    Tableau(2, i)

    tu devrais faire une recherche sur l'expression application.transpose pour transposer le tableau complet en une fois


    ou si ton tableau si tu veux poser ton tableau dans son même sens
    exemple si ton tableau fait 2 ligne sur 10 colonnes et que tu veux copier le tableau a partir de la ligne 2 du sheets

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cells.(2,1).resize(2,10)=tableau
    maintenant si ton tableau est verticale(10 lignes sur 2 colonnes) et que tu le veux horizontal sur ton sheets sur 2 lignes
    se sera
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cells.(2,1).resize(2,10)=application.transpose(tableau)
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 33
    Par défaut
    Merci,
    je vais essayer cela, mais à priori, ( je n'ai essayé que sur ces fameux cells, ça ne fonctionne pas , il recopie à partir de A1, au lieu de A2 ), ça ne fonctionne pas...

  14. #14
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    d'autre confirmeront ou infirmeront qu'il y a un manque ici voir une erreur sur l'indexation

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ReDim Preserve Tableau(2, m)
    cela implique que tu 3 ligne dans ton tableau

    ReDim Preserve Tableau(0 to1, 0 to m)

    la premiere ligne d'un tableau etant la ligne 0 et pareil pour la colonne

    a moins d'avoir spécifié en haut de module (avant les macros) "option base 1"
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  15. #15
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Citation Envoyé par grib1903 Voir le message
    Merci,
    je vais essayer cela, mais à priori, ( je n'ai essayé que sur ces fameux cells, ça ne fonctionne pas , il recopie à partir de A1, au lieu de A2 ), ça ne fonctionne pas...
    ...? tu devrai revoir tes essais .... Cells( NUMERO_DE_LIGNE , NUMERO_COLONNE) .. .ta boucle For i = 1 donc si tu écris ThisWorkBook.Worksheets("MAFEUILLE").CELLS (I +1 , tu commence en ligne 2 de ta feuille ...

  16. #16
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    tiens essaie celui la
    remplace le chemin en rouge et l'index du sheets en vert par le nom de ton sheets ou son index

    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
    Option Base 1
    Sub triDecroissant_Fichiers_DateDreation()
        Dim Fichier As String, Chemin As String, Fso As Object, FileItem As Object, Tableau(), m As Long, i As Long
        'Nécessite  pas d'activer la référence "Microsoft Scripting RunTime" EN LATE BINDING!!!!!!!
        Set Fso = CreateObject("Scripting.FileSystemObject")
        '---liste les fichiers du répertoire ---
        Chemin = "H:\diverse image\bateau"
        Fichier = Dir(Chemin & "\*.*")
        'Boucle sur les fichiers
        Do
            Set FileItem = Fso.GetFile(Chemin & "\" & Fichier)
            m = m + 1
            ReDim Preserve Tableau(2, m)
            Tableau(1, m) = Fichier: Tableau(2, m) = Left(FileItem.DateCreated, 10)
            Fichier = Dir
        Loop Until Fichier = ""
        For i = 1 To m - 1
        temp1 = Tableau(1, i + 1): temp2 = Tableau(2, i + 1)
        If Tableau(2, i + 1) < Tableau(2, i) Then
        Tableau(1, i + 1) = Tableau(1, i): Tableau(2, i + 1) = Tableau(2, i)
        Tableau(1, i) = temp1: Tableau(2, i) = temp2
        End If
        Next
        
        Sheets(1).Cells(2, 1).Resize(m, 2) = Application.Transpose(Tableau)
      
        
    End Sub
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

Discussions similaires

  1. Lister les fichiers d'un répertoire dans une feuille Excel
    Par AlainTech dans le forum Contribuez
    Réponses: 7
    Dernier message: 15/02/2025, 18h06
  2. [C++/Unix] Lister les fichiers d'un répertoire
    Par bouazza92 dans le forum Linux
    Réponses: 5
    Dernier message: 10/12/2013, 23h07
  3. Lister les fichiers d'un répertoire (ordre alphabétique)
    Par Mysti¢ dans le forum Général Python
    Réponses: 2
    Dernier message: 15/01/2007, 18h10
  4. lister les fichiers d'un répertoire et les ouvrir
    Par thong36 dans le forum Langage
    Réponses: 1
    Dernier message: 18/10/2006, 11h43
  5. [CF][PPC/C#] Comment lister les fichiers d'un répertoire ?
    Par dady dans le forum Windows Mobile
    Réponses: 18
    Dernier message: 20/05/2005, 15h35

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