Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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... 🙂

Re

Il semblerait que tu n'as pas compris le fonctionnement de la macro 🙄

As-tu au moins été voir dans l'aide de VBA ?

Ou tu peux aussi suivre cette piste (adaptée et inspirée de l'aide VBA d'Excel )

Car l'exemple est question y est expliqué.
 
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... 🙂

Rebonsoir staple,
Même si perso je continue à l'utiliser, j'ai du laisser tomber FileSearch (snif) pour les pb de compatibilité que ça engendre.
A+
kjin
 
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
 
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
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…