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

Rechercher le plus grand nom de fichier...

  • Initiateur de la discussion Initiateur de la discussion mikael2235
  • 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 !

mikael2235

XLDnaute Occasionnel
Bonjour à tous,

Je voudrais faire une macro qui recherche dans le même répertoire que mon fichier excel lui même, le plus grand fichier avec l'extension DPT


exemple de nom de fichier :

1.DPT
23.DPT
674.DPT
8795.DPT

Exemple de résultat, dans ce cas, 8795

Merci pour votre aide, parce que je ne vois pas comment faire.

Mikael
 
Re : Rechercher le plus grand nom de fichier...

bonjour,

voici une macro à tester :

Code:
Sub tt()
Dim myFso As Scripting.FileSystemObject
Dim myFolder As Scripting.Folder
Dim curFile As File
Dim nomFichier As String: nomFichier = ""

Set myFso = CreateObject("Scripting.FileSystemObject")
Set myFolder = myFso.GetFolder(ThisWorkbook.Path)

For Each curFile In myFolder.Files
    If UCase(Right(curFile.Name, 3)) = "DPT" And Len(Left(curFile.Name, Len(curFile.Name) - 4)) > Len(nomFichier) Then nomFichier = Left(curFile.Name, Len(curFile.Name) - 4)
Next curFile

MsgBox nomFichier
End Sub

a+
 
Re : Rechercher le plus grand nom de fichier...

Bonjour le fil, bonjour le forum,

Mikael, moi j'avais plutôt compris comme ça :
Code:
Sub Macro1()
Dim chemin As String 'déclare la variable chemin
Dim fs, f, f1, fc 'déclare les variables fs, f, f1, fc, s
Dim nval As Integer 'déclare la variable nval
Dim x As Integer 'déclare la variable x
chemin = ThisWorkbook.Path 'définit la variable chemin
Set fs = CreateObject("Scripting.FileSystemObject") 'définit la variable fs
Set f = fs.GetFolder(chemin) 'définit la variable f
Set fc = f.Files 'définit la variable fc
For Each f1 In fc 'boucle sur tous les fichiers du dossier
    On Error GoTo suite 'génère une erreur si le nom du fichier n'est pas convertible en entier (va à l'étiquette "suite"
    nval = CInt(Left(f1.Name, Len(f1.Name) - 4)) 'définit la variable nval
    If nval > x Then x = nval 'définit la variable x (la plus grande valeur de nval)
suite: 'étiquette
Next f1 'prochain fichier du dossier
MsgBox x 'affiche la plus grande valeur (tu adapteras pour récupérer cette valeur...)
End Sub

À simplifier avec le début de code de JB peut-être pour plus d'efficacité.
 
Re : Rechercher le plus grand nom de fichier...

BOISGONTIER, il me revoie dans la MsgBox 1752DPT.DPT alors que mon plus grand fichier est le 6743.DPT


mromain, la macro me renvoie une erreur de compilation, Type défini par l'utilisateur non défini à la 2eme ligne
Code:
Dim myFso As Scripting.FileSystemObject

Merci
 
Re : Rechercher le plus grand nom de fichier...

Bonjour le fil, bonjour le forum,

Mikael, moi j'avais plutôt compris comme ça :

À simplifier avec le début de code de JB peut-être pour plus d'efficacité.

Robert, il me renvoie l'erreur d'execution "13" : Incompatibilité de type
Code:
nval = CInt(Left(f1.Name, Len(f1.Name) - 4)) 'définit la variable nval
 
Re : Rechercher le plus grand nom de fichier...

re


à tester comme ça :

Code:
Sub tt()
[B]Dim myFso
Dim myFolder[/B]
Dim curFile As File
Dim nomFichier As String: nomFichier = ""

Set myFso = CreateObject("Scripting.FileSystemObject")
Set myFolder = myFso.GetFolder(ThisWorkbook.Path)

For Each curFile In myFolder.Files
    If UCase(Right(curFile.Name, 3)) = "DPT" And Len(Left(curFile.Name, Len(curFile.Name) - 4)) > Len(nomFichier) Then nomFichier = Left(curFile.Name, Len(curFile.Name) - 4)
Next curFile

MsgBox nomFichier
End Sub

a+
 
Re : Rechercher le plus grand nom de fichier...

Bonjour le fil, bonjour le forum,

ma proposition modifiée...

Code:
Sub Macro1()
Dim chemin As String
Dim fs, f, f1, fc, s
chemin = ThisWorkbook.Path
Dim nval As Integer
Dim x As Integer
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder(chemin)
Set fc = f.Files
For Each f1 In fc
    If Ucase(Right(f1.Name, 3)) <> "DPT" Then GoTo suite
    On Error Resume Next
    nval = CInt(Left(f1.Name, Len(f1.Name) - 4))
    If nval > x Then x = nval
suite:
On Error GoTo 0
Next f1
MsgBox x
End Sub
 
Dernière édition:
Re : Rechercher le plus grand nom de fichier...


Robert, toutes mes félicitations, le résultat est bon mais il met environ 1 minutes 30 à trouver....
Autrement je voudrais que le résultat s'affiche dans la cellule A1 au lieu de dans la MsgBox.

Est-il possible de faire en sorte que la macro s'execute à l'ouverture du fichier ?
 
Dernière édition:
Re : Rechercher le plus grand nom de fichier...

Bonjour,

Tu peux réduire la durée de ta macro en "réduisant" l'espace de recherche avant que ta macro ne démarre la boucle ...
A toi de définir, compte tenu de ce que contient ton répertoire les bons critères ...

Oui, pour lancement automatique à l'ouverture ...dans ThisWorkbook,
Code:
Private Sub Workbook_Open()

A +
 
Re : Rechercher le plus grand nom de fichier...

Bonjour,
Je voudrais faire une macro qui recherche dans le même répertoire que mon fichier excel lui même, le plus grand fichier avec l'extension DPT
Comprends pas !
Avec le code de JB, moins d'une fraction de seconde sur 500 fichiers testés
Maintenant, une précision concernant le fichier "1752DPT.DPT" serait bienvenue
A+
kjin
 
- 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
1
Affichages
189
Réponses
4
Affichages
339
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…