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 :

Supprimer les sauts de lignes vides


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2015
    Messages : 75
    Par défaut Supprimer les sauts de lignes vides
    Bonjour tout le monde,

    Après avoir bien cherché sur le web, je ne trouve pas chaussure à mon problème
    J'ai un tableau plein de données, qui, du fait d'un traitement ultérieur, contient des cellules de texte avec plusieurs sauts de lignes entre du texte, et d'autres contenant une 1ère ligne puis que des sauts de lignes.
    Cela me gène pour l'application de filtres, du fait qu'un même mot pourra, selon la ligne de mon tableau, être succédé de 2 ou 4 sauts de ligne !
    Une image parlant mieux que les mots :
    Nom : 2015-08-06 13_24_55-Microsoft Excel - Macro mise en forme des extractions AISTEL.xlsm.png
Affichages : 2438
Taille : 2,9 Ko

    Et le code que j'ai voulu mettre en place :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    wsextract.Cells(i, j) = Replace(wsextract.Cells(i, j), Chr(10) & "", "")
    Ce code me met tout sur une ligne, même des lignes de texte qui se succèdent

    Je remercie toute aide

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub test()
    wsextract.Cells(I, j) = SuppCrlf(wsextract.Cells(I, j))
    End Sub
    Function SuppCrlf(Txt) As String
    Dim T, I As Integer
    T = Split(Replace(Txt, Chr(13), "") & Chr(10), Chr(10))
     
    For I = 0 To UBound(T) - 1
        If Trim("" & T(I)) <> "" Then If SuppCrlf = "" Then SuppCrlf = T(I) Else SuppCrlf = SuppCrlf & Chr(10) & T(I)
    Next
     
     
    End Function

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2015
    Messages : 75
    Par défaut
    Whaou !
    J'avoue que j'ai le cerveau qui chauffe, j'essaie de comprendre ton code mais je galère !

    déjà rien que pour ta variable T : quelle différence fais-tu entre Chr(13) et Chr(10) ? Je n'arrive pas à comprendre le "Replace" dans le "Split".
    Je pense que toute mon incompréhension est à ce niveau là ^^

    En tout cas merci de me proposer une solution

  4. #4
    Invité
    Invité(e)
    Par défaut
    Une ligne te texte ce termine par vbcrlf chr(10) & chr(13) 'chr(13)=fin de lingeJe retire les fin de lignes Replace(Txt, Chr(13), "")! Je convertis en tableau en utilisant le chr(10) comme séparateur T = Split(Replace(Txt, Chr(13), "") & Chr(10), Chr(10)) t étant le tableau qui reçoit les valeurs et split la fonction qui découpe le texte en tableau!

    Je balaye le tableau et si je trouve une valeur je la retourne! Ainsi je supprime les lignes vides
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For I = 0 To UBound(T) - 1
        If Trim("" & T(I)) <> "" Then If SuppCrlf = "" Then SuppCrlf = T(I) Else SuppCrlf = SuppCrlf & Chr(10) & T(I)
    Next

  5. #5
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Bonjour.

    Voici une autre variation sur le meme theme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Function gb(txt)
    'Remplacer Chr(13) par Chr(10)
    xx = Replace(txt, Chr(13), Chr(10))
     
    'remplacer doubleInterligne par simple
    doubleInterligne = Chr(10) & Chr(10)
     
    While InStr(xx, doubleInterligne)
     xx = Replace(xx, doubleInterligne, Chr(10))
    Wend
     
    gb = xx
    End Function

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2015
    Messages : 75
    Par défaut
    Merci beaucoup de vos réponses !
    Problème résolu !

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

Discussions similaires

  1. Comment supprimer les sauts de ligne dans un String ?
    Par pathfinder06 dans le forum Langage
    Réponses: 5
    Dernier message: 28/02/2008, 11h40
  2. Supprimer les sauts de ligne d'une saisie
    Par The SorroW dans le forum Langage
    Réponses: 1
    Dernier message: 23/01/2008, 09h47
  3. Supprimer les sauts de ligne
    Par guigo dans le forum Langage
    Réponses: 2
    Dernier message: 15/11/2007, 14h26
  4. Supprimer les sauts de ligne
    Par benkunz dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 15/10/2007, 14h55
  5. Supprimer les sauts de ligne d'un textbox rempli
    Par Sytchev3 dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 10/01/2007, 15h33

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