Changement de caractères dans une chaine

Fermé
DragonRouge Messages postés 337 Date d'inscription lundi 11 juin 2007 Statut Membre Dernière intervention 25 janvier 2014 - 23 janv. 2014 à 19:49
DragonRouge Messages postés 337 Date d'inscription lundi 11 juin 2007 Statut Membre Dernière intervention 25 janvier 2014 - 25 janv. 2014 à 18:21
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 lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
24 janv. 2014 à 10:04
Bonjour,

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

A+
0
DragonRouge Messages postés 337 Date d'inscription lundi 11 juin 2007 Statut Membre Dernière intervention 25 janvier 2014 13
24 janv. 2014 à 18:37
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 mercredi 27 juillet 2005 Statut Membre Dernière intervention 28 septembre 2020 858
24 janv. 2014 à 18:48
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 lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
Modifié par Zoul67 le 24/01/2014 à 19:57
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 lundi 11 juin 2007 Statut Membre Dernière intervention 25 janvier 2014 13
Modifié par DragonRouge le 25/01/2014 à 18:31
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