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

formule reprendre partie nom fichier

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

poolshen

XLDnaute Nouveau
Bonjour,

J'ai une règle de nommage sur le nom de mes fichiers, seulement le nombre de caractère peut varier.
Le nom des fichiers est caractérisé par

99999_999999_x(1à20)_A(3ou4).xlsx

j aimerai récupérer dans une cellule via une formule la dernière partie avant l'extension, je ne connais pas assez excel pour réaliser ca toute seule et meme apres une recherche sur le forum ou j ai trouvé d ailleurs beaucoup d'astuces intéressantes, je n'arrive pas par moi meme a résoudre ce problème.
trop de formule imbriquées les unes dans les autres. Je ne vous demande pas de me pondre la formule ( quoi que ca serait vraiment sympa) mais me donner un début de piste via les formules qui vont bien.

il me semble que je devrais rechercher le nom du fichier, puis rechercher par la droite les caractères compris entre le "_" et le "." pour les restituer.

La phrase est jolie mais si je la colle dans excel meme avec le signe égal devant il me sort une erreur!!!

merci de contribuer a ma recherche.

bonne semaine a tous!!
 
Re : formule reprendre partie nom fichier

Bonjour et bienvenu sur le forum,

Si je comprends tu souhaites obtenir A(3ou4) dans une cellule.
Cette chaine comporte-t-elle toujours 7 caractères ou est-elle variable ?
 
Re : formule reprendre partie nom fichier

Bonjour et bienvenu sur le forum,

Si je comprends tu souhaites obtenir A(3ou4) dans une cellule.
Cette chaine comporte-t-elle toujours 7 caractères ou est-elle variable ?

bonjour,

non en fait, lorsque j écirs 99999 cela signifie 5 caractères numériques
x pour alphanumérique et a pour alphabétique
ex : X(5) signifie 5 caractères alphanumériques
A(3ou4) signifie que ce que je souhaite récupérer peut contenir 3 ou 4 caractères alphabétiques, je ne le sais pas a l'avance. En fait je parametre une feuille Excel qui me sert de patron pour ne pas a avoir le cartouche a refaire pour les quelques milliers de classeurs excel à générer!

et merci de cette réponse si rapide, je vous souhaite un bon appétit.
 
Re : formule reprendre partie nom fichier

Re,

La fonction :
=CELLULE("nomfichier")
renvoie le chemin complet, du type :
D:\XLD\divers\[LeFichier.xls]Feuil1

Peux-tu spécifier, à titre d'exemple, le chemin complet (comme ci-dessus) et la partie que tu souhaites en extraire, sachant que cette partie peut comporter 4 ou 5 caractères (entre le _ et le .) ?
 
Re : formule reprendre partie nom fichier


je n'ai pas de chemin précis car ce n'est pas le chemin surlequel je cherche a travailler mais seulement le nom du fichier donc j'opterai pour la fonction suivante :

= GAUCHE(STXT((CELLULE("filename";A11));CHERCHE("[";(CELLULE("filename";A11));1)+1;(CHERCHE("]";(CELLULE("filename";A11));1)));CHERCHE(".";STXT((CELLULE("filename";A11));CHERCHE("[";(CELLULE("filename";A11));1)+1;(CHERCHE("]";(CELLULE("filename";A11));1)));1)-1)

de plus, le chemin ne sera pas le meme tout le temps, les fichiers générés seront stockés sur des surveurs privés différents en fonction de leur nom mais pour exemple je vous donne le nom de l un de mes fichiers :

12345_123456_ABC.xlsx

Quel que soit son chemin (C:\Documents and Settings\ ou Z:\dossierconfioumemelenomestconfidentiel\sousdossiertoutaussiconfi\...\)

j'espere que ces explications vous permettront de mieux cerner mon problème.
 
Re : formule reprendre partie nom fichier

Bonjour poolshen, hoerwind
Des formules personnalisées, peut-être ?
Code:
[COLOR="DarkSlateGray"][B]Function toto(s$) As String
   Application.Volatile
   On Error Resume Next
   toto = Split(Split(s, "_")(UBound(Split(s, "_"))), ".")(0)
   On Error GoTo 0
End Function

Function titi() As String
   Application.Volatile
   titi = toto(ThisWorkbook.Name)
End Function[/B][/COLOR]
Exemples en pièce jointe.​
ROGER2327
#3115
 

Pièces jointes

Dernière édition:
Re : formule reprendre partie nom fichier

c'est gentil, je n ai pas encore ouvert la piece jointe pour la simple et bonne raison que je n ai pas le droit d'utiliser de vba, simplement les formules excel.
Je ne vous ai pas tout dit il est vrai, je vous parle d'excel mais je travaille sur un tableur vraiment proche d'excel qui m'exporte les fichiers calculés au format...xlsx. Ce tableau ne gère pas les macros mais seulement quelques formules excel, et si les formules dont j 'ai besoin pour ma requete ne sont pas dans mon outil alors je demande a leurs devellopeurs de les rajouter. Seulement des formules pas des macros.
Merci
 
Re : formule reprendre partie nom fichier

et aussi il me faut vous préciser que les formules doivent être en francais.
je viens de regarder le fichier excel de la piece jointe de l une des réponses et je vais essayer de travailler dessus pour arriver au meme résultat. C'est magique, merci
 
Re : formule reprendre partie nom fichier

Re...
Dommage de faire perdre du temps en ne posant pas d'emblée le problème à résoudre.
Essayez la formule matricielle suivante :
Code:
[COLOR="DarkSlateGray"][B]=STXT(A2;MAX((STXT(A2;COLONNE($1:$256);1)="_")*COLONNE($1:$256))+1;CHERCHE(".";A2;MAX((STXT(A2;COLONNE($1:$256);1)="_")*COLONNE($1:$256)))-MAX((STXT(A2;COLONNE($1:$256);1)="_")*COLONNE($1:$256))-1)[/B][/COLOR]

Avec E:\XLD\[99999_999999_x(1à20)_A(3ou4).xls]Feuil1 en A2, elle renvoie A(3ou4).​
ROGER2327
#3116
 
Re : formule reprendre partie nom fichier

Suite...
Vous pouvez aussi essayer :
Code:
[COLOR="DarkSlateGray"][B]=STXT(A11;MAX((STXT($A11;COLONNE($1:$256);1)="_")*COLONNE($1:$256))+1;MAX((STXT($A11;COLONNE($1:$256);1)=".")*COLONNE($1:$256))-MAX((STXT($A11;COLONNE($1:$256);1)="_")*COLONNE($1:$256))-1)[/B][/COLOR]
(Formule matricielle.)

Cette formule extrait les caractères entre le dernier _ et le dernier . du texte contenu dans la cellule A11.

La formule du message précédent extrait les caractères entre le dernier _ et le premier . qui suit ce dernier _.​
ROGER2327
#3117
 
Dernière édition:
Re : formule reprendre partie nom fichier

Effectivement désolé Roger ne n avoir pas été plus explicite lors de mon premier envoie.
Merci beaucoup d'avoir planché sur mon cas.
Merci pour vos solutions.
Et encore merci a tous les deux.
 
Re : formule reprendre partie nom fichier

Re...
Re, salut Roger,

En pièce jointe une proposition de formule non matricielle et un peu plus courte que celle de Roger.
Effectivement, mes formules sont un peu brutes de fonderie...

On peut les raccourcir comme suit :
Code:
[COLOR="DarkSlateGray"][B]=STXT(A2;MAX((STXT(A2;LIGNE($1:$98);1)="_")*LIGNE($2:$99));TROUVE(".";A2;MAX((STXT(A2;LIGNE($2:$99);1)="_")*LIGNE($1:$98)))-MAX((STXT(A2;LIGNE($1:$98);1)="_")*LIGNE($2:$99)))[/B][/COLOR]
et
Code:
[COLOR="DarkSlateGray"][B]=STXT(A2;MAX((STXT(A2;LIGNE($1:$98);1)="_")*LIGNE($2:$99));MAX((STXT(A2;LIGNE($2:$99);1)=".")*LIGNE($1:$98))-MAX((STXT(A2;LIGNE($1:$99);1)="_")*LIGNE($1:$99)))[/B][/COLOR]
Mais votre formule non matricielle est certainement plus rapide et moins gourmande en ressources.​
ROGER2327
#3120
 
Re : formule reprendre partie nom fichier

Salut Roger,

La formule proposée est encore moins gourmande et du coup plus rapide en nommant sa partie répétitive (la position du dernier _)

En nommant :
=CHERCHE("µ";SUBSTITUE(A2;"_";"µ";NBCAR(A2)-NBCAR(SUBSTITUE(A2;"_";""))))
par exemple form, la formule devient :
=STXT(A2;form+1;CHERCHE(".";A2)-form-1)
 
- 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
2
Affichages
333
Réponses
7
Affichages
916
Réponses
4
Affichages
864
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…