Supprimer les derniers caractères d'une chaîn

onra -  
 Utilisateur anonyme -
Bonjour,
J'utilise un code pour lire le nom d'un classeur excel afin de le modifier. Le code est:

Dim CheminOS, NomOS As String
CheminOS = ActiveWorkbook.Path
NomOS = ActiveWorkbook.Name
Sheets("OS").SaveAs CheminOS & "\" & ActiveWorkbook.Name & IndiceOS

Le ActiveWorkbook.Name me donne bien le nom du fichier mais avec l'extension:
du style "nom.xls"
donc quand je rajoute IndiceOS (par ex: a)

J'obtiens : "nom.xlsa".

Il faudrait donc que je puisse virer les trois derniers caractères afin de rejouter l'indice "a".

Merci d'avance
A voir également:

7 réponses

varfendell Messages postés 3259 Date d'inscription   Statut Membre Dernière intervention   707
 
Bonjour,

Vous codez en quelle langage?
0
onra
 
Pardon,
j'ai oublié de préciser le principal.
Je code en VBA sous Excel.
0
varfendell Messages postés 3259 Date d'inscription   Statut Membre Dernière intervention   707
 
A....dsl, je ne connait pas ce langage. Je pensé que c'était du C++ auquel j'ais une solution.
Bon courage à vous.
0
HDi-23
 
saluut , binn je le veus en java aussi ,si c'ést possible

merci d avance
0
zavenger Messages postés 817 Statut Membre 161
 
Bonjour,
quelque chose comme :
Sheets("OS").SaveAs CheminOS & "\" & Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 4) & IndiceOS
0
onra
 
Ok ,
Merci quand Même.

Bonne journée
0
varfendell Messages postés 3259 Date d'inscription   Statut Membre Dernière intervention   707
 
En C++ il existe une fonction qui permet de selectionner le debut d'une chaine jusqu'a un caractere precis:

m_TypeFich = Str.substr(Str.find_first_of("."))
m_TypeFich contiendra nom de nom.txt par exemple

m_TypeFich = Str.substr(Str.last_first_of("."))
m_TypeFich contiendra txt de nom.txt par exemple
0

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

Posez votre question
Bidouilleu_R Messages postés 1209 Statut Membre 295
 
et en vba ça existe aussi
ce qui est trompeur c'est que activeWorkBook.name contient "Nom.xls"
mais c'est variable string

Dim CheminOS, NomOS As String
CheminOS = ActiveWorkbook.Path
NomOS = ActiveWorkbook.Name
Sheets("OS").SaveAs CheminOS & "\" & ActiveWorkbook.Name & IndiceOS

donc on peut écrire
NomOS = Left(NomOS, Len(NomOS) - 4) & indiceOSs & ".xls"
explication :
left(lit les charactère de gauche à droite sur la longueur donnée)
je lui donne la longueur total -4 il faut aussi enlever le point
puis ajouter l'indice et le ".xls"

c'est presque comme le c++
0
Utilisateur anonyme
 
Salut,

Ma réponse concerne java comme tu es aussi demandeur...

Tu as "nom.xlsa" et tu voudrais obtenir quoi?
Parceque si tu veux supprimer les 3 derniers caractères tu obtiendras "nom.x" et je doute que ce soit ce que tu veux.

Supposons que tu veux obtenir "noma" on peut faire:

         String monString = "nom.xlsa";
         String monString2 = monString.replaceAll(".xls", "");
         System.out.println("\n\nmonString = " +"\"" + monString + "\"");
         System.out.println("monString2 = " +"\"" + monString2 + "\"");


Mais ce n'est peut-être pas non plus ce que tu veux.
Et en plus on n'a pas forcément toujours "unNom.xls" avant la lettre auquel cas on ne pourait pas mettre le type ".xls" en dur.
Alors dis moi ce que tu veux obtenir exactement...

Cordialement,

Dan
0
Bidouilleu_R Messages postés 1209 Statut Membre 295
 
il a une variable nomOS de type string qui contient au départ le nom
du classeur excel : nomOs="nomfichier.xls"
il veut mettre un indice au nom et obtenir nomOS="nomfichierA.xls"
il a placé le "A" dans une variable indiceOS
mais il ne savait pas couper la chaine avant le "."
0
Utilisateur anonyme
 
Merci Bidouilleu_R

En java donc par exemple:
         String nomOs = "nomFichier.xls";
         String indiceOs = "A";
         
         int ind = nomOs.indexOf(".");
         String nomOs2 = nomOs.substring(0, ind) + indiceOs;
         nomOs2+= nomOs.substring(ind);
         nomOs = nomOs2;
         System.out.println("nomOs: " + nomOs);
0