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

Macros et VBA Excel Discussion :

VBA_Supprimer les espaces superflus dans une chaîne de caractères


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2013
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Avril 2013
    Messages : 21
    Par défaut VBA_Supprimer les espaces superflus dans une chaîne de caractères
    Bonjour

    Est ce que quelqu'un a une idée comment supprimer les espaces superflus dans ma chaîne de caractères Var1 qui a les caractéristiques suivantes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    Public Type File
        Header As String
        Body As String
    End Type
     
    Public Type Body
        BodyName As String
        Comments As String
    End Type
     
    Dim Var As String
    Dim Var1 As String
     
    Var = Fun1(ByVal filename).Body  ' tel que Fun1 est une fonction définie as File
    Var1 = Fun2(ByVal Var).Comments  ' tel que Fun2 est une fonction définie as File
    J'ai essayé le Trim, Rtrim et Ltrim mais ça n'a pas marché !
    J'espère avoir été claire en posant ma question donc si quelqu'un peut m'aider, qu'il n'hésite pas

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

    Une solution possible avec une fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Function TexteSansCaracteresBlancs(TexteAVerifier As String)
     
    Dim CtrI As Integer
     
      TexteSansCaracteresBlancs = ""
      For CtrI = 1 To Len(TexteAVerifier)
        Select Case Mid(TexteAVerifier, CtrI, 1)
     
            Case Chr(32), Chr(160)
     
            Case Else
     
                TexteSansCaracteresBlancs = TexteSansCaracteresBlancs & Mid(TexteAVerifier, CtrI, 1)
     
        End Select
     
      Next CtrI
     
    End Function
    Et pour essayer la fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub EssaiTexteSansCaracteresBlancs()
     
            Dim Var1 As String
     
            Var1 = "AAAAA BBBBB CCCCC"
     
            Var1 = TexteSansCaracteresBlancs(Var1)
            MsgBox (Var1)
     
    End Sub
    Cordialement.

  3. #3
    Membre averti
    Inscrit en
    Avril 2013
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Avril 2013
    Messages : 21
    Par défaut
    Merci Eric pour ta solution.

    Toutefois, je suis navrée de te dire qu'elle ne fonctionne pas sur ma variable. En effet, elle ne supprime les espaces ni au milieu ni à la fin de ma chaîne Var1 !!

    Peut être qu'elle a donné le résultat escompté sur la chaîne "AAAAA BBBBB CCCCC" puisque c'est une chaîne simple c'est à dire n'est pas de "type utilisateur" comme est le cas de ma chaîne Var1.

    Donc si tu vois une autre issue à ce problème, n'hésite pas à me la communiquer

  4. #4
    Expert confirmé Avatar de garn
    Homme Profil pro
    Conseil en assistance à maîtrise d'ouvrage
    Inscrit en
    Janvier 2006
    Messages
    1 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Conseil en assistance à maîtrise d'ouvrage

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 487
    Par défaut
    Bonjour,

    tu as essayé les deux, trim et replace ?

  5. #5
    Membre averti
    Inscrit en
    Avril 2013
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Avril 2013
    Messages : 21
    Par défaut
    oui gran, j'ai essayé le trim et le replace mais en vain !!
    en effet, ma chaîne est extraite à partir d'un fichier texte et elle est de la forme suivante:
    var = "personne ( " _
    & "Alain : homme;" & vbLf _
    & "Alex : homme;" & vbLf _
    & "Marie : femme;" & vbLf _
    & "Sophie : femme;" & vbLf _
    & "jeanne : femme;" & vbLf _
    & "paul : homme(0 à 10)" & vbLf _
    & ");" & vbLf _
    & vbLf _
    & vbLf _

    et je désire supprimer les espaces à la fin de la chaine.
    Merci à l'avance

  6. #6
    Invité
    Invité(e)
    Par défaut
    Et si tu ajoutes Chr(10) dans le code ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    Function TexteSansCaracteresBlancs(TexteAVerifier As String)
     
    Dim CtrI As Integer
     
      TexteSansCaracteresBlancs = ""
      For CtrI = 1 To Len(TexteAVerifier)
        Select Case Mid(TexteAVerifier, CtrI, 1)
     
            Case Chr(32), Chr(160), Chr(10)
     
            Case Else
     
                TexteSansCaracteresBlancs = TexteSansCaracteresBlancs & Mid(TexteAVerifier, CtrI, 1)
     
        End Select
     
      Next CtrI
     
     
    End Function

    -Que donne le résultat de Var1 avec ce programme ?

    -As-tu testé le dernier programme que je t'ai envoyé ?

    - Autre question : que doit contenir Var1 pour toi ? Le résultat que tu as envoyé est-il bien le résultat qui doit être modifié par la suite ?


    Cordialement.

  7. #7
    Invité
    Invité(e)
    Par défaut Bonjour test ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim Var1 As String
    Var1 = Replace("AAAAA BBBBB CCCCC", " ", "")

  8. #8
    Invité
    Invité(e)
    Par défaut
    Peux-tu mettre en ligne un exemple de chaîne ?

    Sinon, tu peux tester ce programme pour repérer les codes Chr posant problème. Une fois trouvés, il suffira de les exclure dans la macro de mon premier message en complétant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    Sub TesterTesterLesCaracteres()
     
      Dim Var1 As String
     
      Var1 = "AA BB CC"
      Call TesterLesCaracteres(Var1)
     
     
    End Sub
     
    Sub TesterLesCaracteres(TexteAVerifier As String)
     
    Dim CtrI As Integer
    Dim CtrJ As Integer
     
      For CtrI = 1 To Len(TexteAVerifier)
     
         For CtrJ = 0 To 255
     
           Select Case Mid(TexteAVerifier, CtrI, 1)
     
            Case Chr(CtrJ)
              MsgBox (CtrJ)
            End Select
     
         Next CtrJ
     
      Next CtrI
     
     
     
    End Sub

    Sinon, met une chaîne en ligne pour qu'on puisse se faire une idée.

    Cordialement.

Discussions similaires

  1. [Free Pascal] Programme qui supprime les espaces inutiles dans une chaîne
    Par joreveur dans le forum Free Pascal
    Réponses: 18
    Dernier message: 24/08/2012, 16h51
  2. Réponses: 16
    Dernier message: 19/11/2008, 12h02
  3. Réponses: 5
    Dernier message: 25/02/2008, 14h34
  4. Supprimer les espaces consécutifs dans une chaîne
    Par aymenet1 dans le forum Pascal
    Réponses: 12
    Dernier message: 27/11/2007, 22h21
  5. Effacer les espaces dans une chaîne de caractères
    Par JohnnyWalk dans le forum Débuter avec Java
    Réponses: 16
    Dernier message: 19/07/2007, 14h13

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