Excel prelever bout chaine de caractère

Résolu
printfx000 -  
 printfx000 -
Salut, dans un de mes classeurs excel, j'ai plusieurs noms de fichiers enregistrés sous forme de chaine de caractères dans une des colonnes de mon classeur.
Ce que je souhaiterais faire, c'est extraire uniquement le morceau de la chaine qui indique de quel type est mon fichier.
(Ex: dans monfichier.pdf, je souhaiterais garder que .pdf)

Je sais qu'il y a une fonction pour cela en vba: Right(String prelever, int taille) ou Left(String prelever, int taille).

Pour les 9/10 de mes fichiers qui sont des .pdf, des .doc, ou des .zip, y'a pas de souci: je fixe taille à 4 dans ma macro.

Cependant, il y a aussi des fichiers .model ou .z, (et d'autres encore) dont la fin de la chaine n'est pas égale à 4 pour le type de format.

J'me suis dit qu'on pouvait faire varier taille en fonction d'un certain paramètre, mais je ne vois pas lequel et je ne sais pas du tout comment me sortir de cette situation.

Pourriez vous m'aider, svp ? Merci.


A voir également:

11 réponses

michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
Bonjour

Function garder_suffixe(nomfich As String) As String
garder_suffixe = Split(nomfich, ".")(1)
End Function
0
printfx000
 
Merci de ta réponse. Mais que se passe t-il s'il y a plusieurs "." dans le nom ?
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
Je ne peux pas te le dire: je n'ai jamais vu de nom de fichier avec plusieurs points dans leur désignation....
0
printfx000
 
Y'a t'il un moyen de partir de la droite de la chaine de caractère et faire en sorte que le prelevement s'arrête au premier "." trouvé ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
bonjour

peut etre ceci

Public Function ext(nf As String) As String
Dim pp As Long
Dim fn As String
  fn = StrReverse(nf)
  pp = InStr(1, fn, ".")
  ext = StrReverse(Left(fn, pp - 1))
End Function


et bonne journée à tous les deux
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
Function garder_suffixe(nomfich As String) As String
garder_suffixe = Split(nomfich, ".")(0)
End Function

Merci d'avoir pas répondu à ma remarque sur les noms de fichiers à plusieurs points, j'aurais peut-^tre appris quelque chose...

moi, j'essaie de partager. toi non
Belle mentalité
0
printfx000
 
désolé de t'avoir offensé.
J'avais pas compris que tu attendais une réponse.

Pour répondre à ta question, certains de mes fichiers s'appelent par exemple:
"fichier.attachment1.pdf"

Comme tu le vois, y'a 2 "." dans la chaine.

Merci pour les réponses précedentes.
Et encore, Mille excuses :D .
0
printfx000
 
C'est encore moi.
D'après ce que j'ai compris, la fonction Split fonctionne un peu comme Explode en php.
Cependant, elle commence à GAUCHE de la chainde de caractères.
Existe t-il une fonction identique mais qui commence à DROITE ?
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
j'étais pas réveillé ce matin...

Function garder_suffixe(nomfich As String) As String
tablo = Split(nomfich, ".")
garder_suffixe = tablo(UBound(tablo))
End Function

0
printfx000
 
Merci de ta réponse,
mais quand j'essaye, j'ai une erreur de compilation: ils me disent: Tableau attendu.

Si tu pouvais m'aider encore une fois sur ce coup :D ...
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
Curieux, chez moi ca marche
construit avec XL2007 et enregistré en XL2003
https://www.cjoint.com/?3DtsUpHEIn7

peut-^tre ca:
Function garder_suffixe(nomfich As String) As String
Dim tablo
tablo = Split(nomfich, ".")
garder_suffixe = tablo(UBound(tablo))
End Function
0
printfx000
 
c'est bon.
c'est OK. Je sais pas comment, mais aujourd'hui c'est OK. Merci.
0