Changement de caractères dans une chaine

DragonRouge Messages postés 337 Date d'inscription   Statut Membre Dernière intervention   -  
DragonRouge Messages postés 337 Date d'inscription   Statut Membre Dernière intervention   -
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.


A voir également:

3 réponses

Zoul67 Messages postés 1959 Date d'inscription   Statut Membre Dernière intervention   149
 
Bonjour,

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

A+
0
DragonRouge Messages postés 337 Date d'inscription   Statut Membre Dernière intervention   13
 
1657 lignes, ouahou...
En fait, j'ai trouvé une solution avec VBA.
Merci qu'en même.

A+
0
JvDo Messages postés 1978 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
Zoul67 Messages postés 1959 Date d'inscription   Statut Membre Dernière intervention   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
DragonRouge Messages postés 337 Date d'inscription   Statut Membre Dernière intervention   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