Repérer un fichier sur disque dur... :)

  • Initiateur de la discussion Initiateur de la discussion azerty6767
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

azerty6767

XLDnaute Junior
Chercher un fichier spécifique sur le disque dur..
Bonjour,

En VBA, je souhaite vérifier l'existence de fichiers nommés toto_rev0.xls, toto_rev1.xls, toto_rev2.xls... sur le disque dur, et surtout j'aimerais repérer le numéro de la dernière révision et stocker ce n° dans un "integer".

-----------------------------------------------------
Exemple (pour être plus clair)...

J'ai sur le PC :
C:\Test\toto_rev0.xls
C:\Test\toto_rev1.xls
C:\Test\toto_rev2.xls

Avec du code VBA, je souhaite repérer le fichier "toto_rev2.xls" (le n° de révision le plus grand, donc : 2), et stocker ce numéro dans un integer.


L'un de vous pourrait-il m'aider svp ?



D'avance merci,


Olivier
Dernière modification par azerty6767 ; Aujourd'hui à 07h
 
Re : Repérer un fichier sur disque dur... 🙂

Bonjour

1) Utilises la fonction Like
Code:
If NomFichier Like "toto*" then
2) Ou tu peux aussi suivre cette piste (adaptée et inspirée de l'aide VBA d'Excel )

Pré-requis pour tester la macro ci-dessous :
il faut 3 fichiers dans C:\TEMP
toto_v1.xls, toto_v2.xls, toto_v3.xls
Code:
Sub a()
Dim i As Long, j As Long, t()
With Application.FileSearch
    .NewSearch
    .LookIn = "C:\TEMP"
    .SearchSubFolders = False
    .Filename = "toto*"
    .FileType = msoFileTypeExcelWorkbooks '4
     If .Execute() > 0 Then
        MsgBox "There were " & .FoundFiles.Count & " file(s) found."
        ReDim t(1 To 3)
        For i = 1 To .FoundFiles.Count
           t(i) = Split(.FoundFiles(i), "v")(UBound(Split(.FoundFiles(i), "v")))
        Next i
    Else
        MsgBox "There were no files found."
    End If
End With
For j = 1 To 3
MsgBox Split(t(j), ".")(0)
Next
End Sub
 
Dernière édition:
Re : Repérer un fichier sur disque dur... 🙂

Merci JM,

Ton fichier fonctionne bien. Par contre, il ne fait pas ce que je souhaiterais 🙂

On doit pouvoir repérer le numéro le plus élevé de la révision, sans connaître - à priori - combien il y a de fichiers sur C:\Temp...

-- Exemple 1 :

C:\Temp\toto_rev0

--> VBA doit repérer le numéro "0" et le stocker dans un Integer.


-- Exemple 2 :

C:\Temp\toto_rev0
C:\Temp\toto_rev1
C:\Temp\toto_rev2
C:\Temp\toto_rev3
C:\Temp\toto_rev4
C:\Temp\toto_rev5

--> VBA doit repérer le numéro "5" et le stocker dans un Integer....



Merci d'avance,


🙂

Olivier
 
Re : Repérer un fichier sur disque dur... 🙂

Bonsoir


Ou tu peux aussi suivre cette piste (adaptée et inspirée de l'aide VBA d'Excel)
C'était pour t'inviter à mettre la main à la patte
pas pour te permettre d'attendre un solution clé en main

L'aide en ligne de VBA, le forum, le net regorgent de ressources insoupçonnées.

Faut se lancer dans l'arène et chercher à les exploiter.

Avec le code précédent , tu obtiens bien les chiffres contenu dans le nom des fichiers non ?

Et dans Excel, n'y a -t-il pas la fonction MAX pour trouver le plus grand nombre...? 🙄
 
Re : Repérer un fichier sur disque dur... 🙂

Bonjour

Pré-requis pour tester la macro ci-dessous :
il faut 3 fichiers dans C:\TEMP


Pour ce que je veux faire, je ne connais pas à l'avance le nombre de fichiers sur le disque.

Donc, faire une boucle i=1 à 3 n'a pas de sens ! 😉


Est-ce impossible à réaliser ?...

Merci d'avance pour vos bons conseils,



Olivier 🙂
 
Re : Repérer un fichier sur disque dur... 🙂

Bonsoir, hello staple,
A tester
Code:
Sub Ah_lala_lala()
Set fs = CreateObject("Scripting.FileSystemObject")
fichier = Dir("C:\Test\Toto_rev*.xls")
x = 0
On Error Resume Next
Do While fichier <> ""
    sF = fs.GetBaseName(fichier)
    Ta = Split(sF, "rev")
    If CInt(Ta(1)) > x Then x = CInt(Ta(1))
    fichier = Dir
Loop
MsgBox x

End Sub
A+
kjin
 
Re : Repérer un fichier sur disque dur... 🙂

Bonsoir Kjin (la simplicité dans sa beauté 🙂)

azerty6767
Désolé mon mon humeur badine 😀

Mais comme je viens de finir, je poste

Code:
Sub ab() [COLOR=Green]'le pinaillage dans son excès[/COLOR] :o
Dim i As Long, j As Long, k As Long, t(), LE_MAX, Ton_Chiffre As Integer
With Application.FileSearch
    .NewSearch
    .LookIn = "C:\TEMP"
    .SearchSubFolders = False
    .Filename = "toto*"
    .FileType = msoFileTypeExcelWorkbooks '4
     If .Execute() > 0 Then
        ReDim t(1 To .FoundFiles.Count)
        For i = 1 To .FoundFiles.Count
           t(i) = Split(.FoundFiles(i), "v")(UBound(Split(.FoundFiles(i), "v")))
        Next i
    Else
        MsgBox "Aucun fichier n'a été trouvé."
    End If
End With
LE_MAX = Split(t(UBound(t)), ".")(0)
Ton_Chiffre = MsgBox(vbTab & Val(LE_MAX) & Chr(13) & Chr(13) & " Un petit calcul pour finir ? ", vbInformation + vbYesNo, "Dernier numéro de révision")
If Ton_Chiffre = vbYes Then
For k = 1 To Val(LE_MAX)
MsgBox "On peut calculer avec ton MAX, non ..." & Chr(13) & vbTab & LE_MAX & "^" & k & " = " & LE_MAX ^ k, vbExclamation, "Salut , A+"
Next k
End If
End Sub
 
Dernière édition:
Re : Repérer un fichier sur disque dur... 🙂

Re


azerty6767
avec la méthode de Kjin(l'utilisation de fso -> Windows Script Host)

Tu pourrais avoir à accès des infos comme la date du dernier enregistrement d'un fichier (en somme la dernière révision )

Ou même sans WSH

Il y aussi cette possibilité (toujours issue de l'aide VBA)

FileDateTime, fonction
FileDateTime, fonction, exemple
Cet exemple utilise la fonction FileDateTime pour déterminer la date et l'heure de création ou de dernière modification d'un fichier. Le format de date et d'heure affiché est fonction des paramètres régionaux de votre système.
Dim MyStamp
' Suppose que la dernière modification du fichier FICHTEST a
' eu lieu le 12 février 1993 à 4:35:47. Suppose que les
' paramètres régionaux correspondent à Français (standard).
MyStamp = FileDateTime("FICHTEST") ' Renvoie "12/2/93 4:35:47".
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
7
Affichages
617
Retour