IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

Extraction Chaîne de Caractères


Sujet :

Access

  1. #1
    Futur Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 14
    Points : 9
    Points
    9
    Par défaut Extraction Chaîne de Caractères
    Salut tout le monde,

    J'ai une chaîne de caracère du type "NomFichier.xls" et je voudrais récupérer (via du code VBA je suppose) seulement "NomFichier" (donc sans le ".xls" ) sachant que la longueur du champ "NomFichier" est variable. Si quelqu'un sait comment faire...

  2. #2
    Membre chevronné Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 667
    Points : 2 232
    Points
    2 232
    Par défaut
    Tu fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Left("nomfichier",Len("nomfichier")-4)
    et après tu met ton résultat dans une variable, ou un champs d'un formulaire, ça dépend de ce que tu veux en faire

  3. #3
    Membre averti Avatar de snoopy69
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    737
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 737
    Points : 395
    Points
    395
    Par défaut
    C'est peut être compliqué mais :

    Il existe une fonction qui permet de sélectionner un caractère dans une chaîne de texte.

    Sélectionne le "." puis, stocke tous les caractères avant le "." dans une variable ...

    Moi je le fais comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    str_PointFiltre = InStr("1", str_FiltreValeur, ".", vbTextCompare)
    sachant que : str_PointFilre, str_FiltreValeur sont des variables ... ... ...

    Recherche des infos sur la fonction : ...

    En espérant t'avoir aidé ...

    PS : La solution qui t'est proposée dans le poste ci-dessus est tout aussi fonctionnelle ...

  4. #4
    Membre expérimenté
    Avatar de Mahefasoa
    Homme Profil pro
    Manager IT
    Inscrit en
    Octobre 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Manager IT

    Informations forums :
    Inscription : Octobre 2003
    Messages : 835
    Points : 1 664
    Points
    1 664
    Par défaut
    Salut,

    guigui5931 a écrit:

    Left("nomfichier",Len("nomfichier")-4)

    Ceci marhe très bien ... si l'extension est limité à 3 caractères! Les développeurs ont toujours tendance à créer leurs propres types de fichier avec des extensions plus farfelues que les autres. Il faut donc s'attendre à une extension consitituée de 4 caractères ou plus.
    On sait tout simplement que le nom de fichier se trouve la plupart du temps avant le point!
    Pour ce faire, il suffit de savoir à quelle position se situe le "point" et le nom du fichier est constitué de tous les caractères qui se trouvent avant ce point.

    Pour retrouver la position du "point", on procède comme suit:
    InStr(1,"nomfichier",".",vbTextCompare)
    Cette fonction renvoi 0 si le caractère "point" ne se trouve pas dans la chaîne "nomfichier" et différent de 0 dans le cas contraire
    Pour le nom du fichier,
    Mid("nomfichier",InStr(1,"nomfichier",".",vbTextCompare)-1)

    Et qu'en est-il si le nom de fichier lui même contient un point et que l'extension se trouve après le dernier point? Une autre histoire ...

  5. #5
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 526
    Points
    14 526
    Par défaut
    slt,

    une solution avec une API :
    Code à mettre dans un module : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Option Explicit
    Private Declare Function PathRemoveExtension Lib "shlwapi" _
       Alias "PathRemoveExtensionA" _
      (ByVal pPath As String) As Long
     
    Public Function RemoveExtension(ByVal pFichier As String) As String
    Dim lPos As Integer
    PathRemoveExtension pFichier
    lPos = InStr(pFichier, Chr(0))
    If lPos Then
        RemoveExtension = Left(pFichier, lPos - 1)
    Else
        RemoveExtension = pFichier
    End If
    End Function

    Code test : Sélectionner tout - Visualiser dans une fenêtre à part
    Msgbox RemoveExtension("machin.truc.jpeg")

  6. #6
    Futur Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 14
    Points : 9
    Points
    9
    Par défaut
    Pour le nom du fichier,
    Mid("nomfichier",InStr(1,"nomfichier",".",vbTextCompare)-1)
    çà ne marche pas trop bien il vaut mieux utiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Left("nomfichier",InStr(1,"nomfichier",".",vbTextCompare)-1)
    Par contre

    Option Explicit
    Private Declare Function PathRemoveExtension Lib "shlwapi" _
    Alias "PathRemoveExtensionA" _
    (ByVal pPath As String) As Long

    Public Function RemoveExtension(ByVal pFichier As String) As String
    Dim lPos As Integer
    PathRemoveExtension pFichier
    lPos = InStr(pFichier, Chr(0))
    If lPos Then
    RemoveExtension = Left(pFichier, lPos - 1)
    Else
    RemoveExtension = pFichier
    End If
    End Function
    Ce module est parfait & fonctionne ds ts les cas.

    Encore Merci pr votre aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. extraction chaîne de caractères dans word
    Par benziz dans le forum VBA Word
    Réponses: 13
    Dernier message: 01/03/2012, 23h06
  2. Réponses: 1
    Dernier message: 07/01/2008, 23h17
  3. Extraction d'une chaîne de caractère
    Par Hathor dans le forum VBScript
    Réponses: 1
    Dernier message: 25/04/2007, 07h36
  4. Extraction d'une chaîne de caractère avec SQL
    Par opeo dans le forum MS SQL Server
    Réponses: 13
    Dernier message: 28/07/2006, 15h36
  5. Réponses: 13
    Dernier message: 17/10/2005, 15h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo