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

onra -  
 danimo -
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
Configuration: Windows 2000
Internet Explorer 6.0

7 réponses

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

    Vous codez en quelle langage?
    0
    1. onra
       
      Pardon,
      j'ai oublié de préciser le principal.
      Je code en VBA sous Excel.
      0
  2. 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
    1. HDi-23
       
      saluut , binn je le veus en java aussi ,si c'ést possible

      merci d avance
      0
  3. 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
    1. onra
       
      Ok ,
      Merci quand Même.

      Bonne journée
      0
  4. 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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    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
  7. danimo
     
    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
    1. Bidouilleu_R Messages postés 1209 Statut Membre 296
       
      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
  8. danimo
     
    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