Remplacement Chr(10) par <BR>

Résolu
bmwax Messages postés 15 Date d'inscription mercredi 24 juin 2009 Statut Membre Dernière intervention 6 août 2009 - 5 août 2009 à 13:07
bmwax Messages postés 15 Date d'inscription mercredi 24 juin 2009 Statut Membre Dernière intervention 6 août 2009 - 6 août 2009 à 10:56
Bonjour à tous

J'ai une colonne intitulée commentaire.
Je voudrais créer une macro qui remplace Chr(10) ou vbCrLf (dans le cas d'un ALT+ENTER - saut de ligne dans une même cellule) par
.

Voici mon code :

For i = 3 To Cells(65536, CommentCol).End(xlUp).Row
Cells(i, CommentCol).Select
Cells(i, CommentCol).Value = replace(Search(vbCrLf, Cells(i, CommentCol).Value), vbCrLf, "
")
Next i

Mais voilà il ne se passe pas grand chose...

Y aurait-il une âme intelligente pour me donner un coup de pouce ?

Merci

6 réponses

cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
5 août 2009 à 17:04
Salut
Compliqué.
[*]
n'est pas un terme reconnu par VB, mais bon, pourquoi pas
[*] Replace fait déjà la recherche, pourquoi avoir encore inséré un Search ?
[*] Chr(10), c'est vbLf, alors pourquoi rechercher vbCrLf ? normal qu'il ne fasse rien

--> Replace(Cells(i, CommentCol).Value, vbLf, "
")

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
3
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 13
5 août 2009 à 18:34
une demo sur la colonne A (attention pour que cela fonctionne correctement la colonne doit contenir une etiquette)

Sub demo()
    Dim cel As Range, maplage As Range
    Application.ScreenUpdating = False
    Set maplage = Range("A1:A" & Range("A" & Columns(1).Rows.Count).End(xlUp).Row)
    maplage.AutoFilter Field:=1, Criteria1:="=*" & vbLf & "*"
    Set maplage = maplage.SpecialCells(xlCellTypeConstants, 23).SpecialCells(xlCellTypeVisible)
    If Not maplage.Rows.Count = 0 Then
        For Each cel In maplage
           cel.Value = Replace(cel.Value, vbLf, "
")
        Next
    End If
    maplage.AutoFilter
    Application.ScreenUpdating = True
End Sub


A toi de faire le reste
3
bmwax Messages postés 15 Date d'inscription mercredi 24 juin 2009 Statut Membre Dernière intervention 6 août 2009
5 août 2009 à 17:32
Merci Jack.

Le problème c'est qu'il faut xxx = replace(... et non pas replace directement

J'ai essayé ca:

Dim Cel As Range
Dim p As String
Range(Cells(FirstRowData, cnColText), Cells(65536, cnColText).End(xlUp)).Select
For Each Cel In Selection
p = Cel.Value
p = replace(p, vbLf, "
")
Cel.Value = p
Next

Mais rien ne se passe.
0
bmwax Messages postés 15 Date d'inscription mercredi 24 juin 2009 Statut Membre Dernière intervention 6 août 2009
6 août 2009 à 09:12
FAN-TAS-TIQUE !!!

Tu m'enlèves un gros cure-dent épineux du pied...

Merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
6 août 2009 à 10:32
"Le problème c'est qu'il faut xxx = replace(... et non pas replace directement" Oui, je sais, mais il te suffisait de remplacer ton actuelle syntaxe du Replace par celle que je te proposais
Et tu restais bloqué la dessus ?
0
bmwax Messages postés 15 Date d'inscription mercredi 24 juin 2009 Statut Membre Dernière intervention 6 août 2009
6 août 2009 à 10:56
Hé bien j'avoue qu'il m'arrive parfois d'oublier de réfléchir...
J'ai quand même des circonstances atténuantes : plus de café le mercredi soir après une journée de code !

Mille excuses Jack, ton code fonctionne aussi...

Merci beaucoup !
0
Rejoignez-nous