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 :

Code pour trouver le dossier le plus récent


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 23
    Par défaut Code pour trouver le dossier le plus récent
    Bonjour à tous,

    Je cherche à réaliser une petite macro en langage VBA pour Excel afin de me faciliter la tache au quotidien.

    Le but de ma macro est d'ouvrir un fichier Excel automatiquement, voici mon problème :

    Je doit ouvrir le dossier le plus récent dans une liste de dossier C:\trblolo\dossier le plus récent

    Ensuite je dois ouvrir le fichier *.xls le plus récent qui se trouve dans ce dossier C:\trblolo\dossier le plus récent\fichier.xls le plus récent.

    Je ne trouve pas la solution à ce problème, pouvez vous m'aider s'il vous plaît

    A bientôt j'espère.

  2. #2
    Membre émérite
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Par défaut
    bonjour, cherche du coté de FileDateTime

    ou sinon, j'ai retrouvé une macro toute prête qui pourra t'aider
    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
    Option Explicit
    Dim i As Long, k As Long
    Public monTab2Dim() As Variant
    Sub essai()
    ListerFichiersDansDossier "Chemin_du_Dossier", True
       For i = 1 To UBound(monTab2Dim, 2)
    Debug.Print "Fichier " & monTab2Dim(1, i) & " modifié le " & monTab2Dim(4, i)
    Next
    End Sub
     Sub ListerFichiersDansDossier(NomDossierSource As String, InclureSousDossiers As Boolean)
    'd'après une macro d' Ole P Erlandsen (modifié fs 11/8/01)
     
    Dim FSO As Object 'As Scripting.FileSystemObject
    Dim DossierSource  As Object 'As Scripting.Folder
    Dim SousDossier  As Object 'As Scripting.Folder
    Dim Fichier  As Object 'As Scripting.File
     
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set DossierSource = FSO.GetFolder(NomDossierSource)
     
     
    For Each Fichier In DossierSource.Files
    ' remplissage du tableau
       k = k + 1
       ReDim Preserve monTab2Dim(1 To 7, 1 To k)
       monTab2Dim(1, k) = Fichier.Name  'Fichier
       monTab2Dim(2, k) = Fichier.ParentFolder & Application.PathSeparator  'racine
       monTab2Dim(3, k) = Fichier.DateCreated 'date création
       monTab2Dim(4, k) = Fichier.DateLastModified  'date modification
       monTab2Dim(5, k) = ""
       monTab2Dim(6, k) = Round(Fichier.Size / 1024, 1)  'taille du fichier
       monTab2Dim(7, k) = Fichier.Type  'type de fichier
    Next Fichier
     
    If InclureSousDossiers Then
       For Each SousDossier In DossierSource.SubFolders
          ListerFichiersDansDossier SousDossier.Path, True
       Next SousDossier
    End If
     
    Set Fichier = Nothing
    Set DossierSource = Nothing
    Set FSO = Nothing
    End Sub
    Cordialement

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 23
    Par défaut
    Merci pour cette réponse

    Mais je ne comprend pas très bien le code, je suis débutant en VBA, j'ai fait une petite formation surtout pour aborder le langage.

    Pourrais -tu m'expliquer un peux s'il te plaît ?

    Merci d'avance

  4. #4
    Membre émérite
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Par défaut
    re

    quelle partie du code ne comprends tu pas?
    fred

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 23
    Par défaut
    En fait, il y a pas mal de choses que je ne comprends pas :

    J'ai transférer ce code brut sans modifications dans mon excel et il me fait une erreur de compilation (variable non définie) et cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sub ListerFichiersDansDossier(NomDossierSource As String, InclureSousDossiers As Boolean)
    est surlignée en jaune.
    Le message d'erreur indique erreur de compilation variable non définie et la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ReDim Preserve monTab2Dim (1 To 7, 1 To k)
    est surligné en bleu


    Des commentaires sur le déroulement de ce code pourrais m'aider en fait.

    Il y a 2 sub aussi sa me trouble un peu !

    Désolé d'être lourd, mais je ne comprends pas trop en fait.

    Merci.

  6. #6
    Membre émérite
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Par défaut
    bonjour,
    j'ai oublié de copier la zone de déclaration des variables, c'est ajouté au code (les 3 premières lignes).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Option Explicit
    Dim i As Long, k As Long
    Public monTab2Dim() As Variant
    Pour plus d'infos sur l'objet tu peux consulter l'article sur MSDN
    Utilisation du File System Object

    la macro ListerFichiersDansDossier est la macro qui liste les infos des fichiers d'un répertoire.

    La macro essai est celle qui lance la macro ListerFichiersDansDossie,
    tu dois renseigner les arguments:

    NomDossierSource : Une chaine qui représente le chemin de ton dossier.
    InclureSousDossiers une valeur booléenne soit False ou True (Faux ou Vrai)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub essai()
    ListerFichiersDansDossier "Chemin_du_Dossier", True
    'boucle dans le tableau
    For i = 1 To UBound(monTab2Dim, 2)
        'affichage du résultat dans la fenêtre Exécution de VBE
        Debug.Print "Fichier " & monTab2Dim(1, i) & " modifié le " & monTab2Dim(4, i)
    Next
    End Sub
    Cordialement

Discussions similaires

  1. Comment trouver la date la plus récente?
    Par shirya dans le forum Langage SQL
    Réponses: 2
    Dernier message: 07/05/2008, 15h59
  2. routine DOS pour sélectionnée le fichier le plus récent
    Par sofiane1111 dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 21/09/2007, 10h56
  3. Code pour verouiller un dossier sous Windows XP
    Par PHIL45 dans le forum Delphi
    Réponses: 2
    Dernier message: 26/12/2006, 13h01
  4. Trouver l'enregistrement le plus récent
    Par PrinceMaster77 dans le forum Langage SQL
    Réponses: 8
    Dernier message: 19/02/2005, 19h14

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