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 :

Supprimer texte après un caractère


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2006
    Messages : 18
    Par défaut Supprimer texte après un caractère
    Bonjour, j'ai un champs "Résultats" qui peut prendre 3 valeurs :
    1) Positif
    2) Négatif
    3) un chiffre

    Le chiffre calculé apparait toujours avec le maximum de chiffre après la virgule, et j'aimerai les supprimer pour qu'il apparaisse comme un entier.
    Malheuresement je ne peux pas changer le type du champs "résultat" de texte en Nombre, vu que le type d'info varie (texte et chiffre).

    Je voudrai donc faire :

    Si "Résultats" n'est pas Négatif ou positif, prendre la valeur, et ne garder que ce qui apparait AVANT la virgule.
    Je sais qu'il faut utiliser les fonctions Mid, Left, ... mais je n'y arrive pas, quelqu'un peut m'aider SVP ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    If not me.Résultats = "Négatif" Or Not Me.Résultat = "Positif" Or Not Me.Résultat = vbNullString then
    ?????

    Instr() : Trouve la position d'une sous-chaîne dans une chaîne
    Mid() : Coupe un morceau de chaîne à partir d'une position donnée
    Left(), Right() : Récupère un morceau de chaîne en partant de la gauche ou de la droite
    Replace() : Remplace une sous-chaîne par une autre
    Split() : Découpe une chaîne selon un séparateur
    Join() : Contraire de Split.

  2. #2
    Expert confirmé
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Par défaut
    Salut,

    On ne va pas te donner la solution de suite

    De quoi aurais tu besoin pour arriver à avoir uniquement les chiffres avant la virgule ??
    Comme tu le décris :
    Instr() : Trouve la position d'une sous-chaîne dans une chaîne
    Ca va être utile pour trouver la position de la virgule non ?? et donc en enlevant 1 au chiffre retourné : on obtiendra la position du dernier chiffre avant la virgule et donc la longueur de la chaine à extraire, non ?
    Reste plus qu'à utiliser la fonction Left() qui va nous permettre de récupérer les chiffres à gauche de la virgule.

    Essaie avec ça : tu as un soucis : revient nous voir.

  3. #3
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Par défaut
    et puisque Lou Pitchoun t'a expliqué comment utiliser les ingrédients...

    moi je vais en rajouter un autre:
    format()

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2006
    Messages : 18
    Par défaut
    Merci pour les ingrédients, je vais écrire la recette pour les prochains qui se posent la question :

    Rappel de la problématique :

    Dans un état, un champs "Résultat" qui peut prendre les valeurs :
    - NEG
    - POS
    - (champs vierge)
    - chiffre (exemple : 156.56898756)

    Lorsque Résultat est un chiffre, ne conserver que l'entier = supprimer la virgule (point) et tout ce qui suit. Cette valeur est enregistrée dans un champs "Résultat2".



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Dim result As String
    Dim result2 As String
    result = Me.Résultat
     
    If Not result = "NEG" Or Not result = "POS" Or Not result = "" Then
     
    result2 = InStr(1, result, ".") - 1
    'Si result2 suprieur à 0 alors il y a une virgule (point), sinon c'est que le chiffre est déjà un entier!
        If result2 > 0 Then Me.Résultat2 = Left(result, result2)
        If result2 = 0 Or result2 < 0 Then Me.Résultat2 = Me.Résultat 
     
    End If
    Par contre le chiffre n'est pas arrondi......156.56898756 donnera 156 et non pas 157....un conseil ?!

  5. #5
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Par défaut
    tu trouveras tout sur les arrondis ici

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2006
    Messages : 18
    Par défaut
    Merci vodiem, mais le problème est que mon champs "Résultat" est du texte et non un chiffre...est-ti possible de changer le format "texte" en "numérique" si Résultat n'est pas du texte?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    If Not result = "NEG" Or Not result = "POS" Or Not result = "" Then 
    'Changer le type de données...
    Et ensuite je pourrai utiliser le lien intéressant que Vodiem m'a envoyé....

Discussions similaires

  1. Supprimer les espaces avant et après un caractère
    Par KaliMero973 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 05/04/2013, 10h20
  2. [RegExp] Comment supprimer du texte après un signe
    Par pierrot10 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 10/10/2012, 08h09
  3. Supprimer les huit derniers caractères d'une zone de texte
    Par chuspyto dans le forum VBA Access
    Réponses: 3
    Dernier message: 25/03/2009, 14h16
  4. [Turbo Pascal] Supprimer la redondance des caractères dans un texte
    Par achrefchouchou dans le forum Turbo Pascal
    Réponses: 7
    Dernier message: 28/01/2009, 22h10
  5. Réponses: 9
    Dernier message: 02/12/2007, 20h54

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