XL 2013 Split qui split pas où je le souhaite

Rénato

XLDnaute Occasionnel
Bonjour le forum

L'un d'entre vous aurait-il une idée, lorsqu'on applique un split comme celui-ci :

FchTronqué = Split(fichier, ".") <--- fichier étant le nom d'un fichier dans un répertoire

...et que dans l'intitulé des fichiers à traiter, il y un point (.) avant celui de l'extension ?
Du coup, le Split n'est pas appliqué là où je le souhaiterais.

Merci pour votre retour
Rénato
 

patricktoulon

XLDnaute Barbatruc
bonjour
sert toi de instrrev et de mid c'est plus sur

exemple complet
VB:
Sub test()
fichier = "c:\mondossier\toto.titi.truc......bidule.......xls"

chemin = Mid(fichier, 1, InStrRev(fichier, "\") - 1)

nomfichier = Mid(fichier, InStrRev(fichier, "\") + 1)

noextention = Mid(nomfichier, 1, InStrRev(nomfichier, ".") - 1)


MsgBox "chemin de fichier : " & vbTab & vbTab & chemin & vbCrLf _
& "nom du fichier : " & vbTab & vbTab & nomfichier & vbCrLf _
& "fichier sans extention : " & vbTab & noextention

End Sub

Split qui split pas où je le souhaite
et pour ton info split ne coupe pa ou on souhaite il coup c'est tout ;)
split crée simplement un array avec une chaine string en la coupant par l'expression demandée
 

patricktoulon

XLDnaute Barbatruc
re
Bonjour youky(BJ)

alors! non ! non et non!
en mettant un index (x) après le split tu indique une partie

mais je le répète split ne coupe pas ou on souhaite il coupe par une expression c'est tout



x=split("toto.titi",".")(1)'titi

n'est pas le même object que

x=split("toto.titi",".")

le premier Etant un élément l'autre étant le tableau

appelons un chat un "chat" ;)
autant donner des explications complètes a quelqu'un qui sait pas;)

d'autre part
traiter les chemins de fichiers avec split n'est pas une bonne idée (ca sent la macro que l'on doit modifier tout le temps);)

la encore autant donner des méthodes qui sont largement plus sur

mid(("toto.titi",instrrev("toto.titi",".")+1) te donnera a coup sur "titi"
et cela même avec "toto.truc.machin.titi"

tu demontre avec split(fichier,".xl")
demain c'est des fichiers ".zz" qui travaille il modifie la macro moi non !;)

;)

edit:
a la limite je veux bien accepter
x=split(fichier,".")(ubound(split(fichier,"."))-1)

mais comme le demandeur a BIEN spécifié qu'il y a vait plusieurs points dans le nom ben .....t'es chocolat car tu aura une portion de la portion voulue
 
Dernière édition:

laurent950

XLDnaute Accro
Bonsoir
Left(fichier, Len(fichier) - Len(Split(fichier, ".")(UBound(Split(fichier, ".")))) - 1)
soit :
FchTronqué = Left(fichier, Len(fichier) - Len(Split(fichier, ".")(UBound(Split(fichier, ".")))) - 1)
' resultat
MsgBox FchTronqué

la décomposition ci dessous
Sub test()

fichier = Cells(1, 1) ' fchier.to.toJJ,UU.jjjjj.xlsx

' décomposition
FchTronqué = Split(fichier, ".")(UBound(Split(fichier, ".")))
' Trouver
' Soit 4 caractères xlsx
MsgBox FchTronqué
' longueur fichier total = Nombres de caractère + extension .xlsx
MsgBox Len(fichier)
'donc
' trouver la longueur total moins les
' 4 caractères soit : len(Split(fichier, ".")(UBound(Split(fichier, ".")))) / xlsx soit 4 caractéres
' ajouter a se résultat 1 caractère le Point "."
'et donc
' la longueur total de caractère - 5 caractères = le nom du fichier
MsgBox Len(fichier) - Len(Split(fichier, ".")(UBound(Split(fichier, "."))))
'et
MsgBox Len(fichier) - Len(Split(fichier, ".")(UBound(Split(fichier, ".")))-1)
' a gauche du nombre total de caractère - les 5 caractères c'est égale a

le resultat :
MsgBox Left(fichier, Len(fichier) - Len(Split(fichier, ".")(UBound(Split(fichier, ".")))) - 1)

End Sub

Laurent
 
Dernière édition:

Staple1600

XLDnaute Barbatruc

Staple1600

XLDnaute Barbatruc
Re

Pourtant, le lien était facile à faire
(surtout quand on lit la réponse de patricktoulon)
chemin = Mid(fichier, 1, InStrRev(fichier, "\") - 1)
nomfichier = Mid(fichier, InStrRev(fichier, "\") + 1)
noextention = Mid(nomfichier, 1, InStrRev(nomfichier, ".") - 1)
La syntaxe utilisée aurait du te rappeler des souvenirs, non ? ;)
Très proche de ce que j'avais posté dans ton fil ;)
strName = Split(strFullName, "\")(UBound(Split(strFullName, "\")))
strExt = UCase(Right(strName, Len(strName) - InStrRev(strName, ".")))
 

Discussions similaires

Réponses
21
Affichages
1 K
Réponses
4
Affichages
281

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 084
Messages
2 085 194
Membres
102 813
dernier inscrit
kaiyi