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-E] - ComboBox avec les derniers classeurs modifiés d'un répertoire


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué Avatar de Chewi
    Étudiant
    Inscrit en
    Septembre 2006
    Messages
    180
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2006
    Messages : 180
    Points : 138
    Points
    138
    Par défaut [VBA-E] - ComboBox avec les derniers classeurs modifiés d'un répertoire
    Bonjour le forum,

    J'essaie de réaliser un code qui me permettrait à l'initialisation de ma UserForm de mettre dans ma ComboBox les 5 derniers clsseurs modifiés d'un répertoire.

    J'essaie ceci mais il ne me renvoie pas les derniers modifiés:

    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
    Private Sub UserForm_Initialize()
    Dim Fs As FileSearch
    Dim Dossier As String
    Dim I As Integer
    Dim VoirDir As String
    On Error Resume Next
    Set Fs = Application.FileSearch
    Dossier = "C:\Documents And Settings\Chewi\Desktop\ESSAIS"
    With Fs
    .NewSearch
    .Filename = "*.xls"
    .LookIn = Dossier
    .SearchSubFolders = False
    .Execute msoSortByLastModified, msoSortOrderAscending
    If .Execute > 0 Then
    With .FoundFiles
    For I = 1 To 5 '.Count
    UfCompleter.ComboBox1.AddItem Dir(.Item(I))
    Next I
    End With
    End If
    End With
    Set Fs = Nothing
    Dossier = ""
    End Sub
    Que j'essaie avec msoOrderAscending ou Descending, cela ne change rien aux valeurs renvoyées.

    Que n'ai-je de nouveau pas compris?

    Merci à vous

  2. #2
    Membre habitué Avatar de Chewi
    Étudiant
    Inscrit en
    Septembre 2006
    Messages
    180
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2006
    Messages : 180
    Points : 138
    Points
    138
    Par défaut
    Bonjour Ouskel'nord,

    Euh... non, c'est pas vraiment ce que je veux sinon ça, même moi, j'y serais (peut-être) arrivé.

    En quelque sorte, c'est le principe du RecentFile mais dans un fichier bien particulier.
    (Il y a d'autres fichiers plus récents mais pas dans le dossier de ma recherche.

    C'est pour cela que je pense être obligé de passer par les propriétés d'un fichier.

    Merci quand même

  3. #3
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Brut de décoffrage...
    Pas testé. Je me doute mais je ne sais même pas quels renseignements exacts il fournit... Mais ça a l'air d'être bien
    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
    Sub Fichier_InfosSur()  'SylkyRoad
    'testé avec Excel2002 & WinXP
    'necessite d'activer reference Microsoft Shell Controls and Automation
    Dim objShell As Shell
    Dim objFolder As Folder
    Dim strFileName As FolderItem
    Dim Chemin As String, Resultat As String
    Dim i As Byte
     
    'adapter le chemin et le nom du fichier
    Chemin = "C:\Documents and Settings\michel\dossier"
     
    Set objShell = CreateObject("Shell.Application")
    Set objFolder = objShell.NameSpace(Chemin)
    Set strFileName = objFolder.Items.Item("monimage.jpg")
     
    For i = 0 To 34
        If objFolder.GetDetailsOf(strFileName, i) <> "" Then _
            Resultat = Resultat & objFolder.GetDetailsOf(strFileName, i) & vbLf
    Next
    MsgBox Resultat
     
    End Sub
    Tu devrais pouvoir trouver ton bonheur parmi les infos qu'il donne
    A+

    Edit
    Désolé je viens de tester mais j'ai un pb avec Folder. A marche pas chez moi

    Corrigé le Endif

  4. #4
    Membre habitué Avatar de Chewi
    Étudiant
    Inscrit en
    Septembre 2006
    Messages
    180
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2006
    Messages : 180
    Points : 138
    Points
    138
    Par défaut
    Re Ouskel'nord,

    1) Pour info, le End If est inutile vu le _ après le then.

    2) N'est-il pas plus judicieux de passer par les propriétés avec FileSearch ?
    Comme avec le code que j'ai entamé ?

    3) Le code que tu me propose me donne effectivement des caractéristiques mais je dois préciser le nom de mon classeur et je n'ai en retour que les caractéristiques du dit fichier.
    Or, ici je veux faire en quelque sorte un scan de toutes les dates de modification des fichiers présents dans mon répertoire et faire ressortir les 5 fichiers les plus récents.

    Peux-tu me dire de quoi? Et principalement pour la 2 ?

    Je te remercie grandement,

    Chewi

  5. #5
    Membre habitué Avatar de Chewi
    Étudiant
    Inscrit en
    Septembre 2006
    Messages
    180
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2006
    Messages : 180
    Points : 138
    Points
    138
    Par défaut
    Bonjour à tous,

    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
    Sub RechercherFichiers()  'recherche des fichiers
    Dim MonRepertoire As String, Lr As Byte, fso As Object, fs As FileSearch
    Dim montableau(), i As Integer, j As Integer, k As Integer, temp
     
    Set fso = CreateObject("Scripting.FileSystemObject")
     
    Set fs = Application.FileSearch
     
    MonRepertoire = "C:\Documents and settings\Chewi\FichiersExcel"
     
    With fs
        .LookIn = MonRepertoire
        .Filename = "*.xls"
        If .Execute > 0 Then
        ReDim montableau(1 To .FoundFiles.Count, 1 To 2)
            For i = 1 To .FoundFiles.Count
                montableau(i, 1) = .FoundFiles(i)
                montableau(i, 2) = fso.GetFile(.FoundFiles(i)).DateLastModified
            Next i
        End If
    End With
     
    If fs.FoundFiles.Count < 1 Then Exit Sub    'précautions sinon erreur dans la boucle
                                                'quand égal à 0
    For i = LBound(montableau) To UBound(montableau)
        For j = LBound(montableau) To UBound(montableau)
            If montableau(i, 2) > montableau(j, 2) Then
                For k = LBound(montableau, 2) To UBound(montableau, 2)
                    temp = montableau(i, k)
                    montableau(i, k) = montableau(j, k)
                    montableau(j, k) = temp
                Next k
            End If
        Next j
    Next i
     
    For i = 1 To fs.FoundFiles.Count    'précaution si égal à 0 plus haut
        'Cells(i, 1).Value =
        UfCompleter.ComboBox1.AddItem Left(Right(montableau(i, 1), 34), 30)
        'Cells(i, 2).Value = montableau(i, 2)
        If i = 7 Then Exit For
    Next i
     
    End Sub
    Voici la solution pour ceux que ça intéresse, brodée autour d'un code trouvé sur int...

    Ouskel'nord, je crois cette méthode plus facile pour faire ce que je cherche.

    B à T

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

Discussions similaires

  1. lster userform.combobox avec les infos dans un autre classeur
    Par dkmix dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 08/10/2007, 23h53
  2. [VBA-E] Problème avec les zones de listes
    Par lucarno dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 23/05/2007, 19h34
  3. [VBA-E2000] Problème avec les signets (bookmarks)
    Par sat478 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 13/04/2006, 17h25
  4. [VBA-E]Jouer avec les chaines de caractere contenu ds cellu
    Par Tartenpion dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/02/2006, 14h15
  5. Réponses: 2
    Dernier message: 26/07/2004, 14h34

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