XL 2010 tronquer chaine de caractères

Mgn_91

XLDnaute Nouveau
Bonjour,

J'ai des cellules qui contiennent noms de documents (ex: abcdef.pdf, blablabla.ppt, lalalala.pptx). Je souhaite grâce à une formule ne garder que les noms des documents sans les extensions.

Je n'y parviens pas avec les formules DROITE ni GAUCHE. Quelqu'un peut-il éclairer ma lanterne ?

Merci pour votre aide.
 

Jocelyn

XLDnaute Barbatruc
re,

comme quoi un fichier exemple avec les différentes option de valeur est toujours le bienvenue dans les demandes mais bon un essai avec une formule un peu plus complexe qui va toujours aller sur le dernier point

Regardes et dis nous

Cordialement
 

Pièces jointes

  • tronquage.xlsx
    8.5 KB · Affichages: 31

Mgn_91

XLDnaute Nouveau
re,

comme quoi un fichier exemple avec les différentes option de valeur est toujours le bienvenue dans les demandes mais bon un essai avec une formule un peu plus complexe qui va toujours aller sur le dernier point

Regardes et dis nous

Cordialement

Merci pour la formule.

Malheureusement mon fichier est un fichier xls qui contient des macro. J'ai donc le message suivant qui apparaît " Impossible d'entrer la formule spécifiée car elle utilise plus de niveaux d'imbrication que n'autorise le format de fichier actuel."
 

Mgn_91

XLDnaute Nouveau
En scrutant mon fichier je constate que je dois à nouveau "nettoyer" le contenu des cellules.

En effet en plus de tronquer la fin des chaines de caractères (les extensions) je souhaite également tronquer le début de la chaine de caractère. C'est à dire effacer les caractères suivant "..\......\" pour ne garder que le nom du fichier.

Exemple : la celulle contient "..\123\abcd_edfgijklm_nopkrst.ppt" Je souhaite uniquement garder " abcd_edfgijklm_nopkrst " et donc supprimer "..\123\" et ".ppt"

Merci encore une fois.
 

Pièces jointes

  • test_tronquage.xls
    18 KB · Affichages: 45

laurent950

XLDnaute Accro
Bonsoir le Forum,

Un découpage astucieux le code ci-dessous :

Sub test()

For i = 1 To 9
Cells(i, 3) = Split(Split(Cells(i, 1), "\")(UBound(Split(Cells(i, 1), "\"))), ".")(UBound(Split(Split(Cells(i, 1), "\")(UBound(Split(Cells(i, 1), "\"))), ".")) - 1)
Next i

End Sub

en rapport avec votre dernier fichier Excel les valeur se copie en colonne C en face des lignes (sur la base des valeur Colonne A ligne 1 à 9
 

Mgn_91

XLDnaute Nouveau
Bonsoir le Forum,

Un découpage astucieux le code ci-dessous :

Sub test()

For i = 1 To 9
Cells(i, 3) = Split(Split(Cells(i, 1), "\")(UBound(Split(Cells(i, 1), "\"))), ".")(UBound(Split(Split(Cells(i, 1), "\")(UBound(Split(Cells(i, 1), "\"))), ".")) - 1)
Next i

End Sub

en rapport avec votre dernier fichier Excel les valeur se copie en colonne C en face des lignes (sur la base des valeur Colonne A ligne 1 à 9

Merci,

Ce code fonctionne parfaitement. Dans le cas où la liste n'est pas limitée à 9 lignes en colonne A mais est variable, comment dois-je procéder ? J'imagine que "For i = 1 To 9" doit être remplacé par une autre valeur ?
 

Mgn_91

XLDnaute Nouveau
J'ai finalement trouvé la solution en identifiant la dernière ligne de la colonne.

De quelle manière ce code doit-il être modifié si le nom du document comporte plusieurs points. Exemple sur le ligne 10,11,12 du document en pièce jointe.

Merci pour votre aide
 

Pièces jointes

  • test_tronquage.xls
    35 KB · Affichages: 27

laurent950

XLDnaute Accro
Bonsoir,

Voici le code associer au dernier fichier excel que vous avez posté :

VB:
Sub test()
For i = 1 To 12
' decoupage
Var = Split(Cells(i, 1), "\")
' resultat
Var = Var(UBound(Var))
' test sur le nombre de .
Var = Split(Var, ".")
If UBound(Var) < 2 Then
    Var = Var(LBound(Var))
    Cells(i, 3) = Var
Else
' pour tous les points
    For j = 0 To UBound(Var) - 1
        If j = 0 Then
            Nouv = Var(j)
            Cells(i, 3) = Nouv
        Else
            Nouv = Nouv & "." & Var(j)
            Cells(i, 3) = Nouv
        End If
    Next j
    Nouv = Empty
End If
Next i
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
311 711
Messages
2 081 789
Membres
101 817
dernier inscrit
carvajal