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

Fermé
onra - 2 juil. 2008 à 14:21
 Utilisateur anonyme - 3 mars 2011 à 15:26
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 3256 Date d'inscription jeudi 27 décembre 2007 Statut Membre Dernière intervention 8 février 2020 704
2 juil. 2008 à 14:31
Bonjour,

Vous codez en quelle langage?
0
Pardon,
j'ai oublié de préciser le principal.
Je code en VBA sous Excel.
0
varfendell Messages postés 3256 Date d'inscription jeudi 27 décembre 2007 Statut Membre Dernière intervention 8 février 2020 704
2 juil. 2008 à 14:40
A....dsl, je ne connait pas ce langage. Je pensé que c'était du C++ auquel j'ais une solution.
Bon courage à vous.
0
saluut , binn je le veus en java aussi ,si c'ést possible

merci d avance
0
zavenger Messages postés 811 Date d'inscription vendredi 29 février 2008 Statut Membre Dernière intervention 20 avril 2012 161
2 juil. 2008 à 14:44
Bonjour,
quelque chose comme :
Sheets("OS").SaveAs CheminOS & "\" & Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 4) & IndiceOS
0
Ok ,
Merci quand Même.

Bonne journée
0
varfendell Messages postés 3256 Date d'inscription jeudi 27 décembre 2007 Statut Membre Dernière intervention 8 février 2020 704
2 juil. 2008 à 14:58
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 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 293
2 mars 2011 à 09:32
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
3 mars 2011 à 01:33
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 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 293
3 mars 2011 à 09:53
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
3 mars 2011 à 15:26
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