Extraction données par VBA

Wolf1

XLDnaute Nouveau
Bonjour tout le monde,

Je voudrais créer une macro avec des sources modifiable avec une liste déroulante.
En gros, je voudrais aller chercher des données à partir d'onglets d'autres fichiers Excel mais ces fichiers changent de nom tous les trimestres et pour pouvoir aller pointer vers le bon fichier je voudrais créer une liste déroulante qui modifie automatiquement la macro.
Tout d'abord est-ce réalisable et si oui comment faire ?
Merci à tout le monde et parce qu'on est toujours en Janvier : Bonne année à vous.
 

p56

XLDnaute Occasionnel
Bonjour,
Une possibilité est de trouver le fichier le plus récent contenu dans un dossier donné et dont le nom contient une racine donnée. Par exemple pour afficher le fichier le plus récent du dossier "D:\XL\Forum" de mon PC, dont le nom contient le mot "Démo", je vais écrire :
VB:
Sub test()
    MsgBox Most_Recent("D:\XL\Forum", "Démo")
End Sub

' *****     Auteur : Pierre - P56 : http://tatiak.canalblog.com/
Function Most_Recent(Rep As String, Nm As String) As Variant
Dim Rp As Object, Item As Object, Tf(1 To 1, 1 To 2) As Variant

    Set Rp = CreateObject("Scripting.FileSystemObject").GetFolder(Rep)
    For Each Item In Rp.Files
        If InStr(Item.Name, Nm) > 0 And Item.DateLastModified > Tf(1, 2) Then
            Tf(1, 1) = Item.Name
            Tf(1, 2) = Item.DateLastModified
        End If
    Next Item
    Most_Recent = Tf(1, 1)
    Set Rp = Nothing
End Function
Est-ce que ça répond à la question?
P.
 

Wolf1

XLDnaute Nouveau
Bonjour,
Une possibilité est de trouver le fichier le plus récent contenu dans un dossier donné et dont le nom contient une racine donnée. Par exemple pour afficher le fichier le plus récent du dossier "D:\XL\Forum" de mon PC, dont le nom contient le mot "Démo", je vais écrire :
VB:
Sub test()
    MsgBox Most_Recent("D:\XL\Forum", "Démo")
End Sub

' *****     Auteur : Pierre - P56 : http://tatiak.canalblog.com/
Function Most_Recent(Rep As String, Nm As String) As Variant
Dim Rp As Object, Item As Object, Tf(1 To 1, 1 To 2) As Variant

    Set Rp = CreateObject("Scripting.FileSystemObject").GetFolder(Rep)
    For Each Item In Rp.Files
        If InStr(Item.Name, Nm) > 0 And Item.DateLastModified > Tf(1, 2) Then
            Tf(1, 1) = Item.Name
            Tf(1, 2) = Item.DateLastModified
        End If
    Next Item
    Most_Recent = Tf(1, 1)
    Set Rp = Nothing
End Function
Est-ce que ça répond à la question?
P.
Merci beaucoup P,
Je suis débutant, est-ce que tu pourrais me dire quelles sont les lignes à modifier ?
J'ai modifié le chemin et j'ai mis le nom complet de mon fichier. Lorsque je lance la macro j'ai un MsgBox avec le nom de mon fichier qui s'affiche mais il ne s'ouvre pas.
Ce que je voudrais dans l'idéal c'est que la macro récupère une cellule précise dans un autre fichier Excel, déjà si j'ai ça je peux faire en sorte que le nom du fichier ne change pas.
J'espère que tu vois ce que je veux dire...
Merci d'avance à toi ;p
 
Dernière édition:

p56

XLDnaute Occasionnel
Bonjour,
Déjà le code proposé fait ce qu'on lui demande c'est à dire d'afficher le dernier fichier particulier d'un dossier donné, et uniquement cette tâche.
Çà répond seulement à la question : "pouvoir aller pointer vers le bon fichier".
Pour la suite c'est une autre question. Mais à la lecture du message de 9h05, j'ai l'impression que le projet n'est pas clairement bien défini. Je passe donc mon tour pour la suite.
P
 

Discussions similaires

Réponses
2
Affichages
485

Statistiques des forums

Discussions
311 725
Messages
2 081 944
Membres
101 849
dernier inscrit
florentMIG