1. Bonjour tout le monde ! Veillez consulter la Politique de forum pour comprendre nos règles, Merci a vous !
    Rejeter la notice

lorsque VAL() ne veut pas convertir une valeur alphanumérique composée en numérique

Discussion dans 'Windev' créé par Germanicus, Mai 28, 2018.

  1. Germanicus

    Germanicus Active Member

    Inscrit:
    Jan 7, 2018
    Messages:
    56
    J'aime reçus:
    180
    windev / webdev

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

     
    Tags:
    joker, suenodesign et michel aiment ça.
  2. suenodesign

    suenodesign Well-Known Member
    MEMBRE WX

    Inscrit:
    Jan 1, 2018
    Messages:
    511
    J'aime reçus:
    740
    @

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!



    Tu ne sais pas surement que cette astuce va me permettre de lancer ce soir même une petite application de gestion des ventes/Achat de pneu.

    Je t'explique:

    J'ai eu une liste de produits (Pneumatique) sur excel d'un de mes clients.

    Est je n'avais pas le temps de penser à un algorithme pour filtrer les mesures des pneus à partir de leurs désignations qui se présentent comme ça:
    [​IMG]

    [​IMG]

    Merci beaucoup.

    Je vais pouvoir me pencher sur ceci maintenant. :);)
     
    #2 suenodesign, Mai 28, 2018
    Dernière édition: Mai 28, 2018
    joker apprécie ceci.
  3. suenodesign

    suenodesign Well-Known Member
    MEMBRE WX

    Inscrit:
    Jan 1, 2018
    Messages:
    511
    J'aime reçus:
    740
    Voici le code de cette procédure
    Code (Text):
    PROCÉDURE ChaineVersNumerique(sChaineAConvertir est une chaîne, sSepDecimal est une chaîne=",", valDef=0) : numérique
    // Publié il y a 4 days ago par Carnet windev
    // https://carnetwindev.blogspot.com.br/2018/05/windev-webdev-procedure-tout-terrain.html
    // Merci à Germanicus pour l'info

    sResultat est une chaîne
    bDecimalTrouvé est un booléen = Faux
    // astuce pour récupérer simplement la décimale utilisée par windev dans une chaine
    sDecimaleDuSystème est une chaîne = Milieu(""+0.5,2,1)
    POUR i = 1 _À_ Taille(sChaineAConvertir)
        // selon la valeur du caractère en cours
        SELON sChaineAConvertir[i]
            CAS "0" À "9"
            // on le garde si c'est un chiffre
            sResultat+=sChaineAConvertir[i]
            CAS sSepDecimal
        // si c'est notre décimale, on la garde, uniquement si on l'à pas encore fait
            SI PAS bDecimalTrouvé ALORS
                sResultat+=sDecimaleDuSystème
                 bDecimalTrouvé = Vrai  
             FIN
        CAS "+", "-"
            // si on a pas encore récupéré de chiffre, alors on met le signe s'il est précisé avant
            SI sResultat ="" ALORS sResultat = sChaineAConvertir[i]
        AUTRE CAS
            // on ne garde rien d'autre
        FIN
    FIN
    // si on a rien extrait d'intéressant, on renvoie la valeur précisée par défaut
    SI sResultat = "" ALORS
        RENVOYER valDef
    SINON
        // on peut utiliser Val() en toute tranquillité maintenant
        RENVOYER Val(sResultat)
    FIN
    Merci à @

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    pour l'info.

    Profitez de la coloration syntaxique (Bravo Faki :):D:cool:)
     
    joker apprécie ceci.
  4. joker

    joker New Member
    MEMBRE WX

    Inscrit:
    Jan 30, 2018
    Messages:
    0
    J'aime reçus:
    14
    ThankS @

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!



    On peut également utiliser la fonction VérifieExpressionRégulière()

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!


    ou

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!



    F1 :

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

     
    suenodesign apprécie ceci.
  5. suenodesign

    suenodesign Well-Known Member
    MEMBRE WX

    Inscrit:
    Jan 1, 2018
    Messages:
    511
    J'aime reçus:
    740

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    ThankS @

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!



    On peut également utiliser la fonction VérifieExpressionRégulière()

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!


    ou

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!



    F1 :

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    Cliquez pour agrandir...
    Oui VérifieExpressionRégulière est intéressante comme fonction quand les chaines à vérifier doivent avoir un pattern bien définit.

    Comme vérifier la validité d'une adresse email ou un RIB bancaire.

    L'utilité de la fonction fournie ici

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!


    (Par les soins de Germanicus)

    Nous permet de passer outre des schémas prédéfinis

    Elle ne retient que les chiffres et des caractères bien choisis.

    Bien à toi.
     
    joker apprécie ceci.
  • joker

    joker New Member
    MEMBRE WX

    Inscrit:
    Jan 30, 2018
    Messages:
    0
    J'aime reçus:
    14

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    Oui VérifieExpressionRégulière est intéressante comme fonction quand les chaines à vérifier doivent avoir un pattern bien définit.

    Comme vérifier la validité d'une adresse email ou un RIB bancaire.

    L'utilité de la fonction fournie ici

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!


    (Par les soins de Germanicus)

    Nous permet de passer outre des schémas prédéfinis

    Elle ne retient que les chiffres et des caractères bien choisis.

    Bien à toi.
    Cliquez pour agrandir...
    En tous cas

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    et

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    ,
    Bravo ! pour ces partages interActifs :cool:
     
    suenodesign apprécie ceci.
  • JHDSoft

    JHDSoft Member

    Inscrit:
    Mar 4, 2018
    Messages:
    41
    J'aime reçus:
    25
    salam tlm
    ou simplment


    Code (Text):
    PROCEDURE ennumpourval(Param1)
    Varpourval est une chaîne=""
    bAvecsigne , bAvecdes sont des  booléen
    bAvecsigne=Vrai ; bAvecdes=Vrai
    POUR i=1 _A_ Taille(Param1)
        SELON Param1[[i]]
            CAS 0 A 9 : Varpourval+=Param1[[i]]
            CAS "+" , "-"  :     SI  bAvecsigne ET Varpourval="" ALORS Varpourval=Param1[[i]] ; bAvecsigne=Faux
            CAS "," , "."  :  SI  bAvecdes  ALORS Varpourval+=Param1[[i]] ;bAvecdes=Faux
        FIN
    FIN
    RENVOYER Varpourval
     
    #7 JHDSoft, Mai 29, 2018
    Dernière édition: Mai 29, 2018
    suenodesign et joker aiment ça.
  • Partager cette page

    Chargement...