retour en ligne pour chaque br trouver

infotun

XLDnaute Nouveau
salut
j'ai une liste de code :
ligne 1: <Synonym>a posteriori</Synonym><br><Synonym>après coup</Synonym>
ligne 2: <Synonym>dans</Synonym><br><Synonym>derrière</Synonym>
ligne 3: <Synonym>en définitive</Synonym><br><Synonym>ensuite</Synonym>
etc...

et je souhaiterais les transformer comme suit :
<Synonym>a posteriori</Synonym>
<Synonym>après coup</Synonym>
<Synonym>dans</Synonym>
<Synonym>derrière</Synonym>
<Synonym>en définitive</Synonym>
<Synonym>ensuite</Synonym>

merci pour votre aide :)
 
Dernière édition:

ROGER2327

XLDnaute Barbatruc
Re : retour en ligne pour chaque br trouver

Bonjour infotun
Si vos données son en A1, A2, A3, ..., A(n), alors
Code:
[COLOR="DarkSlateGray"]=SI(MOD(LIGNE();2);GAUCHE(SUBSTITUE(DECALER(A$1;(LIGNE()-1)/2;0);"<br>";CAR(10));CHERCHE(CAR(10);SUBSTITUE(DECALER(A$1;(LIGNE()-1)/2;0);"<br>";CAR(10)))-1);DROITE(SUBSTITUE(DECALER(A$1;(LIGNE()-1)/2;0);"<br>";CAR(10));NBCAR(SUBSTITUE(DECALER(A$1;(LIGNE()-1)/2;0);"<br>";CAR(10)))-CHERCHE(CAR(10);SUBSTITUE(DECALER(A$1;(LIGNE()-1)/2;0);"<br>";CAR(10)))))[/COLOR]
en B1, B2, B3, B4, B5, B6, ..., B(2n) devrait faire l'affaire.​
ROGER2327
 

JNP

XLDnaute Barbatruc
Re : retour en ligne pour chaque br trouver

Bonjour Infotun, Roger :),
Une approche en VBA, avec les données aussi en colonne A, sous réserve d'un <br> unique par ligne
Code:
Sub Test()
Dim I As Integer, j As Integer, Tableau() As String
I = 1
While Cells(I, 1) <> ""
Tableau = Split(Cells(I, 1), "<br>")
Cells(I, 1) = Tableau(0)
Rows(I + 1).Insert
Cells(I + 1, 1) = Tableau(1)
I = I + 2
Wend
End Sub
Bonne journée :cool:
 

infotun

XLDnaute Nouveau
Re : retour en ligne pour chaque br trouver

salut ROGER2327 j'ai essayer ton code mais sa na rien donné
JNP je ne suis pas un expert en excel surtout en vba :eek: vous pouvais m'indiquer comment introduire ce code pour office2007..
merci
 

Pièces jointes

  • retourenligne.xls
    21 KB · Affichages: 57
Dernière édition:

infotun

XLDnaute Nouveau
Re : retour en ligne pour chaque br trouver

salut ROGER2327 ton code marche bien merci
mais il ne marche pas pour les longues lignes parce que la longueur des lignes est variable..
example :
<Synonym>abattu</Synonym><br><Synonym>affecté</Synonym><br><Synonym>affolé</Synonym><br><Synonym>agité</Synonym><br><Synonym>altéré</Synonym><br><Synonym>attendri</Synonym><br><Synonym>bousculé</Synonym><br><Synonym>chambardé</Synonym>

merci pour votre aide :)
 

ROGER2327

XLDnaute Barbatruc
Re : retour en ligne pour chaque br trouver

Re...
salut ROGER2327 ton code marche bien merci
mais il ne marche pas pour les longues lignes parce que la longueur des lignes est variable..
example :
<Synonym>abattu</Synonym><br><Synonym>affecté</Synonym><br><Synonym>affolé</Synonym><br><Synonym>agité</Synonym><br><Synonym>altéré</Synonym><br><Synonym>attendri</Synonym><br><Synonym>bousculé</Synonym><br><Synonym>chambardé</Synonym>

merci pour votre aide :)
Oui, j'ai répondu au problème posé dans lequel il n'était nullement de longues lignes.
Maintenant il s'agit d'un autre problème, qui a certainement une autre réponse. Ce qui serait sympathique, ce serait de poser le problème réel et complet : ça éviterait de perdre son temps à résoudre des problèmes qui ne se posent pas...
Cordialement,
ROGER2327
 

ROGER2327

XLDnaute Barbatruc
Re : retour en ligne pour chaque br trouver

Re...
salut ROGER2327 dans le fichier que j'ai attaché en haut il y avais des lignes longues...
merci sincèrement de ton aide :eek:
...qui ne contenaient q'un seul <br> :
ligne 1: <Synonym>a posteriori</Synonym><br><Synonym>après coup</Synonym>
ligne 2: <Synonym>dans</Synonym><br><Synonym>derrière</Synonym>
ligne 3: <Synonym>en définitive</Synonym><br><Synonym>ensuite</Synonym>
ROGER2327
 

ROGER2327

XLDnaute Barbatruc
Re : retour en ligne pour chaque br trouver

Suite...
Une proposition de solution à votre deuxième problème dans le classeur joint.
Code:
[COLOR="DarkSlateGray"]Option Explicit

Sub découpe()
Dim oDat, oSep, dSp
Dim i As Long, j As Long
   With Sheets("Feuil1")
      oDat = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0)).Value
   End With
   oDat = Application.Transpose(oDat)
   ReDim Preserve oDat(1 To -1 + UBound(oDat))
   ReDim oSep(1 To 1)
   For i = 1 To UBound(oDat)
      If Not IsEmpty(oDat(i)) Then
         dSp = Split(oDat(i), "<br>")
         For j = 0 To UBound(dSp)
            oSep(UBound(oSep)) = dSp(j)
            ReDim Preserve oSep(1 To 1 + UBound(oSep))
         Next j
      End If
   Next i
   ReDim Preserve oSep(1 To Application.Max(1, -1 + UBound(oSep)))
   With Sheets("Feuil2")
      .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp)).ClearContents
      .Range(.Cells(1, 1), .Cells(UBound(oSep), 1)).Value = Application.Transpose(oSep)
      .Activate
   End With
End Sub[/COLOR]
Les données sont prises dans la colonne A de la feuille Feuil1.
Le résultat est affiché dans la colonne A de la feuille Feuil2.​
ROGER2327
 

Pièces jointes

  • infotun_v2.zip
    9.1 KB · Affichages: 26
Dernière édition:

ROGER2327

XLDnaute Barbatruc
Re : retour en ligne pour chaque br trouver

Re...
Normal. Alors que la plus longue chaîne de caractères que vous avez proposée précédemment comptait 235 caractères, celle qui fait échouer la procédure possède 407 caractères. Nombre de fonctions ne traite que des chaînes de longueur inférieure ou égale à 255. D'autres fonctions acceptent des chaînes plus longues.
Par conséquent, si vous voulez traiter des chaînes de plus de 255 caractères, il faut éliminer de la procédure les fonctions qui ne les acceptent pas. Par exemple, essayez ce qui suit :
Code:
[COLOR="DarkSlateGray"]Sub découpe()
Dim oDat, oSep, dSp
Dim i As Long, j As Long
   With Sheets("Feuil1")
      oDat = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0)).Value
   End With
   ReDim oSep(1 To 1)
   For i = 1 To -1 + UBound(oDat, 1)
      If Not IsEmpty(oDat(i, 1)) Then
         dSp = Split(oDat(i, 1), "<br>")
         For j = 0 To UBound(dSp)
            oSep(UBound(oSep)) = dSp(j)
            ReDim Preserve oSep(1 To 1 + UBound(oSep))
         Next j
      End If
   Next i
   ReDim Preserve oSep(1 To Application.Max(1, -1 + UBound(oSep)))
   With Sheets("Feuil2")
      .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp)).ClearContents
      .Range(.Cells(1, 1), .Cells(UBound(oSep), 1)).Value = Application.Transpose(oSep)
      .Activate
   End With
End Sub[/COLOR]
Cela dit, il serait commode que vous donnassiez toutes les contraintes de votre problème : cela éviterait de perdre son temps à traiter un problème nouveau tous les jours.​
ROGER2327
 

Discussions similaires

Réponses
4
Affichages
225

Statistiques des forums

Discussions
312 485
Messages
2 088 805
Membres
103 971
dernier inscrit
abdazee