Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

retour en ligne pour chaque br trouver

  • Initiateur de la discussion Initiateur de la discussion infotun
  • 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 !

I

infotun

Guest
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 modification par un modérateur:
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
 
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 😎
 
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 😱 vous pouvais m'indiquer comment introduire ce code pour office2007..
merci
 

Pièces jointes

Dernière modification par un modérateur:
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 🙂
 
Re : retour en ligne pour chaque br trouver

Re...
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
 
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 😱
...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
 
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

Dernière édition:
Re : retour en ligne pour chaque br trouver

salut et merci pour ta disponibilité 🙂
j'ai eu un problème d'erreur lorsque j'ai essayé ton code.
voici ci-joint un exemple ou sa bug.🙁
 

Pièces jointes

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
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
6
Affichages
964
Réponses
23
Affichages
682
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…