VBA - Supprimer retour chariot

Mappie

XLDnaute Junior
Bonjour,

J'ai une cellule qui contient des retours chariots.

Est-il possible de les supprimer tout en gardant la mise en forme?

Je vous remercie par avance pour votre aide
 

Pièces jointes

  • Test_Macro.xlsm
    19.5 KB · Affichages: 55
  • Test_Macro.xlsm
    19.5 KB · Affichages: 56

STephane

XLDnaute Occasionnel
Re : VBA - Supprimer retour chariot [ hors sujet ]

bonsoir

Je me suis demandé si cela est réalisable avec un format personnalisé (de cellule), mais je n'ai pas réussi à créer un tel format.

Tu peux ajouter une colonne dont les cellules contiendraient une formule de concaténation des deux valeurs avec un retour chariot, les cellules seraient formatées pour un "renvoi automatique à la ligne".



A noter : il est possible d'insérer un retour chariot dans un format personnalisé comme le seconde onglet de la pièce jointe pour une date (taper mmmm puis CTRL J puis aaaa)).
 

Pièces jointes

  • 237002-vba-supprimer-retour-chariot.xlsm
    20 KB · Affichages: 58
Dernière édition:

Paf

XLDnaute Barbatruc
Re : VBA - Supprimer retour chariot

bonjour à tous

s'il n'y a qu'une cellule ....la méthode manuelle n'est pas très longue...

sinon un bout de code à insérer dans une macro qui fera le traitement sur la cellule sélectionnée:

Code:
Selection.Replace What:=Chr(10) & Chr(10), Replacement:=Chr(10)
If Right(Selection, 1) = Chr(10) Then Selection = Left(Selection, Len(Selection) - 1)

A+
 

Mappie

XLDnaute Junior
Re : VBA - Supprimer retour chariot

Bonjour et merci à tous pour vos différentes réponses

Le code de Paf fonctionne mais est-il possible de conserver la mise en forme? J'aimerais que le nom de ville (ville1, ville2....) soit en gras et la ou les lignes du dessous (variable) ne le soit pas.

Merci pour votre aide
 

Pièces jointes

  • Test_Macro_v2.xlsm
    18.8 KB · Affichages: 79

Paf

XLDnaute Barbatruc
Re : VBA - Supprimer retour chariot

Re,

je n'avais vu les macros existantes Synthese() et Gras(). plutôt que de rajouter une troisième macro, mieux vaut adapter les premières:
Code:
Sub Synthese()
 Range("A2").Select
 Range(Selection, Selection.End(xlDown)).Select
 t = Selection.Rows.Count
    
 Range(Cells(3, 2), Cells(t + 2, 2)).Select
 For Each i In Selection
    If i <> "" Then
        s = InStr(i, Chr(10))
        p1 = Left(i, s - 1)
        p2 = Right(i, Len(i) - s)
        phrase = phrase & p1 & Chr(10) & p2 & Chr(10)
    End If
 Next
 Cells(t + 3, 2) = Left(phrase, Len(phrase) - 1)
 Cells(t + 3, 2).Select
 Gras
End Sub

Code:
Sub Gras()
 Dim col$, C As Range, s, i%, n%
 col = "B"
 Columns(col).Cells.Font.Bold = False
 On Error Resume Next 'à cause de la cellule fusionnée
 For Each C In Columns(col).SpecialCells(xlCellTypeConstants)
  s = Split(C, vbLf)
  For n = 0 To UBound(s) Step 2
    For i = 0 To n
        decal = decal + Len(s(i)) + 1
    Next
    decal = decal - Len(s(0))
    C.Characters(decal, Len(s(n))).Font.Bold = True
    decal = 0
  Next
 Next
End Sub

A+
 

Mappie

XLDnaute Junior
Re : VBA - Supprimer retour chariot

Re,

je n'avais vu les macros existantes Synthese() et Gras(). plutôt que de rajouter une troisième macro, mieux vaut adapter les premières:
Code:
Sub Synthese()
 Range("A2").Select
 Range(Selection, Selection.End(xlDown)).Select
 t = Selection.Rows.Count
    
 Range(Cells(3, 2), Cells(t + 2, 2)).Select
 For Each i In Selection
    If i <> "" Then
        s = InStr(i, Chr(10))
        p1 = Left(i, s - 1)
        p2 = Right(i, Len(i) - s)
        phrase = phrase & p1 & Chr(10) & p2 & Chr(10)
    End If
 Next
 Cells(t + 3, 2) = Left(phrase, Len(phrase) - 1)
 Cells(t + 3, 2).Select
 Gras
End Sub

Code:
Sub Gras()
 Dim col$, C As Range, s, i%, n%
 col = "B"
 Columns(col).Cells.Font.Bold = False
 On Error Resume Next 'à cause de la cellule fusionnée
 For Each C In Columns(col).SpecialCells(xlCellTypeConstants)
  s = Split(C, vbLf)
  For n = 0 To UBound(s) Step 2
    For i = 0 To n
        decal = decal + Len(s(i)) + 1
    Next
    decal = decal - Len(s(0))
    C.Characters(decal, Len(s(n))).Font.Bold = True
    decal = 0
  Next
 Next
End Sub

A+

Merci beaucoup paf pour votre réponse.

Le code fonctionne mais je crois qu'il y a un décalage dans la mise en forme où une partie des caractères se met en gras.

Comme je ne maîtrise pas très bien la boucle et les variables, est-ce modifiable ou faut-il tout reprendre?
 

Paf

XLDnaute Barbatruc
Re : VBA - Supprimer retour chariot

Re,

je crois qu'il y a un décalage dans la mise en forme où une partie des caractères se met en gras.

a priori la macro Gras() mettait en gras, dans toutes les cellules de la colonne B, une ligne sur deux.
La modification apportée ne change pas cette règle, et il n'y avait aucun décalage lors des essais sur le classeur joint.

Reprécisez donc la règle de mise en forme, ainsi que le décalage constaté.

A+
 

Mappie

XLDnaute Junior
Re : VBA - Supprimer retour chariot

Re,



a priori la macro Gras() mettait en gras, dans toutes les cellules de la colonne B, une ligne sur deux.
La modification apportée ne change pas cette règle, et il n'y avait aucun décalage lors des essais sur le classeur joint.

Reprécisez donc la règle de mise en forme, ainsi que le décalage constaté.

A+

Bonjour et merci.

Je souhaiterai en fait que la première ligne de chaque cellule soit en gras. Le nombre de lignes qui suit est variable.
En concaténant le contenu de l'ensemble des cellules dans une même cellule (execution de la macro synthese), la mise en forme est conservée.

Merci beaucoup pour votre aide
 

Pièces jointes

  • Test_Macro_v3.xlsm
    17.6 KB · Affichages: 46

Paf

XLDnaute Barbatruc
Re : VBA - Supprimer retour chariot

re,

en fait il faut tout reprendre ! actuellement c'est la macro Synthese() qui crée la synthèse et puis en dernier appelle la macro Gras() pour toute la colonne B. La mise en gras est basé sur le double saut de ligne et qu'on veut supprimer.

Je ne vois pas de solution simple pour réaliser votre demande

Bonne suite
 

Paf

XLDnaute Barbatruc
Re : VBA - Supprimer retour chariot

Re et bonjour Si...,

J'avais bien pensé à cette astuce sur V*..., mais je crains que cette donnée ne soit qu'un exemple, et qu'au final on ait des noms de ville réels. Et là .... ?

A+
 

Mappie

XLDnaute Junior
Re : VBA - Supprimer retour chariot

Re et bonjour Si...,

J'avais bien pensé à cette astuce sur V*..., mais je crains que cette donnée ne soit qu'un exemple, et qu'au final on ait des noms de ville réels. Et là .... ?

A+

Bonjour et merci Si... et Paf pour votre aide.

Effectivement, j'ai des noms de villes réels....
Si je comprends bien le code de Si....je dois d'abord nommer ma plage de celulle (qui est variable)
 

Discussions similaires

Statistiques des forums

Discussions
312 241
Messages
2 086 523
Membres
103 242
dernier inscrit
Patoshick