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

VBA Access Discussion :

split string longueur variable : question un peu différente


Sujet :

VBA Access

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 56
    Points : 28
    Points
    28
    Par défaut split string longueur variable : question un peu différente
    Bonjour

    A partir d'une chaîne de caractères, j'aimerai récupérer tout ce qui se trouve avant le dernier \. J'ai regardé dans le forum et la faq tout ce qui concerne split mais je ne vois pas comment spécifier dans la fonction "avant le dernier \".

    Merci pour vos conseils

  2. #2
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    102
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 102
    Points : 86
    Points
    86
    Par défaut
    Salut,

    Tu peux combiner les fonctions Mid et InStr en VBA.
    InStr pr trouver en qlq postions est le dernier /, pour cela tu cherches tu utilises une boucle.
    Puis Mid pour extraire à partir de la position trouvée.
    Je sais pas si je suis clair.

    Cordialement,

    Antoine

  3. #3
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Bonjour,

    Tiens, un extrait de MSDN :

    InStrRev, fonction


    Description

    Renvoie la position d'une occurrence d'une chaîne dans une autre, à partir de la fin de la chaîne.

    Syntaxe

    InstrRev(string1, string2[, start[, compare]])

    La syntaxe de la fonction InstrRev comprend les éléments suivants :

    Élément Description
    string1 Expression de chaîne dans laquelle la recherche est effectuée.
    string2 Expression recherchée.
    start Facultatif.Expression numérique définissant la position de départ de chaque recherche. Si elle est omise, -1 est employé, ce qui signifie que la recherche commence à la dernière position de caractère. Si l'argument start contient la valeur
    Null, une erreur se produit.

    compare Facultatif. Valeur numérique indiquant le type de comparaison à utiliser lors de l'évaluation des sous-chaînes. Si elle est omise, une comparaison binaire est effectuée. Reportez-vous à la section Valeurs.


    Valeurs

    L'argument compare prend les valeurs suivantes :

    Constante Valeur Description
    vbUseCompareOption –1 Effectue une comparaison à l'aide de l'instruction Option Compare.
    vbBinaryCompare 0 Effectue une comparaison binaire.
    vbTextCompare 1 Effectue une comparaison de texte.
    vbDatabaseCompare 2 Microsoft Access seulement. Effectue une comparaison basée sur des informations contenues dans votre base de données.


    Valeurs renvoyées

    La fonction InStrRev renvoie les valeurs suivantes :

    Si la fonction InStrRev renvoie
    string1 a une longueur nulle 0
    string1 est Null Null
    string2 a une longueur nulle start
    string2 est Null Null
    string2 est introuvable 0
    string2 est trouvée dans la chaîne string1 la position à laquelle une correspondance est trouvée
    start > Len(string2) 0


    Remarques

    Notez que la syntaxe de la fonction InstrRev est différente de celle de la fonction Instr.

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    SELECT 
    StrReverse(Right(StrReverse([monchamp]),Len([monchamp])-InStr(StrReverse([monchamp]),"\"))) AS resu
    , monchamp
    FROM Table1;

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 56
    Points : 28
    Points
    28
    Par défaut
    Bonjour à tous (j'en ai des réponses, merci à vous)

    Dans mes recherches, notamment sur l'aide d'access, j'avais trouvé InStrRev (la réponse de pc75 me dit que j'étais sur la bonne voie).

    Donc pour le moment, je procède ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim Emplacement As String
    Dim NomFichier As String
     
    Emplacement = InStrRev(MaChaîneDeCaractères, "\")
    NomFichier = Left(MaChaîneDeCaractères, Emplacement )

    Soit en 4 lignes de code. Ce n'est pas bien lourd et ça fonctionne mais je me demande si je ne peux pas réduire le nombre de lignes pour arriver au même résultat.

    Pour random : je ne vois pas comment utiliser ta proposition. (en réfléchissant bien, je me suis peut être trompée de sous forum).

    Merci pour vos conseils

  6. #6
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Re,

    En une ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    NomFichier = Left(MaChaîneDeCaractères, InStrRev(MaChaîneDeCaractères, "\"))

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 56
    Points : 28
    Points
    28
    Par défaut
    Bonjour

    J'ai un peu honte après coup. Je m'emmêlais pour rien avec les [] à partir de ton message précédent.

    Merci, tout fonctionne.

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

Discussions similaires

  1. String de longueur variable dans un array variable
    Par kgb1917 dans le forum VBA Access
    Réponses: 4
    Dernier message: 07/01/2012, 15h51
  2. split string longueur variable
    Par krina85 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 14/09/2007, 16h31
  3. [String] pb fonction String[] split(String regex)
    Par Kyti dans le forum Langage
    Réponses: 6
    Dernier message: 05/04/2005, 13h06
  4. Réponses: 4
    Dernier message: 05/07/2004, 13h17
  5. split(String)
    Par keke33 dans le forum Langage
    Réponses: 11
    Dernier message: 03/06/2004, 15h44

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