Récupérer une chaîne de caractères spécifique

Bonjour les développeurs,

Je me tourne une fois de plus vers vous, car je suis face à un muret..

Je m'explique, dans mon code je sélectionne un fichier "à traiter", et ce qui m’intéresserai de faire c'est de récupérer le nom de se fichier et de le mettre dans une cellule définie.

Les noms de fichiers sont de la forme: T:\ISh\Prg\IS\L1\601032F1.txt, T:\ISh\Prg\IS\L1\983MF1.txt, T:\ISh\Prg\IS\L2\LVA70AF2.txt, .....

Voici mon code:

   'Selection du fichier à ouvrir

    Set fd = Application.FileDialog(msoFileDialogFilePicker)
    With fd
    .Title = "ouvrir fichier texte"
    .Filters.Clear
    .Filters.Add "text file", "*.txt"
    .AllowMultiSelect = False
    .InitialFileName = "T:\ISh\Prg\IS\"
        If .Show = -1 Then
           sNomFichier = .SelectedItems(1)
           End If
        End With

    Set ws = Sheets("Écriture")          '// feuille où écrire les résultats
    ws.UsedRange.Clear '// vider le contenu de la feuille

'récupération du nom du fichier à ouvrir
nb = Len(sNomFichier)
Nomproduit = UCase(Mid(sNomFichier, 18, 6))
Worksheets("Mise en forme finale").Range("D2:F3").Value = Nomproduit

Ce code est valable si tous les noms de fichiers sont de la même taille, en revanche si il y a une différence de taille... Il faut re-adapter mon "MID" à chaque fois...

Merci d'avance

ps: Ci-joint le fichier correspondant (module3)

Bonjour Iliasse, bonjour le forum,

Essaie avec :

Nomproduit = Split(sNomFichier,"/")(5)

Pour mieux comprendre, dans l'éditeur Visual Basic, sélectionne le mot Split et appuie sur la touche [F1]...

Bonjour ThauThème,

Cela ne fonctionne pas, en effet le debogeur m'indique que la variable "Nomproduit" est VIDE...

Merci pour le tuyau, "split" permet de manipuler les chaines de caractères.

Bonjour Iliasse, bonjour le forum,

Désolé, ça ne peut pas marcher car j'ai confondu "/" et "\"...

La, ça va marcher :

    Nomproduit = Split(sNomFichier,"\")(5)

Toujours pas, je regarde si je peux résoudre le problème. Je te tiens au courant

Bonjour Iliasse, bonjour le forum,

J'ai pris les noms que tu as donnés en exemple et les ai dispatchés dans la colonne A (A1, A2 et A3). J'ai écris le code :

Sub Macro1()
With Sheets("Feuil1")
    For I = 1 To 3
        Cells(I, 2).Value = Split(Cells(I, 1).Value, "\")(5)
    Next I
End With
End Sub

et je l'ai lancé. Voila le résultat :

sans titre 1

Donc le code marche !

Bonjour

Ci joint une proposition de formules a enregistrer ou écrire en VBA

Cela présuppose que la racine du chemin critique reste constante, sinon la plage recherchée est a reconstituer à,chaque fois...

Onglet panneau de controle

Cordialement

FINDRH


Bonjour

La formule d'extraction de ThauThème est simple et excellente

Cordialement

FINDRH

Bonjour, bonjour !

Sub Demo()
      sNomFichier = "T:\ISh\Prg\IS\L1\601032F1.txt"
               SP = Split(sNomFichier, "\")
       Nomproduit = Split(SP(UBound(SP)), ".")(0)
MsgBox Nomproduit
End Sub

Mais c'est vrai vu la présentation imprécise … Et pourtant la problématique est vraiment simple à exprimer !

Bonjour à tous,

Je confirme réponse excellente !!

Après quelques modifs pour adapter à mon programme j'obtient:

Nomproduit = Split(sNomFichier, "\")(5)
nbe = Len(Nomproduit)
RefOF = Mid(Nomproduit, 1, nbe - 4)
Worksheets("Mise en forme finale").Range("D2") = RefOF

(J'enlève seulement mon ".txt")

Merci tout le monde

Comment est-ce que je pourrais modifier mon code pour qu'il puisse me compter le nombre de "\" ? Ainsi peu importe le nom du fichier je pourrais extraire seulement mon nom de produit. Car pour l'instant mon code est vrai que si l'on a 5 "\"

Bonjour le fil, bonjour le forum,

Regarde le post de Marc au-dessus c'est exactement ce qu'il fait...

Je n'avais pas vu le message de Marc, je m'excuse

Merci beaucoup !!

Rechercher des sujets similaires à "recuperer chaine caracteres specifique"