Changement de caractères dans une chaine

DragonRouge Messages postés 350 Statut Membre -  
DragonRouge Messages postés 350 Statut Membre -
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. Zoul67 Messages postés 2001 Statut Membre 149
     
    Bonjour,

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

    A+
    0
  2. DragonRouge Messages postés 350 Statut Membre 13
     
    1657 lignes, ouahou...
    En fait, j'ai trouvé une solution avec VBA.
    Merci qu'en même.

    A+
    0
    1. JvDo Messages postés 1924 Date d'inscription   Statut Membre Dernière intervention   859
       
      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. Zoul67 Messages postés 2001 Statut Membre 149
       
      Je ne comprends toujours pas... "Remplacer tout" remplace...tout. Féclicitations pour la macro mais quel était l'intérêt de VBA ?
      0
  3. DragonRouge Messages postés 350 Statut Membre 13
     
    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