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

Travailler sur les fichiers excel dans le même dossier

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

N

nicolase78

Guest
Bonjour à tous,

J'ai un dossier avec des fichiers excel (ce dossier se situe dans le dossier dans lequel se situe le fichier excel sur lequel on travaille) commençant tous par :
"Commande" puis concaténer avec un numéro d'incrémentation (1,2,3,4...) ce qui donne:
- commande1.xslx
- commande2.xslx
- commande3.xlslx

Je voudrais récupérer dans une variable le dernier numéro dans l'exemple ci-dessus, 3. Si il n'y pas de fichier commençant par "commande" alors dans ce cas on récupère 0.

J'espère avoir été claire.

Merci pour votre aide.
 
Re : Travailler sur les fichiers excel dans le même dossier

Bonjour,
Testes
Code:
Dim fs, fld, f, n%
Set fs = CreateObject("Scripting.FileSystemObject")
Set fld = fs.GetFolder(ThisWorkbook.Path).Files
For Each f In fld
    If f.Name Like "Commande*" Then
        t = Split(fs.GetBaseName(f), "Commande")
        If t(1) > n Then n = t(1)
    End If
Next
MsgBox n
set fld = Nothing
Set fs = nothing
A+
kjin
 
Re : Travailler sur les fichiers excel dans le même dossier

Par contre j'essaie de voir si le nom du fichier excel n'est plus "commande" mais style "La commande " ce qui donnerait "La commande1", "La commande2"etc...

J'essaie de modifier mais j'arrive pas. J'ai une erreur au niveau de Split(fs.GetBaseName(f), "La commande")

Merci
 
Re : Travailler sur les fichiers excel dans le même dossier

Re,
Pour s'affranchir de la casse et des valeurs non numériques
Code:
Dim fs, fld, f, n%
Set fs = CreateObject("Scripting.FileSystemObject")
Set fld = fs.GetFolder(ThisWorkbook.Path).Files
For Each f In fld
    If UCase(f.Name) Like "LA COMMANDE*" Then
        t = Replace(UCase(fs.GetBaseName(f)), "LA COMMANDE", "")
        If t <> "" And IsNumeric(t) Then
            If t > n Then n = t
        End If
    End If
Next
MsgBox n
Set fld = Nothing
Set fs = Nothing
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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

C
Réponses
0
Affichages
696
Corentin.PL
C
S
Réponses
6
Affichages
3 K
Supreme84
S
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…