XL 2010 extraction d'une partie de nom de fichier

herve62

XLDnaute Barbatruc
Bonsoir
Quel serait pour vous le code le plus simple pour récupérer en vba une partie de nom de fichier
j'ai x fichiers dont le nom est
Jeux Liste 1 - 20.xlsx
Jeux Liste 21 - 40.xlsx
Jeux Liste 41 - 60.xlsx
.....
Jeux Liste 121 - 140.xlsx

Il me faudrait récupérer en temps que string la partie par exemple "1 - 20" ; "41 - 60" , "121 - 140" ..etc
Vu que c'est variable en longueur entre 6 et 9 .. ??? avec les espaces plus les digits de 1 à 3
Vous me direz on peut retirer les espaces .. Oui , mais pas les digits !!
je pense que cela ira plus vite avec vos avis
merci
 

herve62

XLDnaute Barbatruc
Re, bsr tous
merci , mais rien ne va !!
je suis dans des sub VBA avec récup de données de X fichiers xlsx
mes onglets ont le nom de la partie string que je veux récupérer "1 -20" pour "Jeu Liste 1 -20.xlsx"
ou " 21 - 40" pour "Jeu Liste 21 - 40.xlsx" le max est du genre "Jeu Liste 121 - 140.xlsx" pour que je récupère
"121 - 140"
 
merci , mais rien ne va !!
je suis dans des sub VBA avec récup de données de X fichiers xlsx
mes onglets ont le nom de la partie string que je veux récupérer "1 -20" pour "Jeu Liste 1 -20.xlsx"
j'ai x fichiers dont le nom est
Jeux Liste 1 - 20.xlsx
Jeux Liste 21 - 40.xlsx
Jeux Liste 41 - 60.xlsx
Re,

C'est sûr que si les noms des fichiers changent entretemps ! 😇
Le code Vba que je t'ai donné extrait bien la bonne chaîne d'après les noms donnés en post #1.
Sans titre.png

VB:
Function Extract_Donnees$(ByVal Nom_Fichier$)
Extract_Donnees = Mid$(Nom_Fichier, 12, InStr(12, Nom_Fichier, ".") - 12)
End Function
Bien sûr, si tu changes jeux en jeu, il faut aussi changer la formule
Code:
Function Extract_Donnees$(ByVal Nom_Fichier$)
Extract_Donnees = Mid$(Nom_Fichier, 11, InStr(11, Nom_Fichier, ".") - 11)
End Function
 
re,

sinon, avec une boucle pour détecter le premier caractère numérique

Cordialement, @+
Sans titre.png

VB:
Function Extract_Donnees$(ByVal Nom_Fichier$)
Dim Compteur%, Compteur2 As Byte
Compteur = Len(Nom_Fichier)
For Compteur2 = 0 To 9
    If InStr(1, Nom_Fichier, Compteur2) Then Compteur = Application.Min(Compteur, InStr(1, Nom_Fichier, Compteur2))
Next Compteur2
Extract_Donnees = Mid$(Nom_Fichier, Compteur, InStr(Compteur, Nom_Fichier, ".") - Compteur)
End Function
 

Pièces jointes

  • Exemple_Herve62.xlsm
    15 KB · Affichages: 7

herve62

XLDnaute Barbatruc
Mid$(Nom_Fichier, 12, InStr(12, Nom_Fichier, ".") - 12)
j'ai fait Liste= ta formule
Le code Vba que je t'ai donné extrait bien la bonne chaîne d'après les noms donnés en post #1.
non moi j'ai comme image ?


C'est sûr que si les noms des fichiers changent entretemps !
FAUT pas pinailler si j'ai oublié un "x" en tapant jeu !!!!!!!!!!!!!!!!!!!!

ENFIN Je rappelle que je suis dans une appli 100% VBA donc fonction INUTILE
 

Pièces jointes

  • liste.jpg
    liste.jpg
    20.3 KB · Affichages: 4
Dernière édition:

herve62

XLDnaute Barbatruc
Bonsoir Luc , ta fonction tu la met OU ?? je suis en VBA PUR !
je t'ai mis un fichier en démo sur le post #7 , pas de raison que cela ne fonctionne pas sous 2010.
Mais enfin !! je me fiche des cellules Excel moi j'en suis là dans mon code
VB:
 Liste = Mid$(Nom_proj(x), 12, InStr(12, Nom_proj(x), ".") - 12)
    
    With Worksheets("FICHE DINSCRIPTION À REMPLIR")
    
        For y = 3 To 7
        ThisWorkbook.Sheets(Liste).Range("B" & y) = .Range("B" & y)
        Next y
et donc Liste doit correspondre à ce que j'ai écrit avant
 
Mais enfin !! je me fiche des cellules Excel moi j'en suis là dans mon code
Décidément, j'ai fait la fonction personnalisée pour la démo, tu n'as pas fourni de fichier ni de code. Si elle renvoie la bonne valeur dans une cellule, elle renverra la bonne valeur dans Vba si tu l'utilise dans VBA. De toute façon, une fonction personnalisée, c'est du code Vba dans un module et tu peux directement le transposer dans ton code si tu préfères.
Oui, moi aussi ! 😩 😴

Bonne nuit
 

Discussions similaires

Haut Bas