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

WinDev Discussion :

Extraire partie numérique d'une chaine [WD12]


Sujet :

WinDev

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Inscrit en
    Avril 2008
    Messages
    1 132
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 1 132
    Par défaut Extraire partie numérique d'une chaine
    Salut les amis!

    Tout est dans le titre:

    J'ai une table facture d'environ 10 000 lignes que j'affiche dans une table mémoire. La colonne numéro de facture possède des enregistrements du type chaine :

    exple de Numéros de facture

    FSO95256
    FSO02547
    PFSI3253683
    S002

    Et je souhaiterai afficher plutôt :

    95256
    02547
    3253683
    002

    J'aurai voulu éviter un code lourd pour la table,
    N'existerait -il pas une syntaxe du type : extraitpartienumérique(MaChaine)?

    Merci d'avance!

  2. #2
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 228
    Par défaut
    bonjour,
    voici une solution que je te propose en utilisant les expressions régulières :

    lachaine est une chaîne = "FSO1234"
    Lettres,Chiffres sont des chaînes
    VérifieExpressionRégulière(lachaine,"([A-Z]+)([0-9]+)",Lettres,Chiffres)
    Normalement tu devrais avoir les chiffres de fin dans la chaine "Chiffres".

    Ami calmant, J.P grouik grouik !

  3. #3
    Membre éclairé Avatar de bruce207
    Inscrit en
    Novembre 2007
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 319
    Par défaut
    Tu peux aussi utilisé la fonction Val qui renvoi la valeur numérique d'une chaine

  4. #4
    Membre Expert Avatar de klbsjpolp
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 065
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 065
    Par défaut
    Bonjour,

    Citation Envoyé par bruce207 Voir le message
    Tu peux aussi utilisé la fonction Val qui renvoi la valeur numérique d'une chaine
    Malheureusement cette solution ne peut pas marcher. La fonction Val() arrête de lire dès qu'elle trouve autre chose qu'un chiffre, c'est utile pour extraire un nombre qui se trouve au début d'une chaine mais pas à la fin.

    Le plus simple pour ne pas alourdir ton code c'est de créer une fonction extraitpartienumérique et de l'appeler. Tu peux même la partager avec nous dans la section Contribuez si tu veux.

    Pour la solution avec l'expression régulière, je suggère:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    VérifieExpressionRégulière(lachaine,".*([0-9]+).*",Chiffres)
    De cette façon, tu extrais une suite de chiffre qui peut être entourée par autre chose que des chiffres. Ça permet aussi de capturer une chaine qui n'aurait que des chiffres.

  5. #5
    Membre émérite
    Inscrit en
    Avril 2008
    Messages
    1 132
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 1 132
    Par défaut
    @Bruce

    val() n'avait rien donné comme klbsjpolp l'a souligné, d'ou mon post

    @jurassic et klbsjpolp

    Merci pour les expressions régulières
    Beaucoup plus simple et plus "pro" que la super lourde procédure que j'ai écrite (mais qui fonctionnait quand même )

    Principe :

    - Créer une liste d'entiers (0 à 10)
    - Balayer la chaine du début à la fin et mettre dans une variable chaine les éléments de la chaine appartenant à ma liste d'entiers
    - val de cette chaine

    A noter que ceci marche car il n'y a pas de lettre entre les chiffres (toujours positionnés à droite)

    Merci à tous!

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 06/03/2013, 17h16
  2. partie numérique d'une chaine
    Par Lisogane dans le forum AS/400
    Réponses: 5
    Dernier message: 09/06/2011, 14h03
  3. [Toutes versions] Extraire partie numérique d'une chaine
    Par tAKAmAkA dans le forum VBA Access
    Réponses: 2
    Dernier message: 15/11/2009, 22h15
  4. Partie numérique d'une chaine
    Par shell_man dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 27/04/2009, 15h57
  5. [Regex ?]Separer la partie numérique d'une chaine
    Par Pahcixam dans le forum Langage
    Réponses: 2
    Dernier message: 25/03/2007, 12h09

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