Changement de caractères dans une chaine

Bonjour,

Comment changer le "40" en "10" et le "#00CED1" en "#FFA500" dans une liste de chaine de type suivant avec une macro VBA :

<font size="40"><font color="#4169E1">(Ripley)<font color="#00CED1">

Merci d'avance pour votre aide.

PS: Pour infos, il s'agit d'un fichier .srt pour le sous-titrage d'un film.



--
« De l'Élève naît le Maître, mais un Maître sans Élève ne reste qu'un savoir perdu. »

3 réponses

  1. Bonjour,

    Pourquoi avec VBA ? Avec le bloc-notes "remplacer tout" n'est pas suffisant ?

    A+
    0
    1. 1657 lignes, ouahou...
      En fait, j'ai trouvé une solution avec VBA.
      Merci qu'en même.

      A+
      0
      1. Bien explique ce que tu as fait!!

        Montre ton code qu'on puisse s'en inspirer.

        ça peut intéresser du monde.

        Cdlt
        0
      2. Je ne comprends toujours pas... "Remplacer tout" remplace...tout. Féclicitations pour la macro mais quel était l'intérêt de VBA ?
        0
    2. Alors les Loulous, voilà ma solution. Peut-être pas esthétique mais très performante.

      Donc, le problème, dans la liste suivante, est de remplacer une partie d'une chaine par une autre.

      Exemple :

      Extrait d'un document WordPad pour un sous-titrage en .srt copier/coller dans Excel sur une colonne.

      Dans cette liste (6 à 1659), je veux remplacer "<font color="#FF00FF">" où qu'il se trouve dans la liste, avec par exemple "<font color="#32CD32">".

      Avec la macro ci-dessous rien de plus facile. Ajouter un bouton (contrôle formulaire) dans votre feuille de calcul "Feuil1" et affecter lui la macro ci-dessous. Bien sur, il faut des données dans la colonne "A" qui soit quelque peu redondante, comme un fichier de sous-titre par exemple. Quel avantage d'utiliser une macro pour ne modifier qu'une dizaine de données. =)

      Remarque: J'ai ajouté du code pour afficher les modifications effectuées dans les cellules E3:E10 (Partie de chaine à changée) et F3:F10 (Partie de chaine changée par :). Au-delà, une Box vous demande d'effacer le tableau pour recommencer à 0.

      __________________________________________________

      LISTE

      6
      00:01:05,009 --> 00:01:08,996
      <font size="10"><font color="#FF00FF">Augmentation du fond sonore.</font>

      7
      00:01:27,929 --> 00:01:31,517
      <font size="10"><font color="#FF00FF">Fond sonore
      de plus en plus présent.</font>

      ........

      1658
      01:53:23,425 --> 01:53:24,927
      <font size="10"><font color="#FFFFFF">
      Aller, viens le chat.</font></font></font>

      1659
      01:53:47,171 --> 01:53:50,468
      <font size="10"><font color="#FF0000">Musique douce et apaisante.
      Générique de fin.</font></font>

      ___________________________________________

      MACRO

      Sub Bouton4_Clic()

      Dim feuil As Worksheet
      Dim MotRecherche As Variant
      Dim MotRemplace As Variant
      Dim Msg, Style, Title, Response, MyString

      MotRecherche = InputBox("Quel partie de la chaine recherchez-vous ?", Title:="Recherche une partie de la chaine")

      If MotRecherche = "" Then Exit Sub

      MotRemplace = InputBox("Remplace partie de la chaine par : ", Title:="Remplace une partie de la chaine par : ")

      If MotRemplace = "" Then Exit Sub

      For Each feuil In ThisWorkbook.Worksheets
      Worksheets("Feuil1").Columns("A").Replace What:=MotRecherche, Replacement:=MotRemplace
      Next feuil

      If Cells(3, 5).Value <> "" Then GoTo Suivant1
      Cells(3, 5).Value = MotRecherche
      Cells(3, 6).Value = MotRemplace
      GoTo SuivantFin

      Suivant1:
      If Cells(4, 5).Value <> "" Then GoTo Suivant2
      Cells(4, 5).Value = MotRecherche
      Cells(4, 6).Value = MotRemplace
      GoTo SuivantFin

      Suivant2:
      If Cells(5, 5).Value <> "" Then GoTo Suivant3
      Cells(5, 5).Value = MotRecherche
      Cells(5, 6).Value = MotRemplace
      GoTo SuivantFin

      Suivant3:
      If Cells(6, 5).Value <> "" Then GoTo Suivant4
      Cells(6, 5).Value = MotRecherche
      Cells(6, 6).Value = MotRemplace
      GoTo SuivantFin

      Suivant4:
      If Cells(7, 5).Value <> "" Then GoTo Suivant5
      Cells(7, 5).Value = MotRecherche
      Cells(7, 6).Value = MotRemplace
      GoTo SuivantFin

      Suivant5:
      If Cells(8, 5).Value <> "" Then GoTo Suivant6
      Cells(8, 5).Value = MotRecherche
      Cells(8, 6).Value = MotRemplace
      GoTo SuivantFin

      Suivant6:
      If Cells(9, 5).Value <> "" Then GoTo Suivant7
      Cells(9, 5).Value = MotRecherche
      Cells(9, 6).Value = MotRemplace
      GoTo SuivantFin

      Suivant7:
      If Cells(10, 5).Value <> "" Then GoTo Suivant8
      Cells(10, 5).Value = MotRecherche
      Cells(10, 6).Value = MotRemplace
      GoTo SuivantFin

      Suivant8:
      Msg = "Tableau plein. Voulez-vous l'effacer ?"
      Style = vbYesNo + vbCritical + vbDefaultButton2
      Title = "Effacer le Tableau "

      Response = MsgBox(Msg, Style, Title)
      If Response = vbYes Then Range(Cells(3, 5), Cells(10, 6)).Value = "" Else Exit Sub

      Cells(3, 5).Value = MotRecherche
      Cells(3, 6).Value = MotRemplace

      SuivantFin:

      End Sub

      ______________________________________________

      Y a peut-être mieux, mais pour moi cela me suffit amplement.

      A+
      « De l'Elève naît le Maître, mais un Maître sans Elève ne reste qu'un savoir perdu. »
      0