Récupérer une chaîne de caractères spécifique Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
i
iliasse
Membre habitué
Membre habitué
Messages : 100
Inscrit le : 27 mars 2015
Version d'Excel : 2010

Message par iliasse » 8 avril 2015, 14:46

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)
lecture_ecriture_conversion_txt.xlsm
(111.33 Kio) Téléchargé 23 fois
Avatar du membre
ThauThème
Passionné d'Excel
Passionné d'Excel
Messages : 3'741
Appréciations reçues : 163
Inscrit le : 19 octobre 2014
Version d'Excel : 2010 FR

Message par ThauThème » 8 avril 2015, 15:19

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]...
À plus,

ThauTheme


Je suis Charlie
VBA m'éclate, les formules m'ennuient ! Je n'y peux rien c'est comme ça...
i
iliasse
Membre habitué
Membre habitué
Messages : 100
Inscrit le : 27 mars 2015
Version d'Excel : 2010

Message par iliasse » 8 avril 2015, 16:49

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.
Avatar du membre
ThauThème
Passionné d'Excel
Passionné d'Excel
Messages : 3'741
Appréciations reçues : 163
Inscrit le : 19 octobre 2014
Version d'Excel : 2010 FR

Message par ThauThème » 8 avril 2015, 17:21

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)
À plus,

ThauTheme


Je suis Charlie
VBA m'éclate, les formules m'ennuient ! Je n'y peux rien c'est comme ça...
i
iliasse
Membre habitué
Membre habitué
Messages : 100
Inscrit le : 27 mars 2015
Version d'Excel : 2010

Message par iliasse » 9 avril 2015, 09:50

Toujours pas, je regarde si je peux résoudre le problème. Je te tiens au courant :)
Avatar du membre
ThauThème
Passionné d'Excel
Passionné d'Excel
Messages : 3'741
Appréciations reçues : 163
Inscrit le : 19 octobre 2014
Version d'Excel : 2010 FR

Message par ThauThème » 9 avril 2015, 10:17

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.jpg
Sans-titre-1.jpg (103.81 Kio) Vu 219 fois
Donc le code marche !
À plus,

ThauTheme


Je suis Charlie
VBA m'éclate, les formules m'ennuient ! Je n'y peux rien c'est comme ça...
F
FINDRH
Membre impliqué
Membre impliqué
Messages : 1'395
Appréciations reçues : 15
Inscrit le : 12 février 2010
Version d'Excel : 2016

Message par FINDRH » 9 avril 2015, 10:37

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
lecture_ecriture_conversion_txt.xlsm
(86.5 Kio) Téléchargé 15 fois
Avatar du membre
Marc L
Membre dévoué
Membre dévoué
Messages : 796
Appréciation reçue : 1
Inscrit le : 27 janvier 2015
Version d'Excel : 2003 / 2007

Message par Marc L » 9 avril 2015, 12:11

  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 !   :roll:
i
iliasse
Membre habitué
Membre habitué
Messages : 100
Inscrit le : 27 mars 2015
Version d'Excel : 2010

Message par iliasse » 9 avril 2015, 12:59

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 "\"
Avatar du membre
ThauThème
Passionné d'Excel
Passionné d'Excel
Messages : 3'741
Appréciations reçues : 163
Inscrit le : 19 octobre 2014
Version d'Excel : 2010 FR

Message par ThauThème » 9 avril 2015, 13:45

Bonjour le fil, bonjour le forum,

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

ThauTheme


Je suis Charlie
VBA m'éclate, les formules m'ennuient ! Je n'y peux rien c'est comme ça...
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message