XL 2013 VBA supprimer Les espaces avant un retour chariot

  • Initiateur de la discussion Initiateur de la discussion Tiger75
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Tiger75

XLDnaute Nouveau
Bonjour,
Je cherche un code en VBA qui me permettrait de supprimer les espaces avant un retour chariot,
exemple dans ma cellule j'ai :
France" "
ET
Espagne" "AND" "Portugal

je voudrai supprimer le " " avant le ET
Afin d'avoir
France
ET
Espagne" "AND" "Portugal
 
Hello Pierre Jean,
désolé pour la collision
du coup.. on peut sans doute remplacer cette ligne de mon code
tablo(0) = Left(tablo(0), Len(tablo(0)) - 1)
par ton code
tablo(0)=trim(tablo(0))

bonjour

essai avec la fonction Split
avec ce code, si ton texte est en A7
VB:
Sub sup()

tablo = Split(Range("A7"), Chr(10))
'MsgBox tablo(0)
tablo(0) = Left(tablo(0), Len(tablo(0)) - 1)
'MsgBox tablo(0)
For i = UBound(tablo) To 0 Step -1
    chaine = tablo(i) & Chr(10) & chaine
Next i
Range("A7") = chaine
End Sub
 
Re..
Normalement. ca fonctionne. chez moi..
VB:
Sub sup()

tablo = Split(Range("A7"), Chr(10)) 'on sépare le texte de la cellule A7, avec retour chariot comme séparateur
tablo(0) = Trim(tablo(0)) 'on enlève les espaces dans le premier élément du tablo: donc ici.. "FRANCE " qui devien "FRANCE"
'et on reassemble la chaine en remettant des retours chariots
For i = UBound(tablo) To 0 Step -1
    chaine = tablo(i) & Chr(10) & chaine
Next i
Range("A7") = chaine 'on réécrit la chaine
End Sub


Sub sup2()

tablo = Split(Range("A7"), Chr(10)) 'on sépare le texte de la cellule A7, avec retour chariot comme séparateur
For i = UBound(tablo) To 0 Step -1
    chaine = Trim(tablo(i)) & Chr(10) & chaine
Next i
Range("A7") = chaine 'on réécrit la chaine
End Sub
si tu souhaites supprimer les espaces de CHAQUE ligne./. voir sup2

sinon. avec ton fichier exemple.. ce sera plus pratique..
 
bah en fait. dans ton code. tu as oublié une ligne importante...🙂

VB:
Sub Bouton()
Dim str_temp As String
Dim tab_str_temp() As String
Dim iNbLigneDci As Integer

iNbLigneDci = Application.WorksheetFunction.CountA(Columns(2)) - 1

   
    For i = 3 To iNbLigneDci + 3
        str_temp = Cells(i, "R")
        tab_str_temp = Split(str_temp, Chr(10))
        For j = 0 To UBound(tab_str_temp)
            chaine = Trim(tab_str_temp(j)) & Chr(10) & chaine
        Next j
    Next i
    Cells(i, "R") = chaine 'on remet le resultat dans la cellule
End Sub
 
??
ce code avec ton fichier ne me donne plus d'espace en fin de ligne...
VB:
Sub Bouton()
Dim str_temp As String
Dim tab_str_temp() As String
Dim iNbLigneDci As Integer

'iNbLigneDci = Application.WorksheetFunction.CountA(Columns(2)) - 1
iNbLigneDci = Range("R" & Rows.Count).End(xlUp).Row - 2
   
    For i = 3 To iNbLigneDci + 2
        chaine = ""
        tab_str_temp = Split(Cells(i, "R"), Chr(10))
        For j = UBound(tab_str_temp) To 0 Step -1
            chaine = Trim(tab_str_temp(j)) & Chr(10) & chaine
        Next j
        Cells(i, "R") = chaine 'la chaine se termine toujours par un retour chariot...
    Next i
   
End Sub
 
et donc ce code pour supprimer le dernier retour chariot
VB:
Sub Bouton()
Dim str_temp As String
Dim tab_str_temp() As String
Dim iNbLigneDci As Integer

'iNbLigneDci = Application.WorksheetFunction.CountA(Columns(2)) - 1
iNbLigneDci = Range("R" & Rows.Count).End(xlUp).Row - 2
   
    For i = 3 To iNbLigneDci + 2
        chaine = ""
        tab_str_temp = Split(Cells(i, "R"), Chr(10))
        For j = UBound(tab_str_temp) To 0 Step -1
            chaine = Trim(tab_str_temp(j)) & Chr(10) & chaine
        Next j
        Cells(i, "R") = Left(chaine, Len(chaine) - 1) 'on supprime le dernier retour chariot
    Next i
End Sub
 
Merci 1000 fois , j'ai une toute dernière requête, imaginons que il y a déjà plusieurs retour chariot à la fin de la cellule, ou bien au début de la cellule, y a t'il un moyen de les supprimer ? ( juste ceux qui sont après et avant l'expression) comme ici :
 

Pièces jointes

Avec ceci je pense.. à tester sur toutes les possibilités que tu peux avoir..
des retours chariots consécutifs avant, après, au milieu....
VB:
Sub Bouton()
Dim str_temp As String
Dim tab_str_temp() As String
Dim iNbLigneDci As Integer

 iNbLigneDci = Range("R" & Rows.Count).End(xlUp).Row - 2
   
     For i = 3 To iNbLigneDci + 2
         chaine = ""
         tab_str_temp = Split(Cells(i, "R"), Chr(10))
         For j = UBound(tab_str_temp) To 0 Step -1
             If tab_str_temp(j) <> "" Then chaine = Trim(tab_str_temp(j)) & Chr(10) & chaine
         Next j
         Cells(i, "R") = Left(chaine, Len(chaine) - 1) 'on supprime le dernier retour chariot
     Next i
End Sub
 
Code:
Sub Bouton()
Dim str_temp As String
Dim tab_str_temp() As String
Dim iNbLigneDci As Integer

'iNbLigneDci = Application.WorksheetFunction.CountA(Columns(2)) - 1
iNbLigneDci = Range("R" & Rows.Count).End(xlUp).Row - 2
    str_temp = Cells(i, "R")
     For i = 3 To iNbLigneDci + 2
         chaine = ""
         tab_str_temp = Split(Cells(i, "R"), Chr(10))
        For j = UBound(tab_str_temp) To 0 Step -1
             chaine = Trim(tab_str_temp(j)) & Chr(10) & chaine
        Next j
        If str_temp = "" Then
            i = i + 1
        End If
        
         Cells(i, "R") = Left(chaine, Len(chaine) - 1) 'on supprime le dernier retour chariot
     Next i
End Sub
je me permets de relancer le sujet ... le code ne fonctionne plus quand on a des cellule vide, et lorsque c'est le cas j'aimerai passer à la cellule suivante
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
169
Réponses
10
Affichages
511
Réponses
5
Affichages
327
Retour