1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    juin 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : juin 2017
    Messages : 3
    Points : 2
    Points
    2

    Par défaut Rechercher et remplacer dans un texte à partir d'un tableur

    Bonjour à tous,

    Après des heures à chercher une solution à mon problème, je m'en remets à vous, experts, qui saurez peut être m'éclairer sur la question

    J'ai un texte, très long, contenant des occurences (uniques) de phrases.

    J'ai ensuite un tableur contenant deux colonnes avec les occurences en français dans la colonne A (identique à la casse du texte) et les occurences traduites dans la colonnes B.

    Je cherche à effectuer une fonction de "recherche/remplacement" automatisé à partir de ces deux colonnes.

    Le script chercherais l'occurence A1 dans le texte, remplace par l'occurence B1, puis A2 par B2, etc.

    Par avance merci si vous avez des pistes pour faire ceci. Je précise qu'il y a environ 3000 remplacement de phrases à effectuer.

    Bonne journée,
    François

  2. #2
    Responsable
    Office & Excel

    Avatar de Pierre Fauconnier
    Homme Profil pro
    Formateur et développeur informatique indépendant
    Inscrit en
    novembre 2003
    Messages
    10 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur informatique indépendant
    Secteur : Enseignement

    Informations forums :
    Inscription : novembre 2003
    Messages : 10 506
    Points : 25 860
    Points
    25 860
    Billets dans le blog
    4

    Par défaut

    Salut.

    Idée générale:
    • un tableau de traductions comme illustré ci-dessous;
    • une petite fonction VBA qui itère sur les mots ou locutions à traduire (avec ou sans correspondance de casse).



    Nom : 2017-06-18_142612.png
Affichages : 26
Taille : 6,8 Ko

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Function Translate(ByVal Text As String, ByVal TableName As String)
      Dim rng As Range
     
      For Each rng In Range(TableName & "[Français]")
        Text = Replace(Text, rng.Value, rng(1, 2).Value, compare:=vbTextCompare)
      Next
      Translate = Text
    End Function
    Nom : 2017-06-18_142854.png
Affichages : 26
Taille : 6,7 Ko
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Vous souhaitez rédiger pour DVP? Contactez-moi
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    Vous avez apprécié l'intervention => Merci pour le
    ---------------

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    juin 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : juin 2017
    Messages : 3
    Points : 2
    Points
    2

    Par défaut

    Merci beaucoup pour cette réponse rapide, qui fonctionne parfaitement par ailleurs !

    Cependant et malheureusement pour moi, je me confronte au nombre de caractère limite contenu dans une cellule (mon fichier texte fait 32 Mo, pour indications, je n'ai pas le nombre de caractère sous la main mais c'est énorme).

    Peut être devrais je passer par un autre moteur que celui d'excel pour m'atteler à cette tache ?

    Pour l'histoire, je suis en train de remplacer des sous-titres d'un fichier xml (issu d'un montage vidéo) par une autre langue, j'ai à disposition le tableur de la traduction, et je cherche à automatiser tout ça.

    François

  4. #4
    Responsable
    Office & Excel

    Avatar de Pierre Fauconnier
    Homme Profil pro
    Formateur et développeur informatique indépendant
    Inscrit en
    novembre 2003
    Messages
    10 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur informatique indépendant
    Secteur : Enseignement

    Informations forums :
    Inscription : novembre 2003
    Messages : 10 506
    Points : 25 860
    Points
    25 860
    Billets dans le blog
    4

    Par défaut

    J'illustrais avec le contenu d'une cellule, mais la fonction peut être utilisée avec n'importe quelle chaine de texte qui lui est passée. Un string permet de stocker 2 milliards de caractères, si je ne me trompe...

    Dès lors, le code suivant permet d'ouvrir un fichier d:\test.xml, de remplacer les données par ce qui est trouvé dans le tableau puis de créer un nouveau fichier d:\trad.xml contenant la traduction.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    Function Translate(ByVal text As String, ByVal TableName As String)
      Dim rng As Range
     
      For Each rng In Range(TableName & "[Français]")
        text = Replace(text, rng.Value, rng(1, 2).Value, compare:=vbTextCompare)
      Next
      Translate = text
    End Function
     
    Sub Test()
      Dim text As String
      Dim LineText As String
      Dim FicNo As Integer
     
      FicNo = FreeFile
      Open "d:\test.xml" For Input As FicNo
      While Not EOF(FicNo)
        Line Input #FicNo, LineText
        text = text & LineText
      Wend
      Close FicNo
      text = Translate(text, "t_Traductions")
      FicNo = FreeFile
      Open "d:\trad.xml" For Output As FicNo
      Print #FicNo, text
      Close FicNo
    End Sub
    Tu pourrais également utiliser la librairie msxml (à sélectionner dans les références du projet VBA), toujours avec la même fonction de remplacement Translate
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub Test2()
      Dim oXMLSource As MSXML2.DOMDocument60
      Dim oxmlTarget As MSXML2.DOMDocument60
     
      Set oXMLSource = New MSXML2.DOMDocument60
      oXMLSource.async = False
      oXMLSource.Load "d:\test.xml"
     
      Set oxmlTarget = New MSXML2.DOMDocument60
      oxmlTarget.LoadXML Translate(oXMLSource.XML, "t_Traductions")
      oxmlTarget.Save "d:\trad.xml"
     
    End Sub
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Vous souhaitez rédiger pour DVP? Contactez-moi
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    Vous avez apprécié l'intervention => Merci pour le
    ---------------

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    juin 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : juin 2017
    Messages : 3
    Points : 2
    Points
    2

    Par défaut

    Je ne connaissais définitivement pas ces possibilités d'excel, que je découvre avec joie
    Je garde précieusement ce script qui fonctionne parfaitement pour ce que je voulais faire.

    Une réelle économie de temps, un film de 5 heures à traduire, pour lequel le temps de travail a été réellement réduit grâce à vous.
    Il n'y aura plus qu'une dernière passe de vérification.

    Merci encore, en espérant que ça puisse en aider d'autre.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Recherche/Remplacement dans un texte
    Par John Fullspeed dans le forum Téléchargez
    Réponses: 0
    Dernier message: 09/02/2013, 12h00
  2. Réponses: 8
    Dernier message: 12/11/2007, 10h16
  3. [VBA] Rechercher et remplacer dans un champs
    Par virginie2 dans le forum Access
    Réponses: 2
    Dernier message: 19/07/2006, 11h19
  4. Afficher, rechercher et remplacer dans un fichier
    Par lynal dans le forum Fichiers
    Réponses: 1
    Dernier message: 13/06/2006, 21h24
  5. Rechercher un mot dans un texte
    Par BernardT dans le forum JavaScript
    Réponses: 2
    Dernier message: 13/12/2005, 08h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo