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 :

Gestion des espace dans une chaine de caracteres


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2011
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 44
    Points : 19
    Points
    19
    Par défaut Gestion des espace dans une chaine de caracteres
    Bonjour à tous,

    Je dois mettre en place un petit prog qui permette d'importer un fichier texte dans access. L'importation je m'en occupe. Par contre le fichier contient des espaces un peu partout sur chaque ligne et je souahaiterais mettre en place une fonction qui gere et supprime les espace de façon particulière.
    ex:
    texte = "B O N J O U R E T BIEN V E N U E"
    resultat = "BONJOUR ET BIENVENUE"

    J'espere que je suis clair sinon n'hésitez pas.
    Merci pour votre aide

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    En général on utilise la fonction Replace dans ce genre de cas, mais il y a une grosse difficulté, car comment va-t-elle reconnaitre un faux espace d'un vrai (celui qui est entre les mots).

    Y a-t-il une règle particulière pour ces espaces ?
    D'où vient ce fichier texte ? Quel logiciel pond un fichier aussi nul ?

    Philippe

  3. #3
    Membre à l'essai
    Inscrit en
    Février 2011
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 44
    Points : 19
    Points
    19
    Par défaut
    Bonjour et merci de t intéresser a mon problème. Ce fichier provient s
    D' un système comptable auquel je n ai pas la main. Je récupère un fichier sous format texte tout pourri et j ai besoin d' exploiter ces données. Il n y a pas de règles précise pour les espaces c est vraiment aléatoire. Par apport a ta réponse dois je en déduire que ce n est pas possible. Je pensais a une fonction qui identifie les espaces et qui les compte. Si ils sont > 1 alors on supprime ceux en trop. J ai pas arrête de tourner en rond mais j ai pas réussi. Est ce la bonne démarche ? Je suis preneur de toute autre solution.
    En tout cas merci pour votre aide.

  4. #4
    Invité
    Invité(e)
    Par défaut
    RE

    Citation Envoyé par jobe3141 Voir le message
    Je pensais a une fonction qui identifie les espaces et qui les compte. Si ils sont > 1 alors on supprime ceux en trop.
    Si c'est le cas la fonction Replace devrait faire l'affaire.

    Un exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Public Function RemplacerBlanc(strChaine As String) As String
        RemplacerBlanc = Replace(strChaine, "  ", " ")
    End Function
    Cela remplacera deux espaces par 1 et ne touchera pas aux espaces seules.

    Philippe

  5. #5
    Membre à l'essai
    Inscrit en
    Février 2011
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 44
    Points : 19
    Points
    19
    Par défaut
    Merci pour la fonction mais elle ne répond pas a mon besoin. En fait je me suis mal exprimer. Je souvaiterai que la fonction fonctionne de cette façon:
    Si espace =1 alors on le supprime
    Sinon
    Si espace >1 alors on en garde qu un seul.

    Est ce possible ou pas?
    Merci pour ton retour rapide.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Re

    Citation Envoyé par jobe3141 Voir le message
    Si espace =1 alors on le supprime
    Sinon
    Si espace >1 alors on en garde qu un seul.
    Ce que tu demandes est incompatible avec ton exemple :

    texte = "B O N J O U R E T BIEN V E N U E"
    resultat = "BONJOUR ET BIENVENUE"
    Entre le R de bonjour et le ET il y a un espace, je ne peux le supprimer

    Il faudrait un exemple cohérent pour trouver la solution.

    Philippe

  7. #7
    Membre à l'essai
    Inscrit en
    Février 2011
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 44
    Points : 19
    Points
    19
    Par défaut
    Bonjour Philippe JOCHMANS,

    Effectivement mon exemple est faux. Pour reprendre, les lignes de mon fichier sont de la forme suivante:

    Valeur origine = "B O N J O U R E T B I E N V E N U E"

    En fait il y'a un nombre d'espaces aléatoires entre les mots et par contre les mots eux mêmes sont séparés par un espace.

    Resultat souhaité = "BONJOUR ET BIENVENUE"
    Est ce possible de developper la fonction dans mon précédent message:

    Si espace =1 alors on le supprime
    Sinon
    Si espace >1 alors on en garde qu un seul.

    Merci encore pour ton aide.

  8. #8
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 595
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 595
    Points : 34 274
    Points
    34 274
    Par défaut
    salut,

    en partant de ce que t'a donne Philippe, je propose
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Public Function RemplacerBlanc(strChaine As String) As String
        Dim result As String
        result = strChaine
        Do Until Instr(1, result, "  ")=0
             result = Replace(result , "  ", " ")
        Loop
        RemplacerBlanc = result
    End Function
    Mais le coup du espace = 1 on supprime definitivement, ca me genait, mais ca semble etre bon

    edit : en fait pas du tout, en fait ici j'ai deja supprime les espaces...

    Donc il faut faire un traitement caractere par caractere
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  9. #9
    Membre à l'essai
    Inscrit en
    Février 2011
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 44
    Points : 19
    Points
    19
    Par défaut
    Je corrige mon exemple afin qu'il soit cohérent:

    Valeur d'origine: "B.O.N.J.O.U.R........................E.T.....B.I.E.N.V.E.N.U.E....."
    (Les points correspondent à des espaces)

    Resultat attendu: "BONJOUR.ET.BIENVENUE

    NB: Merci de ton aide jpcheck mais ta fonction ne repond pas à mon besoin.

    Merci à tous pour votre aide

Discussions similaires

  1. [debutant] Faire des espaces dans une chaine de caracteres ?
    Par junior68 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 07/06/2009, 23h37
  2. Réponses: 9
    Dernier message: 06/11/2007, 12h36
  3. espace dans une chaine de caractere
    Par nathoun92120 dans le forum Flash
    Réponses: 1
    Dernier message: 31/10/2006, 16h40
  4. [RegEx] Insérer espace dans une chaîne de caractères
    Par bb62 dans le forum Langage
    Réponses: 9
    Dernier message: 17/07/2006, 09h01
  5. Réponses: 3
    Dernier message: 31/01/2005, 23h18

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