Excel prelever bout chaine de caractère

Résolu/Fermé
printfx000 - 18 avril 2011 à 15:41
 printfx000 - 20 avril 2011 à 15:11
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 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
18 avril 2011 à 15:57
Bonjour

Function garder_suffixe(nomfich As String) As String
garder_suffixe = Split(nomfich, ".")(1)
End Function
0
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 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
18 avril 2011 à 16:38
Je ne peux pas te le dire: je n'ai jamais vu de nom de fichier avec plusieurs points dans leur désignation....
0
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 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
19 avril 2011 à 08:49
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 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
19 avril 2011 à 08:58
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
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
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 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
19 avril 2011 à 12:15
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
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 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
19 avril 2011 à 18:47
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
c'est bon.
c'est OK. Je sais pas comment, mais aujourd'hui c'est OK. Merci.
0